ip命令是每个Linux系统管理员熟知的网络接口配置的超级工具。它可用于接口关闭与开启,分配和删除ip地址以及ARP路由缓存管理等等。

ip命令已安装在所有现代Linux发行版,它是iproute2软件的一部分。这里的网络接口也就是我们常说的网卡。

ip命令

ip命令的语法是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 命令查看IP地址

使用addr对象操作时,ip命令的形式是ip addr [ COMMAND ] ADDRESS dev IFNAME的形式。

最常用的addr对象操作的命令是show,add和del。分别是打印IP地址的信息,添加IP地址,删除IP。

ip addr show显示所有网络接口的列表以及关联的IP地址,show命令列出所有接口设备。

如果输入ip addr,您将获得相同的输出。如果您想以IPv4IPv6IP地址查看IP地址,请运行命令ip -4 addrip -6 addr

如要获取指定接口的IP地址信息,请运行命令ip addr show后跟接口设备名称。例如命令ip addr show dev eth0查询eth0接口的IP地址信息。

ip addr show #eq ip addr
ip -4 addr
ip -6 addr
ip addr show dev eth0

ip 命令修改IP地址

现在已经知道如何查看接口的IP地址,看看如何为网络接口分配或者修改IP地址。

修改IP地址命令语法是ip addr add ADDRESS dev IFNAME。其中IFNAME是接口名称,ADDRESS是您要分配给接口的IP地址。

例如命令sudo ip address add 192.168.121.45/24 dev eth0eth0接口的IP地址设置为192.168.121.45,子网掩码是24。

要确认设置的IP地址是否正确,请运行命令ip -4 addr show dev eth0ip -4 a show dev eth0

sudo ip address add 192.168.121.45/24 dev eth0
ip addr show dev eth0

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

在Linux您可以为同一接口分配多个地址,使用ip命令。要为接口分配多个IP地址,你需要运行多次ip命令即可。

例如命令sudo ip address add 192.168.121.241/24 dev eth0sudo ip address add 192.168.121.45/24 dev eth0

sudo ip address add 192.168.121.241/24 dev eth0
sudo ip address add 192.168.121.45/24 dev eth0
ip addr show dev eth0

ip 命令删除IP地址

现在了解ip命令对接口ip地址另个常用的操作删除。从接口中删除IP地址的语法是ip addr dev ADDRESS dev IFNAME

其中IFNAME是网络接口设备的名称,ADDRESS是您要从接口中删除的IP地址。

例如命令sudo ip address del 192.168.121.45/24 dev eth0eth0网络接口删除地址192.168.121.45/24

sudo ip address del 192.168.121.45/24 dev eth0
ip addr show dev eth0

ip 命令查看接口信息

这里所说的接口也就是我们常说的网卡。ip命令也可以用于管理和显示网络接口的状态。

对网络接口的操作对象是link对象。与link对象工作时,最常用的对象子命令是showsetadddel

show打印网络接口的信息,set设置网络接口的状态,例如启用与关闭,add添加网络接口,del删除网络接口。

ip link show要显示所有网络接口的信息。这些信息包括MTU,接口状态启用或者关闭,网关等。

ip link showip addr show不同的是ip link show不会打印接口的IP地址的信息。

要获取指定网络接口的信息,请运行命令ip link show dev后接接口名称。例如命令ip link show dev eth0查询eth0的信息。

ip link show
ip link show dev eth0

ip 命令启用与关闭接口

对网络接口还有一个常用的操作是启用或关闭接口,在远程服务器操作时你应该小心使用此操作。

启用或者关闭接口的命令形式是ip link set dev {DEVICE} {up|down}{DEVICE}是接口的名称。{up|down}设置接口的状态。

命令ip link set eth0 up启用eth0接口,如果需要关闭,请运行命令ip link set eth0 down

ip link set eth0 up
ip link set eth0 down

ip 命令查看路由表

ip命令除了管理接口,也可以用于管理内核路由表。要分配,删除和显示内核路由表,请使用route对象。

使用route对象时最常用的子命令是listadddellist列出路由表信息,add添加路由到路由表,del从路由表删除路由。

有三个不同命令查看路由表信息,分别是ip routeip route listip route list SELECTOR

在没有指定选择器SELECTOR时,ip route list命令将列出内核的所有路由记录。

例如命令ip route list 172.17.0.0/16显示指定IP地址是172.17.0.0/16的路由。

ip route
ip route list
ip route list SELECTOR
ip route list 172.17.0.0/16

ip 命令添加/设置路由

如果要向路由表添加新记录,可以使用ip命令的子命令route add后跟网络或设备名称。

例如命令ip route add 192.168.121.0/24 via 192.168.121.1添加192.168.121.1作为到达192.168.121.0/24的网关。

ip route add 192.168.121.0/24 dev eth0命令添加eth0作为到到达192.168.121.0/24的网关。

要为接口设置默认路由,请使用default关键词。例如命令ip route add default via 192.168.121.1 dev eth0设置eth0的默认路由是192.168.121.1

ip route add 192.168.121.0/24 via 192.168.121.1
ip route add 192.168.121.0/24 dev eth0
ip route add default via 192.168.121.1 dev eth0

ip 命令删除路由

删除路由的语法与添加时相同。要从路由表中删除记录,可以使用ip子命令route del后跟网络或者接口设备名称。

例如命令ip route del 192.168.121.0/24 via 192.168.121.1命令删除到达192.168.121.0/24的路由。

要删除默认路由,和设置默认路由一样请使用default关键词。例如命令ip route del default删除默认路由。

ip route del 192.168.121.0/24 via 192.168.121.1
ip route del default

结论

至此,您应该很好地理解如何使用Linux ip命令。有关其他ip选项的更多信息,请访问ip命令手册页。如果您有任何问题或反馈,请随时发表评论。