ip link 子命令
使用 ip 链接对象来显示和管理系统上网络接口设备的状态。
下面是 ip link 子命令的一些常见用法。
1.检查网络设备状态
以下示例显示了所有活动设备的状态。
show 参数是默认值。
请注意,输出类似于 ip addr 命令的输出,但没有 IP 地址信息。
# ip link show
2.打开/关闭网络接口
使用 set 参数更改设备属性。
up 和 down 参数改变设备的状态。
以下示例关闭 eth0 接口,然后重新打开。
show 参数显示 set 参数的结果。
# ip link set eth0 down
# ip link show eth0 2: eth0: [BROADCAST,MULTICAST] mtu 9001 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
# ip link set eth0 up
# ip link show eth0 2: eth0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 9001 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 06:e6:41:84:10:48 brd ff:ff:ff:ff:ff:ff
3.更改MTU属性
以下示例使用 set 参数将 MTU 属性更改为 1000:
# ip link set eth0 mtu 1000
# ip link show eth0 2: eth0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 1000 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 06:e6:41:84:10:48 brd ff:ff:ff:ff:ff:ff
ip 路由子命令
ip route 实用程序显示或者操作 IP 路由表。
它的主要用途是通过网络接口建立到特定主机或者网络的静态路由。
1. 显示路由表
使用 ip route 命令显示路由表。
例子:
# ip route default via 172.31.112.1 dev eth0 proto static metric 100 172.31.112.0/20 dev eth0 proto kernel scope link src 172.31.124.62 metric 100
我们还可以使用旧的“netstat -r”命令来显示路由表。
# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 eth0 172.31.112.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
2. 添加路由
使用 ip route add 命令添加静态路由。
下面的示例添加了一个默认路由,如果没有其他路由匹配,则使用该路由。
所有使用此路由的网络包都通过 172.31.112.1 IP 地址“网关”:
# ip route add default via 172.31.112.1 dev eth0 proto static
以下示例通过特定网络接口添加到主机地址的静态路由。
# ip route add 192.0.2.1 via 10.150.36.2 dev eth0
3. 删除路由
使用 ip route delete 命令从路由表中删除一个条目,例如:
# ip route delete default via 172.31.112.1 # ip route delete 192.0.2.1
4. 配置永久静态路由
我们使用 ip route 对路由表所做的任何更改在系统重新启动后都不会保留。
要使静态路由永久化,请为每个接口配置它们。
静态路由配置存储在 /etc/sysconfig/network-scripts/route-interface 文件中。
例如,eth0 接口的静态路由将存储在 /etc/sysconfig/network-scripts/route-eth0 文件中。
路由接口文件有两种格式:
- IP 命令参数
- 网络/网络掩码指令
IP 命令参数格式使用以下语法:
x.x.x.x/x via x.x.x.x dev interface
使用术语 default 创建默认网关,例如:
default via x.x.x.x dev interface
以下示例通过 eth0 接口 (10.10.10.1) 创建到 192.168.2.0/24 子网的静态路由:
# cat /etc/sysconfig/network-scripts/route-eth0 198.168.2.0/24 via 10.10.10.1 dev eth0
我们还可以对路由接口文件使用网络/网络掩码指令格式。
格式如下:
ADDRESS0=X.X.X.X NETMASK0=X.X.X.X GATEWAY0=X.X.X.X
以下示例显示使用 IP 命令参数来定义相同的条目:
ADDRESS0=198.168.2.0 NETMASK0=255.255.255.0 GATEWAY0=10.10.10.1
从 0 开始(如图所示),每增加一个静态路由就递增 1.
用于管理 ARP 表的 ip neigh 子命令
ARP 将 IP 地址解析为 MAC 地址。
MAC地址是一个48位的物理硬件地址,烧入网络接口卡(NIC)。
网络应用程序使用 IP 地址与另一台设备通信,但需要 MAC 地址来确保网络数据包的传递。
使用“ip neigh”子命令显示 ARP 表、删除 ARP 条目或者向表中添加条目。
ip neigh 子命令替换了已弃用的 arp 命令。
ARP 表也有另一个名称,即 IP 邻居表。
ip neigh object 命令总结如下:
子命令 | 描述和任务 |
---|---|
ip neigh add | 添加新的邻居条目。 |
ip neigh change | 更改现有条目。 |
ip neigh replace | 添加新条目或者更改现有条目。 |
ip neigh delete | 删除邻居表项。 |
ip neigh show | 列出邻居条目。 |
ip neigh flush | 刷新邻居表。 |
1.显示ARP表
以下示例显示 ARP 表。
show 命令是默认的。
# ip neigh 172.31.112.1 dev eth0 lladdr 06:75:25:15:b5:ba REACHABLE
2.清除所有ARP表项
以下示例以详细程度清除 ARP 表中的所有条目:
# ip -s -s neigh flush all 172.31.112.1 dev eth0 lladdr 06:75:25:15:b5:ba ref 1 used 33/0/29 probes 1 REACHABLE *** Round 1, deleting 1 entries *** *** Flush is complete after 1 round ***
3. 仅删除特定接口的 ARP 表项
以下示例删除设备 eth0 上的 ARP 表中的条目:
# ip neigh flush dev eth0
我们可以使用 ip 命令来显示接口状态、配置网络属性或者调试或者调整网络。
ip 命令替换了不推荐使用的 ifconfig 命令。
ip 实用程序的语法如下:
# ip [OPTIONS] OBJECT {COMMAND | help}
ip 命令提供了许多 OBJECT 参数,例如:
- 链接:网络设备
- 地址(或者地址):设备上的 IPv4 或者 IPv6 地址
- 路由:路由表条目
它还为每个 OBJECT 提供了许多 COMMANDS,例如:
- 添加、更改、删除、显示等
下面是 Linux 中几个最常用的 ip 命令示例。
ip addr 子命令
1. 显示当前网络配置
使用 ip addr 对象来显示和管理设备上的 IPv4 或者 IPv6 地址。
以下示例显示所有活动设备的 IP 状态。
show 命令是默认的。
# ip addr show
2. 为网络接口分配 IPv4 地址
以下示例使用 add 参数将 IPv4 地址 172.31.29.90/20 添加到 eth0 接口。
之后给出 show 参数以显示结果。
之后给出 show 参数以显示结果。
此示例假定接口已分配有 172.31.124.62/20。
# ip addr add 172.31.29.90/20 dev eth0
# ip addr show eth0 2: eth0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 9001 qdisc pfifo_fast state UP qlen 1000 link/ether 06:e6:41:84:10:48 brd ff:ff:ff:ff:ff:ff inet 172.31.124.62/20 brd 172.31.127.255 scope global dynamic eth0 valid_lft 3311sec preferred_lft 3311sec inet 172.31.29.90/20 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::4e6:41ff:fe84:1048/64 scope link valid_lft forever preferred_lft forever
3. 从接口中删除 IPv4 地址
使用 del 参数删除 IPv4 地址。
例子:
# ip addr del 172.31.29.90/20 dev eth0
# ip addr show eth0 2: eth0: [BROADCAST,MULTICAST,UP,LOWER_UP] mtu 9001 qdisc pfifo_fast state UP qlen 1000 link/ether 06:e6:41:84:10:48 brd ff:ff:ff:ff:ff:ff inet 172.31.124.62/20 brd 172.31.127.255 scope global dynamic eth0 valid_lft 3248sec preferred_lft 3248sec inet6 fe80::4e6:41ff:fe84:1048/64 scope link valid_lft forever preferred_lft forever
4. 刷新分配给接口的所有 IPv4 地址
使用flush 参数删除分配给接口的所有IPv4 地址。
例子:
# ip addr flush dev eth0
注意:我们使用 ip 为网络接口配置的任何设置在系统重新启动后都不会保留。
要使更改永久化,请在 /etc/sysconfig/network-scripts/ifcfg-[interface] 文件中设置属性。