菜鸟科技网

ip link 命令

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

ip link 命令-图1
(图片来源网络,侵删)

核心功能

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 命令-图2
(图片来源网络,侵删)
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)

这是修改接口状态最常用的操作。

ip link 命令-图3
(图片来源网络,侵删)

启用接口:

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 无法创建复杂虚拟接口
信息展示 信息更详细,结构化 信息相对简单
推荐度 强烈推荐,是当前和未来的标准 不推荐,仅用于兼容旧系统

实际应用场景

  1. 快速排查网络问题

    # 查看所有网卡是否都处于 UP 状态
    ip link show | grep "state DOWN"
  2. 临时测试网络连通性

    # 禁用网卡,然后测试
    sudo ip link set dev eth0 down
    ping 8.8.8.8
    # 重新启用
    sudo ip link set dev eth0 up
  3. 配置容器网络: 在手动配置 Docker 或 Kubernetes 网络时,需要使用 ip link 来创建 veth pairbridgevlan 接口。

  4. 调整网络性能: 通过调整 MTU 或设置队列规则来优化特定应用的网络性能。

ip link 是每个 Linux 系统管理员和网络工程师必须掌握的命令,它功能强大、信息丰富,是进行网络接口管理的瑞士军刀,虽然 ifconfig 在一些老旧系统上仍然存在,但学习和使用 ip link 是跟上现代 Linux 网络管理步伐的关键一步。

分享:
扫描分享到社交APP
上一篇
下一篇