在 Linux 系统中,设置网卡优先级的核心在于配置路由表(Routing Table)的度量值(Metric)。系统会根据路由规则中的度量值来决定使用哪张网卡发送数据包,度量值越低,优先级越高。
以下是几种主流且专业的配置方法。
这是最灵活且立即生效的方法,但重启后会失效。现代 Linux 发行版通常默认安装 iproute2
工具包。
要为特定路由设置优先级(度量值),可以使用以下命令:
sudo ip route add default via <网关IP> dev <网卡名> metric <优先级数值>
示例:假设系统有两张网卡 eth0 和 eth1,我们希望默认路由优先使用 eth0(其网关为 192.168.1.1),其次再使用 eth1(其网关为 192.168.2.1)。
# 为 eth0 添加一条默认路由,并设置较低的度量值(高优先级)
sudo ip route add default via 192.168.1.1 dev eth0 metric 100
# 为 eth1 添加一条默认路由,并设置较高的度量值(低优先级)
sudo ip route add default via 192.168.2.1 dev eth1 metric 200
执行后,可以使用 ip route show
命令查看路由表,确认两条路由的 metric 值已不同。
对于使用 Netplan 作为网络配置后端的系统(如 Ubuntu 18.04+),需要在 YAML 配置文件中为每个网络接口设置 routes
项的 metric
。
配置文件通常位于 /etc/netplan/
目录下。编辑相应的 YAML 文件(如 01-netcfg.yaml
):
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.10/24]
routes:
- to: default
via: 192.168.1.1
metric: 100
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
eth1:
dhcp4: no
addresses: [192.168.2.10/24]
routes:
- to: default
via: 192.168.2.1
metric: 200
保存文件后,应用配置使其生效:
sudo netplan apply
对于使用 NetworkManager 服务管理网络连接的桌面或服务器系统,可以通过 nmcli
或修改连接文件来设置优先级。
使用 nmcli 命令:
# 修改指定连接的 ipv4.route-metric 值
sudo nmcli connection modify "Your-Connection-Name" ipv4.route-metric 100
修改配置文件:Connection 文件通常位于 /etc/NetworkManager/system-connections/
。在相应的 [ipv4]
部分添加或修改 route-metric=100
。
还可以安装专门的工具 ifmetric
来方便地设置接口的度量值。
安装 ifmetric(Debian/Ubuntu):
sudo apt install ifmetric
使用示例:将网卡 eth0 的度量值设置为 0(最高优先级):
sudo ifmetric eth0 0
Metric 是一个相对值,没有绝对标准。系统内核通过比较不同路由条目的 Metric 值来决定优先级。以下是一个常见的参考范围:
度量值 (Metric) | 典型应用场景 | 优先级 |
---|---|---|
0 - 100 | 有线以太网、高性能连接 | 非常高 |
100 - 500 | 无线Wi-Fi、常规连接 | 高 / 中等 |
500 - 2000 | 移动网络(WWAN)、VPN隧道 | 较低 |
2000+ | 备份链路、低质量网络 | 低 |
注意:同一路由目的地的多条路径,系统总是优先选择 Metric 值最小的那条。
配置完成后,使用以下命令验证路由优先级是否生效:
ip route show default
或者查看完整路由表:
ip route show table all
输出中将明确显示每条路由的 metric 值,值最小的即为优先级最高的默认路由。
总结来说,在 Linux 中设置网卡优先级的本质是操纵路由表及其度量值。您可以根据系统使用的网络管理工具(iproute2、Netplan、NetworkManager)选择最适合的方法进行配置。
查看详情
查看详情