ip link 是 iproute2 套件中的一个核心命令,用于查看、管理和操作 Linux 系统中的网络接口(也称为链路),它比传统的 ifconfig 命令更加强大和灵活,是现代 Linux 系统管理网络接口的首选工具。

核心功能
ip link 主要负责管理网络接口的链路层属性,包括:
- 查看所有网络接口的状态(UP/DOWN)、MAC 地址、MTU 等。
- 启用或禁用网络接口。
- 修改接口的 MAC 地址(MAC 地址欺骗)。
- 修改接口的最大传输单元。
- 创建和删除虚拟网络接口(如 bridge, vlan, veth 等)。
- 设置接口的队列规则和流量控制。
常用命令格式与选项
基本语法为:
ip [ OPTIONS ] link show [ dev DEVICE ]
ip link set { DEVICE } { COMMAND }
查看接口信息 (show)
这是最常用的功能,用于显示网络接口的详细信息。
命令:

ip link show # 或者简写 ip link
示例输出:
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 mq state UP mode DEFAULT group default qlen 1000
link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:ac:11:32:83 brd ff:ff:ff:ff:ff:ff
输出详解:
1: lo: 接口编号和名称。lo是环回接口。<...>: 接口标志位。UP: 接口已启用。DOWN: 接口已禁用。LOOPBACK: 环回接口。BROADCAST: 支持广播。MULTICAST: 支持多播。LOWER_UP: 物理层已连接(例如网线已插好)。
mtu 1500: 最大传输单元,即数据包的最大字节数。qdisc mq: 队列规则。mq表示多队列。state UP: 接口当前状态。link/ether 00:1a:2b:3c:4d:5e: 接口的 MAC 地址。brd ff:ff:ff:ff:ff:ff: 广播地址。
查看特定接口:
ip link show dev eth0
启用/禁用接口 (set)
这是修改接口状态最常用的操作。

启用接口:
sudo ip link set dev eth0 up
禁用接口:
sudo ip link set dev eth0 down
注意:禁用接口会导致所有网络连接中断,请谨慎操作。
修改 MAC 地址 (set)
可以临时修改接口的 MAC 地址,也称为 MAC 地址欺骗。
格式:
sudo ip link set dev DEVICE address NEW_MAC
示例:
# 将 eth0 的 MAC 地址临时修改为 00:11:22:33:44:55 sudo ip link set dev eth0 address 00:11:22:33:44:55
注意:修改后重启网络服务或重启系统,MAC 地址会恢复为原始值,要永久修改,需要修改配置文件(如 /etc/network/interfaces 或 NetworkManager 的配置)。
修改 MTU (set)
可以调整接口的最大传输单元,这在处理特殊网络环境(如 VPN 或某些云网络)时很有用。
格式:
sudo ip link set dev DEVICE mtu NEW_MTU
示例:
# 将 eth0 的 MTU 设置为 9000 (适用于 Jumbo Frame) sudo ip link set dev eth0 mtu 9000 # 将 MTU 恢复默认值 1500 sudo ip link set dev eth0 mtu 1500
创建和删除虚拟接口
ip link 是创建和管理虚拟网络接口的利器。
创建一个虚拟以太网对: 虚拟以太网对常用于连接不同的网络命名空间,Docker。
# 创建一对名为 veth0 和 veth1 的虚拟接口 sudo ip link add name veth0 type veth peer name veth1
创建后,使用 ip link show 可以看到这两个新接口。
删除一个接口:
sudo ip link del dev veth0 # 删除 veth0 后,它的对端 veth1 也会被自动删除
创建 VLAN 接口:
# 在 eth0 上创建一个 VLAN ID 为 100 的子接口,名为 eth0.100 sudo ip link add link eth0 name eth0.100 type vlan id 100
创建网桥:
# 创建一个名为 mybridge 的网桥 sudo ip link add name mybridge type bridge
与 ifconfig 的对比
| 特性 | ip link |
ifconfig |
|---|---|---|
| 所属套件 | iproute2 (现代 Linux 标准工具) |
net-tools (传统工具,逐渐被淘汰) |
| 功能 | 功能强大,专注于链路层和网络层 | 功能相对单一,功能分散在多个命令中 |
| 接口管理 | ip link set |
ifconfig up/down |
| MAC 地址 | ip link set ... address |
ifconfig hw ether |
| MTU | ip link set ... mtu |
ifconfig mtu |
| 虚拟接口 | ip link add/del (支持 bridge, vlan, veth 等) |
ifconfig 无法创建复杂虚拟接口 |
| 信息展示 | 信息更详细,结构化 | 信息相对简单 |
| 推荐度 | 强烈推荐,是当前和未来的标准 | 不推荐,仅用于兼容旧系统 |
实际应用场景
-
快速排查网络问题:
# 查看所有网卡是否都处于 UP 状态 ip link show | grep "state DOWN"
-
临时测试网络连通性:
# 禁用网卡,然后测试 sudo ip link set dev eth0 down ping 8.8.8.8 # 重新启用 sudo ip link set dev eth0 up
-
配置容器网络: 在手动配置 Docker 或 Kubernetes 网络时,需要使用
ip link来创建veth pair、bridge和vlan接口。 -
调整网络性能: 通过调整 MTU 或设置队列规则来优化特定应用的网络性能。
ip link 是每个 Linux 系统管理员和网络工程师必须掌握的命令,它功能强大、信息丰富,是进行网络接口管理的瑞士军刀,虽然 ifconfig 在一些老旧系统上仍然存在,但学习和使用 ip link 是跟上现代 Linux 网络管理步伐的关键一步。
