Linux ip命令及示例

评论 0 浏览 0 2019-04-15

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是:showadd,和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

如果你想只显示IPv4IPv6 IP地址,请使用ip -4 addrip -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 eth0ip -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对象来分配、删除和显示内核路由表。在处理路由对象时,最常用的命令是:listadd,和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

如果你有任何问题或反馈意见,请随时留言。

最后更新2023-06-02
0 个评论
标签