Linux ip命令及示例
ip
命令是一个配置网络接口的强大工具,任何Linux系统管理员都应该知道。它被用来启动或关闭接口,分配和删除地址和路由,管理ARP缓存,以及更多。
本文通过实际例子和对最常见的选项的详细解释,解释了如何使用ip命令。
如何使用ip命令?
ip
工具是iproute2软件包的一部分,该软件包安装在所有现代的Linux发行版上。
ip
命令的句法如下。
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT是你要管理的对象类型。最经常使用的对象(或子命令)是:
link
(l
) - 显示和修改网络接口。address
(a
) - 显示和修改IP地址。route
(r
) - 显示和改变路由表。neigh
(n
) - 显示和操作邻居对象(ARP表)。
对象可以用全称或缩写(简称)的形式来写。要显示每个对象的命令和参数列表,请输入,ip OBJECT help
。
在配置网络接口时,您必须以根用户或具有sudo权限的用户执行命令。否则,该命令将打印RTNETLINK answers: Operation not permitted
。
用ip
命令设置的配置是不持久的。在系统重新启动后,所有的改变都会丢失。要使这些改变永久化,你需要编辑发行版特有的配置文件或将这些命令添加到启动脚本中。
显示和修改 IP 地址
当使用addr
对象进行操作时,命令采取以下形式。
ip addr [ COMMAND ] ADDRESS dev IFNAME
最经常使用的addr
对象的COMMANDS是:show
,add
,和del
。
显示所有的IP地址的信息
要显示所有网络接口和相关的IP地址的列表,请键入以下命令。
ip addr show
输出结果将看起来像这样。
输出
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
。
如果你想只显示IPv4
或IPv6
IP地址,请使用ip -4 addr
或ip -6 addr
。
显示单个网络接口的信息
要获得一个特定的网络接口的信息,请使用ip addr show dev
,后面跟着设备名称。例如,要查询eth0
,你可以输入:
ip addr show dev eth0
为一个接口分配IP地址
要给一个接口分配一个IP地址,请使用以下语法:
ip address add ADDRESS dev IFNAME
其中IFNAME
是接口名称,ADDRESS
是你想分配给该接口的IP地址。
要将带有网络掩码24的地址192.168.121.45
添加到设备eth0
上,你需要键入。
sudo ip address add 192.168.121.45/24 dev eth0
成功后,该命令不会显示任何输出。如果该接口不存在,你将得到Cannot find device "eth0"
。
为同一个接口分配多个IP地址
使用ip
,你可以为同一个接口分配多个地址。比如:
$ 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 eth0
或ip -4 a show dev eth0
。
输出
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地址的语法是如下:
ip addr dev ADDRESS dev IFNAME
IFNAME是接口名称,ADDRESS是你想从接口上移除的IP地址。
要从设备eth0上删除地址192.168.121.45/24
,请键入:
sudo ip address del 192.168.121.45/24 dev eth0
显示和修改网络接口
要想管理和查看网络接口的状态,请使用link
对象。
在处理link
对象时,最常使用的命令是:show
, set
, add
, 和 del
。
显示有关网络接口的信息
要显示所有网络接口的列表,请键入以下命令。
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: 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 show
不同的是,ip link show
不会打印与设备相关的IP地址信息。
要获得一个特定的网络接口的信息,使用ip link show dev
,后面跟着设备名称。例如,要查询eth0
,你需要输入:
ip link show dev eth0
输出
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
改变接口的状态 UP/DOWN
要使接口上升或下降,请使用ip link set dev
,后面跟上设备名称和所需的状态。
ip link set dev {DEVICE} {up|down}
例如,要使接口eth0
联机,你要键入:
ip link set eth0 up
并将其下线:
ip link set eth0 down
显示和修改路由表
使用route
对象来分配、删除和显示内核路由表。在处理路由对象时,最常用的命令是:list
,add
,和del
。
显示路由表
要获得内核路由条目的列表,请使用下列命令之一:
ip route
ip route list
ip route list SELECTOR
当不使用SELECTOR
时,该命令将列出内核中所有的路由条目:
ip route list
输出
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
,你可以键入:
ip r list 172.17.0.0/16
输出
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
增加一条新的route
要在路由表中添加一个新条目,请使用route add
命令,后面跟上网络或设备名称。
通过192.168.121.1的网关,添加一个到192.168.121.0/24的路由:
ip route add 192.168.121.0/24 via 192.168.121.1
添加一个到192.168.121.0/24的路由,该路由可以在设备eth0上到达:
ip route add 192.168.121.0/24 dev eth0
要添加一个默认路由,使用关键字default
。下面的命令将通过本地网关192.168.121.1
添加一个可以在设备eth0
上到达的默认路由:
ip route add default via 192.168.121.1 dev eth0
删除一条路线
要从路由表中删除一个条目,使用route del
命令。删除一个路由的语法与添加时相同。
下面的命令将删除默认的路由:
ip route del default
通过192.168.121.1的网关,删除192.168.121.0/24的路由。
ip route del 192.168.121.0/24 via 192.168.121.1
总结
现在,你应该对如何使用Linux的ip
命令有了很好的了解。关于其他ip
选项的更多信息,请访问ip命令手册页或在你的终端输入man ip
。
如果你有任何问题或反馈意见,请随时留言。