linux中nmcli配置静态路由优先级的核心是设置ipv4.route-metric值,数值越小优先级越高,需配合ipv4.routes显式定义默认路由,并启用ipv4.ignore-auto-routes防止dhcp覆盖,重启连接后实现主备网关自动切换。

在 Linux 中用 nmcli 配置静态路由优先级(metric),核心是控制默认路由的“跃点数”:数值越小,该网关越优先;当主网关失效时,系统自动切换到 metric 更高的备用网关——这正是多网关自动备份的底层机制。
确认当前连接与默认路由状态
先看清现状,避免误操作:
- 列出所有网络连接名称:
nmcli connection show - 查看当前生效的默认路由及 metric:
ip route | grep default - 若输出中出现两条
default via ... metric N,说明已存在多默认路由,需立即修正(双默认路由会导致流量混乱)
为每个网卡连接设置唯一 metric 值
确保只有一个连接拥有最低 metric(如 100),其余设为更高值(如 200、300),且全部显式声明默认路由:
- 为主网卡(如 eth0)配置主默认路由:
nmcli connection modify "Wired connection 1" ipv4.routes "0.0.0.0/0 192.168.1.1" ipv4.route-metric 100 - 为备用网卡(如 wlan0)配置备用默认路由:
nmcli connection modify "MY_WIFI" ipv4.routes "0.0.0.0/0 192.168.5.1" ipv4.route-metric 200 - 关键:必须同时设置
ipv4.routes和ipv4.route-metric,仅改 metric 不添加 routes 不会生成默认路由
启用路由自动切换能力
metric 仅决定初始选路,要实现“主断即切”,还需保障两点:
- 禁用 DHCP 自动添加默认路由(防止覆盖手动配置):
nmcli connection modify "Wired connection 1" ipv4.ignore-auto-routes yesnmcli connection modify "MY_WIFI" ipv4.ignore-auto-routes yes - 重启连接使配置生效:
nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"nmcli connection down "MY_WIFI" && nmcli connection up "MY_WIFI" - 验证切换效果:拔掉主网线后执行
ip route | grep default,应看到 metric 200 的路由变为唯一 default 条目
补充:添加非默认静态路由(按需)
若还需访问特定内网段(如 172.16.0.0/16),可附加路由而不影响默认网关逻辑:
- 命令格式:
nmcli connection modify "Wired connection 1" +ipv4.routes "172.16.0.0/16 192.168.1.254" - 多个路由用分号分隔(避免 YAML 解析错误):
+ipv4.routes "172.16.0.0/16 192.168.1.254; 10.8.0.0/24 192.168.1.253" - 这类路由无需指定 metric,它们天然优先于默认路由(最长前缀匹配原则)











