全部課程
發(fā)布時(shí)間: 2018-11-22 16:48:02
1
今天看到有人說(shuō)ifconfig、route、arp等命令已經(jīng)過(guò)氣了,我心里一驚。這些東西,我才剛剛學(xué)會(huì),咋能說(shuō)過(guò)氣就過(guò)氣了呢?不成,我得看個(gè)究竟。
經(jīng)過(guò)多方查找,在Debian的網(wǎng)站上,我還真找到net-tools作者M(jìn)artin Ferrari的一封公開(kāi)信,發(fā)布于2009年3月15日。他信中說(shuō),net-tools不能支持Linux內(nèi)核中的諸多現(xiàn)代功能,在自動(dòng)化中應(yīng)用起來(lái)非常困難。而另一方面,自2007年以來(lái),一直隨Linux 2.2版發(fā)行的iproute的功能已經(jīng)完成覆蓋net-tools,且性能更優(yōu)。特別是,net-tools中的ipmaddr中的代碼來(lái)自iproute中的ip maddr;iptunnel,則來(lái)自iproute中的ip tunnel。總的來(lái)說(shuō),他覺(jué)得有必要放棄net-tools,號(hào)召大家使用iproute。
在Linux CentOS 7里,運(yùn)行man route,就能看到,命令簡(jiǎn)介下有一行字:
This program is obsolete. For replacement, check for ip route.(本程序已經(jīng)過(guò)期,請(qǐng)使用ip route命令)
我一一查詢了ifconfig、ipmaddr、iptunnel、nameif、arp等命令,個(gè)個(gè)都是如此。兩組工具的對(duì)照表如下:
net-tools中被iproute2替代、過(guò)氣的工具對(duì)照表
過(guò)氣的工具 | iproute2工具 | 說(shuō)明 |
ifconfig | ip addr, ip link, ip -s | 地址及鏈接配置 |
route | ip route | 路由表 |
arp | ip neigh | 鄰居 |
iptunnel | ip tunnel | 通道 |
nameif | ifrename, ip link set name | 網(wǎng)絡(luò)接口更名 |
ipmaddr | ip maddr | 多播 |
netstat | ip -s, ss, ip route | 多種網(wǎng)絡(luò)統(tǒng)計(jì)數(shù)據(jù) |
mii-tool | ethtool | 用mii與網(wǎng)卡自動(dòng)協(xié)商工作狀態(tài) |
Wikipedia上,把netstat也算作net-tools,也在過(guò)氣之列。但權(quán)威的Linux基金會(huì)網(wǎng)站上沒(méi)有netstat。查詢netstat的幫助信息,也沒(méi)有講這個(gè)命令要obsolete。
iproute2,也稱(chēng)作iproute,是一個(gè)用戶空間的工具集,可用來(lái)管理、監(jiān)控Linux內(nèi)核中的網(wǎng)絡(luò)功能,包括路由、網(wǎng)絡(luò)接口、通道、流量控制,以及網(wǎng)絡(luò)相關(guān)的設(shè)備驅(qū)動(dòng)等等。iproute2與Linux內(nèi)核之間,通過(guò)netlink協(xié)議通信。
iproute2是一個(gè)開(kāi)源項(xiàng)目,以GNU GPL 2許可發(fā)行。它的開(kāi)發(fā),緊跟Linux內(nèi)核網(wǎng)絡(luò)組件的步伐。2013年12月,其代碼庫(kù)由Stephen Hemminger來(lái)管理。原來(lái)的作者Alexey Kuznetsov在負(fù)責(zé)Linux內(nèi)核質(zhì)量管理(QoS)工作。
iproute2包括以下命令行工具:
· ip
· ss
· bridge
· rtacct
· rtmon
· tc (traffic control,流量控制)
· ctstat
· lnstat
· nstat
· routef
· routel
· rtstat
· tipc
· arpd
· devlink
我現(xiàn)在還在使用ifconfig等命令。我們來(lái)試一試ip系列的命令:
· ip addr/ ip a #查看所有的網(wǎng)絡(luò)設(shè)備
· ip addr show eth0 #查看eth0的詳細(xì)信息
· ip route #查看所有的路由
· ip neigh #查看當(dāng)前內(nèi)核中記錄的網(wǎng)絡(luò)鄰居,為ip neighbour的省略形式
· ip link set eth0 up #啟動(dòng)網(wǎng)絡(luò)接口eth0
· ip link set br0 down #關(guān)閉網(wǎng)絡(luò)接口br0
· ip addr add 192.168.1.5 dev eth1 #為eth1添加ip地址
· ip addr del 192.168.1.5/24 dev eth1 #刪除eth1網(wǎng)卡的ip地址
· ip route add 172.25.250.0/24 via 192.168.1.100 dev eth0 #添加固定路由
· ip route del 172.25.250.0/24 #刪除固定路由
· ip route add default via 192.168.1.1 #添加缺省網(wǎng)關(guān)
· ip route add default via 192.168.1.1 #刪除固定網(wǎng)關(guān)
現(xiàn)在,也知道兩組看似等效的命令之間有著很大的差別,以至于要被拋棄。這種差別具體又是什么?我也沒(méi)有時(shí)間去深究。不過(guò),要是你的工作跟這些相關(guān),肯定會(huì)知道,在云計(jì)算等新興的技術(shù)棧中,繼續(xù)使用net-tools系列工具將不合時(shí)宜。必要的時(shí)候,還應(yīng)該去閱讀工具的源代碼,以發(fā)現(xiàn)它們之間的區(qū)別。
意識(shí)到這個(gè)問(wèn)題,我們應(yīng)該盡可能不再發(fā)表跟哪些過(guò)氣的命令相關(guān)的文章或博客,加速這些命令退出內(nèi)核的步伐。那些拒不使用iproute之類(lèi)新命令,仍然宣傳如net-tool這類(lèi)過(guò)氣命令的人,是不是就成了技術(shù)領(lǐng)域內(nèi)的保守力量?要知道,他們?cè)?jīng)也是很潮、很前衛(wèi)的一群人。
最后,我要說(shuō)的是:我竟然這么落伍,這么遲鈍。那封信早在2009年就已經(jīng)公開(kāi),而我在9年之后的2018年才讀到。看來(lái),我也有點(diǎn)過(guò)氣了。
參考資料:
https://lists.debian.org/debian-devel/2009/03/msg00780.html
https://en.wikipedia.org/wiki/Iproute2
https://wiki.linuxfoundation.org/networking/net-tools
https://wiki.linuxfoundation.org/networking/iproute2