Linux ip 命令与示例

ip 命令是用于配置网络接口的强大工具,任何 Linux 系统管理员应该知道和使用它。它可用于启用或者禁用网卡接口,分配和删除地址以及路由管理 ARP 缓存等等。

在本教程中,我们将通过实际示例和最常见的选项的详细说明向您展示如何使用 ip 命令。

如何使用 ip 命令

ip 实用程序是安装在所有现代 Linux 发行版上的 iproute2 软件包的一部分。

ip 命令的语法如下:

1
ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT 是您要管理的对象类型。最常用的对象(或子命令)是:

  • link(l) - 显示和修改网络接口。
  • address(a) - 显示和修改 IP 地址。
  • route(r) - 显示和更改路由表。
  • neigh(n) - 显示和操作邻居对象( ARP 表)。

该对象可以以完整或缩写(短)形式书写。 ip OBJECT help 可以显示每个对象类型每个子命令的命令和参数列表。

配置网络接口时,必须以 root 用户或用户使用 sudo 权限运行命令,否则将打印 RTNETLINK answers: Operation not permitted

使用 ip 命令设置的配置不是持久的。系统重启后,所有更改都将丢失。对于永久设置,您需要编辑特定于发行版的配置文件或将命令添加到启动脚本。

显示和修改 IP 地址

使用 addr 对象操作时,命令采用以下形式:

1
ip addr [ COMMAND ] ADDRESS dev IFNAME

最常用的 addr 对象 COMMANDS 是 show , add 和 del 。

显示有关所有 IP 地址的信息

要显示所有网络接口的列表以及关联的 IP 地址,请键入以下命令:

1
ip addr show

输出看起来像这样:

1
2
3
4
5
6
7
8
9
10
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff
inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0
valid_lft 2900sec preferred_lft 2900sec
inet6 fe80::5054:ff:fe8c:6244/64 scope link
valid_lft forever preferred_lft forever

show 命令将列出所有设备。如果输入 ip addr 您将获得相同的输出。

如果您只想显示 IPv4IPv6 IP 地址使用 ip -4 addrip -6 addr

显示有关单个网络接口的信息

获取有关特定网络接口的信息, ip addr show dev 然后使用设备名称。例如,要查询 eth0 您将键入:

1
ip addr show dev eth0

为接口分配 IP 地址

要为接口分配 IP 地址,请使用以下语法:

1
ip addr add ADDRESS dev IFNAME

其中 IFNAME 是接口名称, ADDRESS 是您要分配给接口的 IP 地址。

要将 192.168.121.45 子网掩码为 24 的地址添加到设备 eth0 ,您可以键入:

1
sudo ip address add 192.168.121.45/24 dev eth0

成功时,该命令不会显示任何输出。如果界面不存在,您将获得 Cannot find device "eth0"

为同一接口分配多个 IP 地址

使用 ip 实用程序,您可以为同一接口分配多个地址。例如:

1
2
sudo ip address add 192.168.121.241/24 dev eth0
sudo ip address add 192.168.121.45/24 dev eth0

要确认 IP 是否已分配,请键入: ip -4 addr show dev eth0ip -4 a show dev eth0

1
2
3
4
5
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.121.241/24 brd 192.168.121.255 scope global dynamic eth0
valid_lft 3515sec preferred_lft 3515sec
inet 192.168.121.45/24 scope global secondary eth0
valid_lft forever preferred_lft forever

从网络接口中删除 IP 地址

从接口中删除 IP 地址的语法如下:

1
ip addr dev ADDRESS dev IFNAME

IFNAME 是接口名称,ADDRESS 是您要从接口中删除的 IP 地址。

要从设备 eth0 中 192.168.121.45/24 删除地址,请键入:

1
sudo ip address del 192.168.121.45/24 dev eth0

显示和修改网络接口

要管理和显示网络接口的状态,请使用该 link 对象。

与工作时,最常用的命令 link 对象 showsetadddel

显示有关网络接口的信息

要显示所有网络接口的列表,请键入以下命令:

1
ip link show
1
2
3
4
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff

与此不同 ip addr showip link show 不会打印有关与设备关联的 IP 地址的信息。

获取有关特定网络接口的信息, 使用 ip link show dev 后跟设备名称。例如,要查询 eth0 您将键入:

1
ip link show dev eth0
1
2
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 52:54:00:8c:62:44 brd ff:ff:ff:ff:ff:ff

更改接口启用或关闭的状态

要启用或关闭接口,请使用 ip link set dev 设备名称和所需状态:

1
ip link set dev {DEVICE} {up|down}

例如,要使接口 eth0 联机,您可以键入:

1
ip link set eth0 up

如果禁用就使用:

1
ip link set eth0 down

显示和更改路由表

要分配,删除和显示内核路由表,请使用 route 对象。使用 routes 对象时最常用的命令是 listadddel

显示路由表

要列表显示内核路由条目使用以下命令之一:

1
2
3
ip route
ip route list
ip route list SELECTOR

在没有 SELECTOR 的情况下使用时,该命令将列出内核中的所有路由条目:

1
ip route list
1
2
3
default via 192.168.121.1 dev eth0 proto dhcp src 192.168.121.241 metric 100 
192.168.121.0/24 dev eth0 proto kernel scope link src 192.168.121.241
192.168.121.1 dev eth0 proto dhcp scope link src 192.168.121.241 metric 100

例如,要显示特定网络的路由, 172.17.0.0/16 您可以键入:

1
ip r list 172.17.0.0/16
1
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

添加新路由

要向路由表添加新条目,请使用 route add 命令后跟网络或设备名称。

要添加一条路由: 192.168.121.0/24 通过网关 192.168.121.1

1
ip route add 192.168.121.0/24 via 192.168.121.1

要添加一条路由:在设备 eth0 上可以到达 192.168.121.0/24

1
ip route add 192.168.121.0/24 dev eth0

添加默认路由使用 default 关键字。以下命令将添加默认路由在设备 eth0 上可通过本地网关 192.168.121.1 访问。

1
ip route add default via 192.168.121.1 dev eth0

删除路线

要从路由表中删除条目,请使用 route add 命令,删除路由的语法与添加的相同。

以下命令将删除默认路由:

1
ip route del default

删除 192.168.121.0/24 通过网关 192.168.121.1 的路由

1
ip route add 192.168.121.0/24 via 192.168.121.1

结论

到目前为止,您应该很好地理解如何使用 Linux ip 命令。有关其他 ip 选项的更多信息,请访问 ip 命令手册页