1. 程式人生 > >過氣的ifconfig 你還在用嗎

過氣的ifconfig 你還在用嗎

1

今天看到有人說ifconfig、route、arp等命令已經過氣了,我心裡一驚。這些東西,我才剛剛學會,咋能說過氣就過氣了呢?不成,我得看個究竟。
經過多方查詢,在Debian的網站上,我還真找到net-tools作者Martin Ferrari的一封公開信,釋出於2009年3月15日。他信中說,net-tools不能支援Linux核心中的諸多現代功能,在自動化中應用起來非常困難。而另一方面,自2007年以來,一直隨Linux 2.2版發行的iproute的功能已經完成覆蓋net-tools,且效能更優。特別是,net-tools中的ipmaddr中的程式碼來自iproute中的ip maddr;iptunnel,則來自iproute中的ip tunnel。總的來說,他覺得有必要放棄net-tools,號召大家使用iproute。
在Linux CentOS 7裡,執行man route,就能看到,命令簡介下有一行字:
This program is obsolete. For replacement, check for ip route.(

本程式已經過期,請使用ip route命令)
我一一查詢了ifconfig、ipmaddr、iptunnel、nameif、arp等命令,個個都是如此。兩組工具的對照表如下:
net-tools中被iproute2替代、過氣的工具對照表
1)地址及連結配置
    ip addr, ip link, ip -s取代了ifconfig
2)檢視路由表
    ip route取代了route
3)檢視網路鄰居
    ip neigh取代了arp
4)檢視網路通道
    ip tunnel取代了iptunnel
5)網路介面更名
    ifrename, ip link set name取代了nameif
6)多播
    ip maddr取代了ipmaddr
7)多種網路統計資料
    ip -s, ss, ip route取代了nestat
8)用mii與網絡卡自動協商工作狀態
    ethtool取代了mii-tool

Wikipedia上,把netstat也算作net-tools,也在過氣之列。但權威的Linux基金會網站上沒有netstat。查詢netstat的幫助資訊,也沒有講這個命令要obsolete。

2

iproute2,也稱作iproute,是一個使用者空間的工具集,可用來管理、監控Linux核心中的網路功能,包括路由、網路介面、通道、流量控制,以及網路相關的裝置驅動等等。iproute2與Linux核心之間,通過netlink協議通訊。
iproute2是一個開源專案,以GNU GPL 2許可發行。它的開發,緊跟Linux核心網路元件的步伐。2013年12月,其程式碼庫由Stephen Hemminger來管理。原來的作者Alexey Kuznetsov在負責Linux核心質量管理(QoS)工作。
iproute2包括以下命令列工具:

  • ip
  • ss
  • bridge
  • rtacct
  • rtmon
  • tc (traffic control,流量控制)
  • ctstat
  • lnstat
  • nstat
  • routef
  • routel
  • rtstat
  • tipc
  • arpd
  • devlink

我現在還在使用ifconfig等命令。我們來試一試ip系列的命令:

  • ip addr/ ip a  #檢視所有的網路裝置
  • ip addr show eth0  #檢視eth0的詳細資訊
  • ip route  #檢視所有的路由
  • ip neigh #檢視當前核心中記錄的網路鄰居,為ip neighbour的省略形式
  • ip link set eth0 up #啟動網路介面eth0
  • ip link set br0 down #關閉網路介面br0
  • ip addr add 192.168.1.5 dev eth1  #為eth1新增ip地址
  • ip addr del 192.168.1.5/24 dev eth1 #刪除eth1網絡卡的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  #新增預設閘道器
  • ip route add default via 192.168.1.1  #刪除固定閘道器

現在,也知道兩組看似等效的命令之間有著很大的差別,以至於一個大紅大紫,一個慘遭拋棄。這種差別具體又是什麼?我也沒有時間去深究。不過,要是你的工作跟這些相關,肯定會知道,在雲端計算等新興的技術棧中,繼續使用net-tools系列工具將不合時宜。必要的時候,還應該去閱讀工具的原始碼,以發現它們之間的區別。

3

意識到這個問題,我們應該儘可能不再發表跟哪些過氣的命令相關的文章或部落格,加速這些命令退出核心的步伐。那些拒不使用iproute之類新命令,仍然宣傳如net-tool這類過氣命令的人,是不是就成了技術領域內的保守力量?要知道,他們曾經也是很潮、很前衛的一群人。
最後,我要說的是:我竟然這麼落伍,這麼遲鈍。那封信早在2009年就已經公開,而我在9年之後的2018年才讀到。看來,我也有點過氣了。

 

參考資料:
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 
https://www.tecmint.com/ip-command-examples