运维管理命令系列–ip命令详解

  • A+
所属分类:linux技术
摘要

16个配置网络接口的Linux ip命令示例ip是一个非常强大的实用程序,用于执行许多任务。较早使用了多个较早的实用程序,例如ifconfig和route命令来执行这些功能。在本文中,我将分享使用ip命令配置网络接口和路由的不同示例。

16个配置网络接口的Linux ip命令示例

ip是一个非常强大的实用程序,用于执行许多任务。较早使用了多个较早的实用程序,例如ifconfig和route命令来执行这些功能。在本文中,我将分享使用ip命令配置网络接口和路由的不同示例。

重要的提示:

使用ip命令执行的所有更改仅适用于当前会话,并且不会永久重启。

安装iproute rpm

默认情况iproute 下,RHEL / CentOS Linux的所有变体上都安装了rpm,您也可以ip在急救目标中找到二进制命令。

注意:

# yum -y install iproute 

绝对路径是 /usr/sbin/ip

# which ip /usr/sbin/ip 

1.使用ip命令显示所有可用接口的IP地址

使用ip addr show显示你的Linux系统上的所有可用网络接口的IP地址

[root@localhost network-scripts]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00     inet 127.0.0.1/8 scope host lo        valid_lft forever preferred_lft forever     inet6 ::1/128 scope host        valid_lft forever preferred_lft forever 2: em3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000     link/ether 24:6e:96:87:68:24 brd ff:ff:ff:ff:ff:ff 3: em4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000     link/ether 24:6e:96:87:68:25 brd ff:ff:ff:ff:ff:ff 4: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff 5: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff     inet 192.168.83.176/25 brd 192.168.83.255 scope global noprefixroute bond0        valid_lft forever preferred_lft forever     inet6 fe80::266e:96ff:fe87:6820/64 scope link        valid_lft forever preferred_lft forever [root@localhost network-scripts]#  

在这里,我有三个接口(包括回送接口),其中我们可以检查单个接口的IP地址,如上面突出显示的那样。

2.显示单个接口的IP地址

您可以将“ dev”参数与“ ip addr show”一起使用,以仅显示所提供接口的信息。在这里,我们仅显示enp0s9接口的IP地址详细信息。

[root@localhost network-scripts]# ip addr show dev bond0 6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff     inet 192.168.83.176/25 brd 192.168.83.255 scope global noprefixroute bond0        valid_lft forever preferred_lft forever     inet6 fe80::266e:96ff:fe87:6820/64 scope link        valid_lft forever preferred_lft forever [root@localhost network-scripts]# ip addr show dev em1 '4: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff [root@localhost network-scripts]#  

3.根据接口类型列出接口

Linux系统上可以使用各种类型的NIC,例如vlan,bond,bridge,vxlan等。

现在仅列出系统上的网桥接口:

[root@kvm-d-006188 ~]# ip addr show type bridge 5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff     inet 192.168.6.188/24 brd 192.168.6.255 scope global noprefixroute br0        valid_lft forever preferred_lft forever     inet6 fe80::1088:e7ff:fe3d:bf26/64 scope link        valid_lft forever preferred_lft forever [root@kvm-d-006188 ~]#   

从系统列出绑定接口

[root@kvm-d-006188 ~]# ip addr show type bond 4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff [root@kvm-d-006188 ~]#   

4.检查网卡的链接状态是启用还是禁用

ip link”将管理和显示所有网络接口的状态。显示所有接口的当前状态

[root@kvm-d-006188 ~]# ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff 3: em2: <NO-CARRIER,BROADCAST,MULTICAST,SLAVE,UP> mtu 1500 qdisc mq master bond0 state DOWN mode DEFAULT qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff 4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP mode DEFAULT qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff 5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000     link/ether b0:83:fe:bf:c1:38 brd ff:ff:ff:ff:ff:ff 14: vnet8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN mode DEFAULT qlen 1000     link/ether fe:54:00:ce:a0:4a brd ff:ff:ff:ff:ff:ff 18: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN mode DEFAULT qlen 1000     link/ether fe:54:00:24:6d:13 brd ff:ff:ff:ff:ff:ff 21: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN mode DEFAULT qlen 1000     link/ether fe:54:00:7e:97:a9 brd ff:ff:ff:ff:ff:ff [root@kvm-d-006188 ~]# 

