Linux网络管理工具iproute2与传统网络管理工具集net-tools的对比及使用

1、ipoute2简介

iproute2Linux下新一代的网络配置工具,旨在替代传统的net-tools工具集。它提供了一套强大的命令和功能,用于配置和监控Linux系统的网络环境。

iproute2的核心命令是ip,该命令功能齐全,可以配置和查看网络接口(link)、网络接口的地址(address)、ARP(neighbour)路由route)、路由策略数据库(rule)以及隧道(tunnel)等。iproute2通过netlink套接字接口与内核进行通讯,使得网络配置更加高效和灵活。

此外,iproute2还支持复杂的路由配置,如策略路由和多表路由等。这使得用户能够更灵活地控制网络流量,满足不同的网络需求。

最重要的是,iproute2仍在持续开发中,不断引入新的功能和优化。这意味着它可以根据新的网络技术和需求进行更新和改进,保持与时俱进。

2、iproute2与net-tools对比

net-toolsLinux系统中一套传统的网络管理工具集,起源于BSDTCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。它包含了一系列命令行工具,如ifconfigroutearpnetstat等,用于配置网络接口、设置IP地址、管理路由表以及查看网络连接状态等。

这些工具通过访问和改变内核网络配置来实现其功能,通常是通过procfs(/proc)ioctl系统调用来实现的。然而,自2001年起,Linux社区已经对net-tools停止维护,并且一些现代的Linux发行版,如Ubuntu 18Arch LinuxCentOS/RHEL 7等,已经完全抛弃了net-tools,转而支持新一代的网络配置工具iproute2

net-tools相比,iproute2的用户接口更加直观和易用。

它使用合适的对象抽象来定义各种网络资源,如链接、IP地址、路由和隧道等,使得用户可以使用一致的语法来管理不同的对象。

这种设计使得网络配置变得更加简单和一致。

二者常用命令如下图:

图片[1]-Linux网络管理工具iproute2与传统网络管理工具集net-tools的对比及使用-编程社

3、iproute2的安装和版本查看

在大多数Linux发行版中,iproute2是默认安装的一部分。

但如果你需要手动安装或更新,可以使用发行版对应的包管理器。

例如,在基于Debian的系统(如Ubuntu)上,可以使用apt-get进行安装:

  • 打开终端。
  • 输入sudo apt-get update来更新软件包列表。
  • 输入sudo apt-get install iproute来安装iproute2

当前演示系统是Rocky Linux,具体信息如下:

