Linux系统配置网络优先级
注:Linux中默认网关的优先级是由 “metric(度量值)” 决定,metric 数值越小,优先级越高
方法一、使用 nmcli 设置连接的 route-metric
- 适用于 NetworkManager 管理的网络连接(常见于桌面和 server GUI 环境)
# 设置以太网优先级为100
nmcli connection modify <eth-conn-name> ipv4.route-metric 100# 设置 WiFi 优先级为200
nmcli connection modify <wifi-conn-name> ipv4.route-metric 200# 重新激活连接使设置生效
nmcli connection down <conn-name> && nmcli connection up <conn-name>
- 可用以下命令查看当前所有连接名
nmcli connection show# 示例输出:# NAME UUID TYPE DEVICE
# MY_WIFI a8eb3f9e-a1db-43a2-8571-6c7a8b4e1099 wifi wlan0
# Wired connection 1 97eed963-5df8-3420-b992-9306744748bb ethernet eth0
# Wired connection 2 c3e841a6-03ca-38d6-b1d9-528fb5d0366f ethernet --
- 验证网络优先级是否生效
# 查看路由表中 default 条目的 metric 值ip route | grep default# 输出示例:(metric 值越小优先级越高,及第一条 default 路由优先级最高)# default via 192.168.1.1 dev eth0 proto dhcp metric 100# default via 192.168.1.1 dev wlan0 proto dhcp metric 200
方法二、Netplan 配置(Ubuntu 18.04+ 推荐)
- 打开并编辑网络配置文件,如果没有则手动创建
sudo vim /etc/netplan/01-netcfg.yaml
- 配置文件中添加以下内容(注意缩进格式保持一致)
network:version: 2renderer: networkd # 使用 systemd-networkd 管理网络ethernets:eth0:dhcp4: truedhcp4-overrides:use-routes: false # 禁止自动添加默认路由routes:- to: defaultvia: 192.168.1.1 # 这里填你的以太网网关IP,若DHCP自动分配网关,需先确认metric: 100wifis:wlan0:dhcp4: trueoptional: true # 无线设备设为可选,避免系统启动等待 WiFi 联网access-points:"你的WiFiSSID":password: "你的WiFi密码"dhcp4-overrides:use-routes: falseroutes:- to: defaultvia: 192.168.1.1 # 替换成你的WiFi网关IP,可能和eth0不同,确认后填写metric: 200 # 次优先级,eth0 断开时才启用# 配置说明:# use-routes: false 是为了避免 DHCP 自动添加默认路由# routes 中明确指定默认路由 (to: default)# metric 控制优先级:数值越小优先级越高
- 执行以下命令,保存并应用 Netplan 配置
sudo netplan apply# 可能会出现如下警告(不影响):# WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.# WARNING: systemd-networkd is not running, output will be incomplete.# Failed to reload network settings: No such file or directory# WARNING:root:Falling back to a hard restart of systemd-networkd.service# Netplan 检查 Open vSwitch(OVS),发现服务没在运行,如果没有使用 OVS 网络(多数不会用到)可以忽略该警告