检查单个接口的链接状态

[root@localhost network-scripts]# ip link show dev em1 4: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff [root@localhost network-scripts]#  

5.更改NIC的链接状态

由于我们的NIC接口已经处于启用状态,因此让我们关闭em2接口的链接状态

[root@localhost network-scripts]# ip link set em2 down 

再次检查链接状态 em2

[root@localhost network-scripts]# ip link show dev em2 5: em2: <BROADCAST,MULTICAST,SLAVE> mtu 1500 qdisc mq master bond0 state DOWN mode DEFAULT qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff [root@localhost network-scripts]#  

现在,由于它处于DOWN状态,让我们将其链接状态更改为em2UP

[root@localhost network-scripts]# ip link set em2 up  

再次检查链接状态 enp0s9

[root@localhost network-scripts]# ip link show dev em2 5: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP mode DEFAULT qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff  

注意:

ip link set ifname command”将网络接口设置为IFF_UP状态,并从内核范围启用它。这与ifup ifname初始化脚本命令或设备的NetworkManager激活状态不同。实际上,即使当前断开连接,NetworkManager也会始终设置接口。

6.分配/添加IPv4和IPv6地址

要使用分配IPV4地址,可以使用“ ip addr add”。为了演示此步骤,我已经从enp0s9接口临时取消分配/删除了IP地址。

#ip addr add 192.168.56.101/24 dev em2 

要使用ip命令分配IPv4地址,您将需要netmask前缀值,在我看来这是“ 24”。您可以[计算该前缀值],也可以使用其他在线网络计算器来帮助您根据网络掩码获取前缀值。

检查为em2接口分配的IPv4地址

[root@localhost network-scripts]# ip addr show em2 5: em2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master bond0 state UP qlen 1000     link/ether 24:6e:96:87:68:20 brd ff:ff:ff:ff:ff:ff [root@localhost network-scripts]#  

要使用ip命令分配IPv6地址,您可以使用与IPv4地址相同的命令,但要使用IPv6地址和 netmask

#ip addr add 2001:0001:0001:1443::0411/122 dev em2 

验证分配给提供的接口的IPv6地址

#ip addr show em2  

7.取消分配/删除IPv4和IPv6地址

您可以使用“ ip addr del”参数从接口取消分配或删除分配的IP地址。在这里,您必须提供确切的IP地址以及前缀值才能取消分配IP地址。

#ip add del 192.168.56.101/24 dev em2 

检查并验证是否已从提供的接口成功取消分配IP地址

#ip addr show em2  

您可以使用与上述IPv4地址相同的命令取消分配或删除单个接口的IPv6地址。

#ip addr del 2001:0001:0001:1443::0411/122 dev em2 

接下来,检查接口的IPv6地址,以确保未从提供的接口中分配它

#ip addr show em2  

8.从各个接口取消分配/删除所有协议地址

通过使用“ ip addr del”,我们仅删除分配给相应接口的提供的地址。但是,如果要删除分配给单个接口的所有协议地址,则必须使用flush

#ip addr flush dev em2 

接下来检查界面细节

#ip addr show dev enp0s9  

如您所见,IPv4和IPv6地址均被删除。

9.显示界面的详细统计信息

要使用“ -s”参数获取有关单个接口的数据包统计信息的更多详细信息

#ip -s link show dev nm-bridge1  

如果该"-s"选项出现两次或更多次,则信息量会增加。

#ip -s -s link show dev nm-bridge1  

10.列出可用的路线

列出Linux系统上所有可用的路由

