Linux中「新舊」TCP/IP工具的對比

現在不少系統管理員依然經過組合使用諸如ifconfig、route、arp和netstat等命令行工具(統稱爲net-tools)來配置網絡功能、解決網絡故障,net-tools起源於BSD的TCP/IP工具箱,後來成爲老版本Linux內核中配置網絡功能的工具。但自2001年起,Linux社區已經對其中止維護,甚至一些Linux發行版好比Arch Linux和CentOS/RHEL 7則已經徹底拋棄了net-tools,只支持iproute2,對於網絡配置工具而言,iproute2的出現旨在從功能上取代net-tools。linux

Linux中「新舊」TCP/IP工具的對比Linux中「新舊」TCP/IP工具的對比
那這二者有何區別呢?net-tools經過procfs(/proc)和ioctl系統調用去訪問和改變內核網絡配置,而iproute2則經過netlink套接字接口與內核通信。拋開性能而言,iproute2的用戶接口比net-tools顯得更加直觀,到目前爲止,iproute2仍處在持續開發中,若是你仍在使用net-tools,並且尤爲須要跟上新版Linux內核中的最新最重要的網絡特性的話,那麼是時候轉到iproute2的陣營了,由於使用iproute2能夠作不少net-tools沒法作到的事情。網絡

下面來舉幾個例子:工具

一、顯示全部已鏈接的網絡接口##下面的命令顯示出全部可用網絡接口的列表(不管接口是否激活)。性能

使用net-tools:命令行

$ ifconfig -a

使用iproute2:教程

$ ip link show

二、激活或停用網絡接口##使用這些命令來激活或停用某個指定的網絡接口。接口

使用net-tools:ip

$ sudo ifconfig eth1 up
$ sudo ifconfig eth1 down

使用iproute2:路由

$ sudo ip link set down eth1
$ sudo ip link set up eth1

三、爲網絡接口分配IPv4地址##使用這些命令配置網絡接口的IPv4地址。
使用net-tools:開發

$ sudo ifconfig eth1 10.0.0.1/24

使用iproute2:

$ sudo ip addr add 10.0.0.1/24 dev eth1

值得注意的是,可使用iproute2給同一個接口分配多個IP地址,ifconfig則沒法這麼作。使用ifconfig的變通方案是使用IP別名。

$ sudo ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev eth1
$ sudo ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev eth1

四、移除網絡接口的IPv4地址##就IP地址的移除而言,除了給接口分配全0地址外,net-tools沒有提供任何合適的方法來移除網絡接口的IPv4地址,相反,iproute2則能很好地徹底。

使用net-tools:

$ sudo ifconfig eth1 0

使用iproute2:

$ sudo ip addr del 10.0.0.1/24 dev eth1

五、顯示網絡接口的IPv4地址##按照以下操做可查看某個指定網絡接口的IPv4地址。

使用net-tools:

$ ifconfig eth1

使用iproute2:

$ ip addr show dev eth1

一樣,若是接口分配了多個IP地址,iproute2會顯示出全部地址,而net-tools只能顯示一個IP地址。
六、爲網絡接口分配IPv6地址##使用這些命令爲網絡接口添加IPv6地址。net-tools和iproute2都容許用戶爲一個接口添加多個IPv6地址。

使用net-tools:

$ sudo ifconfig eth1 inet6 add 2002:0db5:0:f102::1/64
$ sudo ifconfig eth1 inet6 add 2003:0db5:0:f102::1/64

使用iproute2:

$ sudo ip -6 addr add 2002:0db5:0:f102::1/64 dev eth1
$ sudo ip -6 addr add 2003:0db5:0:f102::1/64 dev eth1

七、顯示網絡接口的IPv6地址##按照以下操做可顯示某個指定網絡接口的IPv6地址。net-tools和iproute2均可以顯示出全部已分配的IPv6地址。

使用net-tools:

$ ifconfig eth1

使用iproute2:

$ ip -6 addr show dev eth1

八、移除網絡設備的IPv6地址##使用這些命令可移除接口中沒必要要的IPv6地址。

使用net-tools:

$ sudo ifconfig eth1 inet6 del 2002:0db5:0:f102::1/64

使用iproute2:

$ sudo ip -6 addr del 2002:0db5:0:f102::1/64 dev eth1

九、改變網絡接口的MAC地址##使用下面的命令可篡改網絡接口的MAC地址,請注意在更改MAC地址前,須要停用接口。

使用net-tools:

$ sudo ifconfig eth1 hw ether 08:00:27:75:2a:66

使用iproute2:

$ sudo ip link set dev eth1 address 08:00:27:75:2a:67

十、查看IP路由表##顯示內核的IP路由表:route和netstat。在iproute2中,使用命令ip route。

使用net-tools:

$ route -n
$ netstat -rn

使用iproute2:

$ ip route show

十一、添加和修改默認路由##這裏的命令用來添加或修改內核IP路由表中的默認路由規則。請注意在net-tools中可經過添加新的默認路由、刪除舊的默認路由來實現修改默認路由。在iproute2使用ip route命令來代替。

使用net-tools:

$ sudo route add default gw 192.168.1.2 eth0
$ sudo route del default gw 192.168.1.1 eth0

使用iproute2:

$ sudo ip route add default via 192.168.1.2 dev eth0
$ sudo ip route replace default via 192.168.1.2 dev eth0

十二、添加和移除靜態路由##使用下面命令添加或移除一個靜態路由。
使用net-tools:

$ sudo route add -net 172.16.32.0/24 gw 192.168.1.1 dev eth0
$ sudo route del -net 172.16.32.0/24

使用iproute2:

$ sudo ip route add 172.16.32.0/24 via 192.168.1.1 dev eth0
$ sudo ip route del 172.16.32.0/24

1三、查看套接字統計信息##這裏的命令用來查看套接字統計信息(好比活躍或監聽狀態的TCP/UDP套接字)。
使用net-tools:

$ netstat
$ netstat -l

使用iproute2:

$ ss
$ ss -l

1四、查看ARP表##使用這些命令顯示內核的ARP表。
使用net-tools:

$ arp -an

使用iproute2:

$ ip neigh

1五、添加或刪除靜態ARP項##按照以下操做在本地ARP表中添加或刪除一個靜態ARP項。
使用net-tools:

$ sudo arp -s 192.168.1.100 00:0c:29:c0:5a:ef
$ sudo arp -d 192.168.1.100

使用iproute2:

$ sudo ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0
$ sudo ip neigh del 192.168.1.100 dev eth0

1六、添加、刪除或查看多播地址##使用下面的命令配置或查看網絡接口上的多播地址。
使用net-tools:

$ sudo ipmaddr add 33:44:00:00:00:01 dev eth0
$ sudo ipmaddr del 33:44:00:00:00:01 dev eth0
$ ipmaddr show dev eth0
$ netstat -g

使用iproute2:

$ sudo ip maddr add 33:44:00:00:00:01 dev eth0
$ sudo ip maddr del 33:44:00:00:00:01 dev eth0
$ ip maddr list dev eth0

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/

相關文章
相關標籤/搜索