跳到主要内容

Linux ip 命令 - 显示或设置网络设备

介绍

ip 命令是 Linux 系统中的一个网络配置工具,主要用于显示或设置网络设备,功能非常全面,可完全替代 ifconfig 命令。

语法

ip [ OPTIONS ] OBJECT { COMMAND | help }

选项

  • -V:显示命令的版本信息。
  • -s:输出更详细的信息。
  • -f:强制使用指定的协议族。
  • -4:指定使用的网络层协议是 IPv4 协议。
  • -6:指定使用的网络层协议是 IPv6 协议。
  • -0:输出信息每条记录输出一行,即使内容较多也不换行显示。
  • -r:显示主机时,不使用 IP 地址,而使用主机的域名。
  • help:为该命令的帮助信息。

常用 OBJECT 对象及其含义如下:

OBJECT缩写描述
addressaaddr设备上的协议(IPv4 或 IPv6)地址
addrlabeladdrl用于协议地址选择的标签配置
l2tpIP 上的以太网隧道(L2TPv3)
linkl网络设备
maddressmmaddr多播地址
monitor监视 netlink 消息
mroutemr组播路由缓存条目
mrule组播路由策略数据库中的规则
neighbournneigh管理 ARP 或 NDISC 缓存条目
netns管理网络命名空间
ntable管理邻居高速缓存(neighbor cache)的操作
router路由表条目
ruleru路由策略数据库中的规则
tcp_metrics/tcpmetrics管理 TCP 指标(Metrics)
token管理令牌化(tokenized)的接口标识符
tunneltIP 上的隧道(tunnel)
tuntap管理 TUN/TAP 设备
xfrmx管理 IPSec 策略

示例

显示所有网络接口的信息:

ip a

只显示 TCP/IP IPv4 的网络接口:

ip -4 a

只显示 TCP/IP IPv6 的网络接口:

ip -6 a

显示指定接口的 TCP/IP 详细信息,下面四个命令是等效的:

ip a show eth0
ip a list eth0
ip a show dev eth0
ip a list dev eth0

只显示正在运行的网络接口:

ip link show up

为指定网络接口设置 IP 地址的格式是 ip a add {ip_addr/mask} dev {interface},例如下面两个命令是等效的:

ip a add 192.168.1.200/255.255.255.0 dev eth0
ip a add 192.168.1.200/24 dev eth0

为指定网络接口上添加广播地址:

ip addr add broadcast 172.20.10.255 dev eth0

从网络接口中删除 IP 地址:

ip a del 192.168.1.200/24 dev eth0

在所有 ppp(Point-to-Point)接口上禁用 IP 地址:

ip -4 addr flush label "ppp*"

关闭 eth1 网卡:

ip link set dev eth1 down

启动 eth1 网卡:

ip link set dev eth1 up

设置 eth0 网络接口的 txqueuelen(传输队列长度)大小为 10000:

ip link set txqueuelen 10000 dev eth0

设置 eth0 网络接口的 MTU 值为 9000:

ip link set mtu 9000 dev eth0

显示邻居(ARP)缓存:

$ ip n show
192.168.1.3 dev eth0 lladdr 86:e5:ec:b7:bd:d3 STALE
192.168.1.1 dev eth0 lladdr 3c:57:4f:f8:18:48 REACHABLE
fe80::1 dev eth0 lladdr 3c:57:4f:f8:18:48 router REACHABLE

输出结果的最后一个字段显示此条目的“neighbour unreachability detection”机器的状态,一共有 3 种状态:

  • STALE:邻居是有效的(valid),但可能已经无法访问,因此内核将尝试在第一次传输时检查它。
  • DELAY:一个数据包已经发送给过时的(STALE 状态)邻居,内核正在等待确认。
  • REACHABLE:邻居是有效的(valid),而且显然是可以联系到的(reachable)。

添加一个 ARP 条目的格式是 ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}。例如,在设备 eth0 上为邻居 192.168.1.5 添加一个永久 ARP 条目:

ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm

nud 邻居状态(neighbour state)有 4 种:

  • permanent:邻居条目永远有效,只能由管理员指定删除。
  • noarp:邻居条目是有效的,将不会尝试验证此项,但可以在其生存期过期时将其删除。
  • stale:邻居的条目是有效的,但可疑。如果 ip neigh 选项有效且地址未被此命令更改,则该选项不会更改邻居状态。
  • reachable:在可达性超时过期之前,邻居条目是有效的。

删除一个 ARP 条目的格式是 ip neigh del {IPAddress} dev {DEVICE},例如:

ip neigh del 192.168.1.5 dev eth1

更改是设备 eth1 上邻居 192.168.1.100 的状态为 reachable:

ip neigh chg 192.168.1.100 dev eth1 nud reachable

刷新 ARP 记录:

ip -s -s n flush 192.168.1.5

显示路由表,下面几个命令是等效的:

ip r
ip r list
ip route
ip route list

增加一个新的路由,命令格式如下:

ip route add {NETWORK/MASK} via {GATEWAYIP}
ip route add {NETWORK/MASK} dev {DEVICE}
## Add default route using ip ##
ip route add default {NETWORK/MASK} dev {DEVICE}
ip route add default {NETWORK/MASK} via {GATEWAYIP}

通过网关 192.168.1.254 向网络 192.168.1.0/24 添加一个普通路由:

ip route add 192.168.1.0/24 via 192.168.1.254

通过 192.168.1.254 网关路由通过 eth0 网络接口连接的所有流量:

ip route add 192.168.1.0/24 dev eth0

删除前面添加的一条网关路由:

ip route del 192.168.1.0/24 dev eth0

删除默认网关路由:

ip route del default

更改 eth0 网卡的 MAC 地址:

## show MAC address ##
ip link show eth0
## disable interface ##
ip link set dev eth0 down
## set new MAC address ##
ip link set dev eth0 address XX:YY:ZZ:AA:BB:CC
ip link set dev eth0 up