今天看到有人说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-toolhtml
Wikipedia上,把netstat也算做net-tools,也在过气之列。但权威的Linux基金会网站上没有netstat。查询netstat的帮助信息,也没有讲这个命令要obsolete。linux
iproute2,也称做iproute,是一个用户空间的工具集,可用来管理、监控Linux内核中的网络功能,包括路由、网络接口、通道、流量控制,以及网络相关的设备驱动等等。iproute2与Linux内核之间,经过netlink协议通讯。
iproute2是一个开源项目,以GNU GPL 2许可发行。它的开发,紧跟Linux内核网络组件的步伐。2013年12月,其代码库由Stephen Hemminger来管理。原来的做者Alexey Kuznetsov在负责Linux内核质量管理(QoS)工做。
iproute2包括如下命令行工具:网络
我如今还在使用ifconfig等命令。咱们来试一试ip系列的命令:工具
如今,也知道两组看似等效的命令之间有着很大的差异,以致于一个大红大紫,一个惨遭抛弃。这种差异具体又是什么?我也没有时间去深究。不过,要是你的工做跟这些相关,确定会知道,在云计算等新兴的技术栈中,继续使用net-tools系列工具将不合时宜。必要的时候,还应该去阅读工具的源代码,以发现它们之间的区别。性能
意识到这个问题,咱们应该尽量再也不发表跟哪些过气的命令相关的文章或博客,加速这些命令退出内核的步伐。那些拒不使用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云计算