教培參考
教育培訓(xùn)行業(yè)知識型媒體
發(fā)布時間: 2025年05月17日 17:03
1
今天看到有人說ifconfig、route、arp等命令已經(jīng)過氣了,我心里一驚。這些東西,我才剛剛學(xué)會,咋能說過氣就過氣了呢?不成,我得看個究竟。
經(jīng)過多方查找,在Debian的網(wǎng)站上,我還真找到net-tools作者M(jìn)artin Ferrari的一封公開信,發(fā)布于2009年3月15日。他信中說,net-tools不能支持Linux內(nèi)核中的諸多現(xiàn)代功能,在自動化中應(yīng)用起來非常困難。而另一方面,自2007年以來,一直隨Linux 2.2版發(fā)行的iproute的功能已經(jīng)完成覆蓋net-tools,且性能更優(yōu)。特別是,net-tools中的ipmaddr中的代碼來自iproute中的ip maddr;iptunnel,則來自iproute中的ip tunnel??偟膩碚f,他覺得有必要放棄net-tools,號召大家使用iproute。
在Linux CentOS 7里,運(yùn)行man route,就能看到,命令簡介下有一行字:
This program is obsolete. For replacement,check for ip route.(本程序已經(jīng)過期,請使用ip route命令)
我一一查詢了ifconfig、ipmaddr、iptunnel、nameif、arp等命令,個個都是如此。兩組工具的對照表如下:
net-tools中被iproute2替代、過氣的工具對照表
過氣的工具 | iproute2工具 | 說明 |
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)卡自動協(xié)商工作狀態(tài) |
Wikipedia上,把netstat也算作net-tools,也在過氣之列。但權(quán)威的Linux基金會網(wǎng)站上沒有netstat。查詢netstat的幫助信息,也沒有講這個命令要obsolete。
iproute2,也稱作iproute,是一個用戶空間的工具集,可用來管理、監(jiān)控Linux內(nèi)核中的網(wǎng)絡(luò)功能,包括路由、網(wǎng)絡(luò)接口、通道、流量控制,以及網(wǎng)絡(luò)相關(guān)的設(shè)備驅(qū)動等等。iproute2與Linux內(nèi)核之間,通過netlink協(xié)議通信。
iproute2是一個開源項(xiàng)目,以GNU GPL 2許可發(fā)行。它的開發(fā),緊跟Linux內(nèi)核網(wǎng)絡(luò)組件的步伐。2013年12月,其代碼庫由Stephen Hemminger來管理。原來的作者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等命令。我們來試一試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 #啟動網(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)在,也知道兩組看似等效的命令之間有著很大的差別,以至于要被拋棄。這種差別具體又是什么?我也沒有時間去深究。不過,要是你的工作跟這些相關(guān),肯定會知道,在云計(jì)算等新興的技術(shù)棧中,繼續(xù)使用net-tools系列工具將不合時宜。必要的時候,還應(yīng)該去閱讀工具的源代碼,以發(fā)現(xiàn)它們之間的區(qū)別。
意識到這個問題,我們應(yīng)該盡可能不再發(fā)表跟哪些過氣的命令相關(guān)的文章或博客,加速這些命令退出內(nèi)核的步伐。那些拒不使用iproute之類新命令,仍然宣傳如net-tool這類過氣命令的人,是不是就成了技術(shù)領(lǐng)域內(nèi)的保守力量?要知道,他們曾經(jīng)也是很潮、很前衛(wèi)的一群人。
最后,我要說的是:我竟然這么落伍,這么遲鈍。那封信早在2009年就已經(jīng)公開,而我在9年之后的2018年才讀到。看來,我也有點(diǎn)過氣了。
參考資料:
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
微信掃碼關(guān)注公眾號
獲取更多考試熱門資料