[root@localhost ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="9.3 (Blue Onyx)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.3"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Rocky Linux 9.3 (Blue Onyx)"
ANSI_COLOR="0;32"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:rocky:rocky:9::baseos"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
SUPPORT_END="2032-05-31"
ROCKY_SUPPORT_PRODUCT="Rocky-Linux-9"
ROCKY_SUPPORT_PRODUCT_VERSION="9.3"
REDHAT_SUPPORT_PRODUCT="Rocky Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.3"
[root@localhost ~]# 

它默认已安装了iproute2且保留了net-tools工具集,版本查看如下:

[root@localhost ~]# ip -V
ip utility, iproute2-6.2.0, libbpf 1.2.0
[root@localhost ~]# 

4、iproute2与net-tools工具命令显示比较

4.1、显示所有连接的网络接口

使用iproute2:

[root@RockyLinux ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:4e:62:95 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
[root@RockyLinux ~]# 

使用net-tools:

[root@RockyLinux ~]# ifconfig -a
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.17.148  netmask 255.255.255.0  broadcast 192.168.17.255
        inet6 fe80::20c:29ff:fe4e:6295  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4e:62:95  txqueuelen 1000  (Ethernet)
        RX packets 849489  bytes 1265181152 (1.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 107393  bytes 9667547 (9.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 37  bytes 4412 (4.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 37  bytes 4412 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4.2、激活或禁止网络接口

使用iproute2:

[root@RockyLinux ~]# ip link set down ens160
[root@RockyLinux ~]# ip link set up ens160

使用net-tools:

[root@RockyLinux ~]# ifconfig ens160 up
[root@RockyLinux ~]# ifconfig ens160 down

4.3、给接口分配IP地址

使用iproute2:

iproute2可以给同一个接口分配多个IP地址,如下:

[root@RockyLinux ~]# ip addr add 192.168.17.100/24 dev ens160
[root@RockyLinux ~]# ip addr add 10.128.10.100/24 dev ens160
[root@RockyLinux ~]# ip add show ens160                             # 查看ENS160接口IP地址
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:4e:62:95 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.17.148/24 brd 192.168.17.255 scope global dynamic noprefixroute ens160
       valid_lft 1407sec preferred_lft 1407sec
    inet 10.128.10.100/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 192.168.17.100/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe4e:6295/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

使用net-tools:

[root@RockyLinux ~]# ifconfig ens160 10.128.10.200/24

4.4、从网络接口删除IPv4地址

# 使用iproute2:

[root@RockyLinux ~]# ip ad ip addr del 192.168.17.100/24 dev ens160

使用net-tools:

[root@RockyLinux ~]# ifconfig ens160 0

4.5、显示网络接口的一个或多个IPv4地址

使用iproute2:

[root@RockyLinux ~]# ip addr show dev ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:4e:62:95 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.17.148/24 brd 192.168.17.255 scope global dynamic noprefixroute ens160
       valid_lft 1592sec preferred_lft 1592sec
    inet6 fe80::c6fb:4bbd:60dd:fa31/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

使用net-tools:

[root@RockyLinux ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.17.148  netmask 255.255.255.0  broadcast 192.168.17.255
        inet6 fe80::c6fb:4bbd:60dd:fa31  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:4e:62:95  txqueuelen 1000  (Ethernet)
        RX packets 850427  bytes 1265254443 (1.1 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 107847  bytes 9714747 (9.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

4.6、更改网络接口的MAC地址

使用iproute2:

[root@RockyLinux ~]# ip link set dev ens160 address 07:00:21:75:2B:2C
[root@RockyLinux ~]# ip add show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 07:00:21:75:2b:2c brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:4e:62:95
    altname enp3s0
    inet 192.168.17.148/24 brd 192.168.17.255 scope global dynamic noprefixroute ens160
       valid_lft 1146sec preferred_lft 1146sec
    inet6 fe80::c6fb:4bbd:60dd:fa31/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

使用net-tools:

修改后查看由原来的00:0c:29:4e:62:95变为07:00:21:75:2b:2b

[root@RockyLinux ~]# ifconfig ens160 hw ether 07:00:21:75:2B:2B
[root@RockyLinux ~]# 
[root@RockyLinux ~]# ip add show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 07:00:21:75:2b:2b brd ff:ff:ff:ff:ff:ff permaddr 00:0c:29:4e:62:95
    altname enp3s0
    inet 192.168.17.148/24 brd 192.168.17.255 scope global dynamic noprefixroute ens160
       valid_lft 1347sec preferred_lft 1347sec
    inet6 fe80::c6fb:4bbd:60dd:fa31/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

4.7、查看IP路由表

使用iproute2:

[root@RockyLinux ~]# ip route show
default via 192.168.17.2 dev ens160 proto dhcp src 192.168.17.148 metric 100 
192.168.17.0/24 dev ens160 proto kernel scope link src 192.168.17.148 metric 100 

使用net-tools:

对于net-tools工具集来说,route -nnetstat -rn都可以查路由表:

[root@RockyLinux ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.17.2    0.0.0.0         UG    100    0        0 ens160
192.168.17.0    0.0.0.0         255.255.255.0   U     100    0        0 ens160
[root@RockyLinux ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.17.2    0.0.0.0         UG        0 0          0 ens160
192.168.17.0    0.0.0.0         255.255.255.0   U         0 0          0 ens160

4.8、添加或改动默认路由

使用iproute2:

[root@RockyLinux ~]# ip route add default via 192.168.17.2 dev eth0
[root@RockyLinux ~]# ip route replace default via 192.168.17.3 dev eth0

使用net-tools:

[root@RockyLinux ~]# route add default gw 192.168.17.3 ens160
[root@RockyLinux ~]# route del default gw 192.168.17.2 ens160

4.9、添加或删除静态路由

使用iproute2:

[root@RockyLinux ~]# ip route add 172.16.32.0/24 via 192.168.2.1 dev ens160
[root@RockyLinux ~]# ip route del 172.16.32.0/24

使用net-tools:

[root@RockyLinux ~]# route add -net 172.16.32.0/24 gw 192.168.2.1 dev ens160
[root@RockyLinux ~]# route del -net 172.16.32.0/24 

4.10、查看套接字统计数据

使用iproute2:

[root@RockyLinux ~]# ss
Netid             State              Recv-Q             Send-Q                                             Local Address:Port                                Peer Address:Port               Process             
u_dgr             ESTAB              0                  0                                            /run/systemd/notify 15630                                          * 0                                      
u_dgr             ESTAB              0                  0                                   /run/systemd/journal/dev-log 15643                                          * 0                                      
u_dgr             ESTAB              0                  0                                    /run/systemd/journal/socket 15645                                          * 0                                      
u_dgr             ESTAB              0                  0                                       /run/chrony/chronyd.sock 23018                                          * 0                                      
u_str             ESTAB              0                  0                                                /run/user/0/bus 28483                                          * 30948                                  
u_str             ESTAB              0                  0                                                              * 28361                                          * 29367                                  
u_str             ESTAB              0                  0                                                              * 30728                                          * 30304                                  
u_dgr             ESTAB              0                  0                                                              * 135824                                         * 15643                                  
u_str             ESTAB              0                  0                                                              * 30916                                          * 30917                                  
u_str             ESTAB              0                  0                                    /run/systemd/journal/stdout 32865                                          * 33816                                  
u_str             ESTAB              0                  0                                    /run/dbus/system_bus_socket 97994                                          * 99551                                  
u_str             ESTAB              0                  0                                                              * 32790                                          * 32791                                  
u_str             ESTAB              0                  0                                                              * 29695                                          * 31072                                  
u_str             ESTAB              0                  0                                                              * 16157                                          * 17183                                  
u_str             ESTAB              0                  0                                                              * 31732                                          * 32969                                  
u_str             ESTAB              0                  0                                                              * 28025                                          * 28994                                  
u_str             ESTAB              0                  0                                    /run/systemd/journal/stdout 23736                                          * 24656                                  
u_str             ESTAB              0                  0                                                              * 30853                                          * 28413                                  
u_str             ESTAB              0                  0                                                              * 30449                                          * 29470                                  
u_str             ESTAB              0                  0                                                              * 27551                                          * 29177                                  
u_str             ESTAB              0                  0                                                              * 23811                                          * 23028                                  
u_str             ESTAB              0                  0                                                /run/user/0/bus 30926                                          * 29578                                  
u_str             ESTAB              0                  0                                    /run/dbus/system_bus_socket 28425                                          * 29544                                  
u_str             ESTAB              0                  0                                                /run/user/0/bus 28397                                          * 30427                                  
……

使用net-tools:

[root@RockyLinux ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:6013          0.0.0.0:*               LISTEN     
tcp        0      0 localhost:6011          0.0.0.0:*               LISTEN     
tcp        0      0 localhos:x11-ssh-offset 0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp6       0      0 localhost:6013          [::]:*                  LISTEN     
tcp6       0      0 localhos:x11-ssh-offset [::]:*                  LISTEN     
tcp6       0      0 localhost:6011          [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
udp        0      0 localhost:323           0.0.0.0:*                          
udp        0      0 0.0.0.0:50156           0.0.0.0:*                          
udp        0      0 0.0.0.0:mdns            0.0.0.0:*                          
udp6       0      0 localhost:323           [::]:*                             
udp6       0      0 [::]:mdns               [::]:*                             
udp6       0      0 [::]:40584              [::]:*                             
raw6       0      0 [::]:ipv6-icmp          [::]:*                  7          
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     29179    @/tmp/.ICE-unix/1648
unix  2      [ ACC ]     STREAM     LISTENING     99256    /run/.heim_org.h5l.kcm-socket
unix  2      [ ACC ]     STREAM     LISTENING     29301    @2dfa4
unix  2      [ ACC ]     STREAM     LISTENING     99301    /run/systemd/journal/io.systemd.journal
……

4.11、查看ARP表

使用iproute2:

[root@localhost ~]# ip neigh
192.168.17.1 dev ens160 lladdr 00:50:56:c0:00:08 REACHABLE 
192.168.17.2 dev ens160 lladdr 00:50:56:f1:32:61 REACHABLE 
192.168.17.254 dev ens160 lladdr 00:50:56:e9:38:ec STALE 

使用net-tools:

[root@localhost ~]# arp -an
? (192.168.17.1) at 00:50:56:c0:00:08 [ether] on ens160
? (192.168.17.2) at 00:50:56:f1:32:61 [ether] on ens160
? (192.168.17.254) at 00:50:56:e9:38:ec [ether] on ens160

4.12、添加或删除静态ARP项

使用iproute2:

[root@RockyLinux ~]# ip neigh add 192.168.1.100 lladdr 00:0c:29:c0:2B:2C dev ens160
[root@RockyLinux ~]#  ip neigh del 192.168.1.100 dev ens160

使用net-tools:

[root@RockyLinux ~]# arp -s 192.168.1.100  00:0c:29:c0:2B:2C
[root@RockyLinux ~]# arp -d 192.168.1.100 
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容