[root@kvm-d-006188 ~]# ip route list default via 192.168.6.1 dev br0 proto static metric 425 192.168.6.0/24 dev br0 proto kernel scope link src 192.168.6.188 metric 425 [root@kvm-d-006188 ~]# [root@kvm-d-006188 ~]#  

您也可以使用“ ip route”或“ ip route show”获取路由表中的可用路由列表

11.将默认路由添加到路由表

要添加默认路由(在路由表中添加条目),请使用“ ip route add default

#ip route add default via  192.168.0.1 dev em2 

验证路由表中可用的默认路由

# ip route list default via 192.168.0.1 dev enp0s8 default via 192.168.6.1 dev br0 proto static metric 425 192.168.6.0/24 dev br0 proto kernel scope link src 192.168.6.188 metric 425  

注意:

在这里,在重新运行命令以添加默认路由之前,我已手动删除了现有路由。如果您尝试再次重新添加相同的路由,则该命令将失败,并显示错误“ RTNETLINK answers: File exists

与其他路由一样,为默认路由添加更多详细信息

ip route add default via 192.168.0.1 dev em2 proto static metric 101 

使用ip命令再次验证默认路由

# ip route list default via 192.168.0.1 dev em2 proto static metric 101 

12.从路由表中删除默认路由

要删除默认路由,请使用“ add”,而不要使用“ delete”。现在,这里我有两个默认路由,在这里我想与要删除的路由10.0.2.2enp0s3接口

#ip route list default via 192.168.0.1 dev em2 proto static metric 101 

删除默认路由

ip route delete default via 10.0.2.2 

您也可以使用接口名称删除默认路由,以删除映射到提供的接口的所有默认路由

#ip route delete default dev em2 

13.将其他路由添加到路由表

现在,在添加默认路由之后,您还可以将其他路由添加到路由表中。在这里,我们将通过路由192.168.0.1添加到192.168.168.0/24的路由

ip route add 192.168.168.0/24 via 192.168.0.1 dev em2 

验证路由表中的可用路由

# ip route list 192.168.168.0/24 via 192.168.0.1 dev em2 

14.从路由表中删除其他路由

在这里,我们通过192.168.0.1192.168.168.0/24添加了一条新路由。因此我们将尝试在此处删除相同的内容

 ip route delete 192.168.168.0/24 via 192.168.0.1 

再次验证路由列表

# ip route list default via 192.168.0.1 dev em2 proto static metric 101 

15.替换路由表中的现有路由

我们还可以从路由表中的现有路由替换某些指令。在最后一个示例中,我们通过192.168.0.1添加了路由192.168.168.0/24,因此我们将通过另一个接口(enp0s3)通过10.0.2.2网关将其更改为192.168.168.0/24

我现有的路线清单

# ip route list   

替换路线值

ip route replace 192.168.168.0/24 via 10.0.2.2 dev em2 

验证新路线列表

#ip route list  192.168.168.0/24 via 10.0.2.2 dev em2 

16.显示地址将要走的路线

现在我们已经添加了所有路由,但是我们想知道Linux系统上任何地址将采用的路由

知道192.168.168.10地址将使用的路由

# ip route get 192.168.168.10 192.168.168.10 via 10.0.2.2 dev enp0s3 src 10.0.2.20 uid 0     cache 

知道192.168.0.10地址将使用的路由

# ip route get 192.168.0.10 192.168.0.10 dev enp0s8 src 192.168.0.115 uid 0     cache 

结论

Linux ip命令是Linux管理员非常方便的工具。此工具的唯一缺点是更改是非持久性的,这意味着重新启动后将无法生存。但是在许多情况下,例如在救援模式下或为了验证临时网络更改,我们可以使用此工具创建网络并将其分配给接口。

最后,我希望本文使用其他ip命令示例在Linux上执行网络相关活动(备忘单)有所帮助。因此,请在“评论”部分告诉我您的建议和反馈。