今天,很多系统管理员还在组合使用ifconfig、route、arp、netstat等命令行工具(统称为net-tools)来管理和排除各种网络配置的故障。这类工具最初起源于BSDTCP/IP工具包,它是为配置旧Linux内核的网络功能而设计的。自2001年以来,它在Linux社区的发展停滞不前。一些Linux发行版,如ArchLinux和CentOS/RHEL7已经弃用了net-tools,其他人计划弃用net-tools并改用iproute2。iproute2是另一个网络配置工具系列,旨在取代net-tools的功能。net-tools可以通过procfs(/proc)和ioctl系统调用访问和更改内核网络配置,iproute2通过网络链接套接字接口与内核进行通信。/proc接口比网络链接接口更笨拙。无论性能如何,iproute2的用户界面都比net-tools更直观。例如,网络资源(如链路、IP地址、路由、隧道等)被适当地定义为“对象”抽象,您可以使用一致的语法来管理不同的对象。最重要的是,到目前为止,iproute2已得到积极开发。如果您仍在使用net-tools,是时候切换到iproute2了,特别是如果您想要跟上Linux内核的最新网络功能。很可能有很多你可以用iproute2做而你不能用net-tools做的事情,无论是基于源的路由、服务质量、VLAN、绑定、网桥等等。还值得一提的是,网络管理器等更高级的网络配置工具依赖于iproute2。对于那些想要切换到iproute2的人,这里是net-tools与iproute2的综合比较。显示所有连接的网络接口以下命令显示所有可用的网络接口(无论它们是否处于活动状态)。使用net-tools:$ifconfig-a使用iproute2:$iplinkshow激活或禁用网络接口要激活/禁用某个网络接口,您可以使用这些命令。使用网络工具:$sudoifconfigeth1up$sudoifconfigeth1down使用iproute2:$sudoiplinksetdowneth1$sudoiplinksetupeth1为网络接口分配一个或多个IPv4地址使用这些命令配置网络接口的IPv4地址。使用net-tools:$sudoifconfigeth110.0.0.1/24使用iproute2:$sudoipaddradd10.0.0.1/24deveth1注意:如果使用iproute2,可以为一个接口分配多个IP地址;改成ifconfig就不行了。就ifconfig而言,解决方法是使用IP别名。$sudoipaddradd10.0.0.1/24broadcast10.0.0.255deveth1$sudoipaddradd10.0.0.2/24broadcast10.0.0.255deveth1$sudoipaddradd10.0.0.3/24broadcast10.0.0.255deveth1从网络接口中删除IPv4地址地址,如果使用net-tools,除了将0分配给接口之外,没有正确的方法从网络接口中删除IPv4地址。iproute2合理地处理了这个问题。使用net-tools:$sudoifconfigeth10使用iproute2:$sudoipaddrdel10.0.0.1/24deveth1显示网络接口的一个或多个IPv4地址以下方法可用于检查网络接口的IPv4地址。使用net-tools:$ifconfigeth1使用iproute2:$ipaddrshowdeveth1同样,如果一个接口分配了多个IP地址,iproute2会显示所有的IP地址,而net-tools只能显示一个IP地址。将IPv6地址分配给网络接口使用这些命令可将一个或多个IPv6地址添加到网络接口。net-tools和iproute2都允许您将多个IPv6地址添加到一个接口。使用网络工具:$sudoifconfigeth1inet6add2002:0db5:0:f102::1/64$sudoifconfigeth1inet6add2003:0db5:0:f102::1/64使用iproute2:$sudoip-6addradd2002:0db5:0:f102::1/64deveth1$sudoip-6addradd2003:0db5:0:f102::1/64deveth1显示网络接口的一个或多个IPv6地址您可以通过以下方法显示网络接口的IPv6地址。net-tools和iproute2都可以显示所有分配的IPv6地址。使用net-tools:$ifconfigeth1使用iproute2:$ip-6addrshowdeveth1删除网络接口的IPv6地址使用这些命令删除接口的任何不必要的IPv6地址。使用net-tools:$sudoifconfigeth1inet6del2002:0db5:0:f102::1/64使用iproute2:$sudoip-6addrdel2002:0db5:0:f102::1/64deveth1更改网络接口的MAC地址如果你想欺骗网络接口的MAC地址,使用以下命令。注意:在更改MAC地址之前,您需要先禁用该接口。使用net-tools:$sudoifconfigeth1hwether08:00:27:75:2a:66使用iproute2:$sudoiplinksetdeveth1address08:00:27:75:2a:67查看IP路由表net-tools有两个选项可用于显示内核的IP路由表:route或netstat。如果是iproute2,只需使用iproute命令。使用net-tools:$route-n$netstat-rn使用iproute2:$iprouteshow#p#添加或更改默认路由以下命令可以添加或更改内核IP路由表中的默认路由。注意:如果您使用网络工具,您可以通过添加新的默认路由来更改默认路由。如果使用iproute2,只需使用iproutereplace命令。使用网络工具:$sudorouteadddefaultgw192.168.1.2eth0$sudoroutedeldefaultgw192.168.1.1eth0使用iproute2:$sudoiprouteadddefaultvia192.168.1.2deveth0$sudoiproutereplacedefaultvia192.168.1.2deveth0添加或删除静态路由可以使用以下命令添加或删除使用网络工具:$sudorouteadd-net172.16.32.0/24gw192.168.1.1deveth0$sudoroutedel-net172.16.32.0/24使用iproute2:$sudoiprouteadd172.16.32.0/24via192.168.1.1deveth0$sudoiproutedel122.063./24查看套接字统计以下命令可以查看套接字统计信息(例如活动/侦听的TCP/UDP套接字)。使用net-tools:$netstat$netstat-l使用iproute2:$ss$ss-l查看ARP表您可以使用这些命令来显示内核的ARP表。使用net-tools:$arp-an使用iproute2:$ipneigh添加或删除静态ARP表项在本地ARP表中添加或删除静态ARP表项可以通过以下方法实现。使用网络工具:$sudoarp-s192.168.1.10000:0c:29:c0:5a:ef$sudoarp-d192.168.1.100使用iproute2:$sudoipneighadd192.168.1.100lladdr00:0c:29:c0:5a:efdeveth0$sudoipneighdel192.168.1.100deveth0添加、删除或查看多播地址要在网络接口上配置或查看多播地址,请使用以下命令。使用网络工具:$sudoipmaddradd33:44:00:00:00:01deveth0$sudoipmaddrdel33:44:00:00:00:01deveth0$ipmaddrshowdeveth0$netstat-g使用iproute2:$sudoipmadradd33:44:00:00:00:01deveth0$sudoipmaddrdel33:44:00:00:00:01deveth0$ipmaddrlistdeveth0英语:http://xmodulo.com/2014/09/linux-tcpip-networking-net-tools-iproute2.html
