Linux中用nmcli配置静态路由优先级的核心是设置ipv4.route-metric值,数值越小优先级越高;需配合nmcli connection modify修改连接度量、reload并重启连接,再通过ip route验证default路由及静态路由是否生效。

在 Linux 中用 nmcli 配置静态路由优先级,核心是控制不同网关的 route-metric(跃点数),数值越小,该连接的默认路由优先级越高。这适用于同时接入内外网、有线/无线双网卡等多网关场景,避免因默认路由冲突导致某网络不通。
查看当前连接与路由度量值
先确认系统中有哪些网络连接及其当前 metric:
- 列出所有连接:
nmcli connection show - 查看当前生效的默认路由及 metric:
ip route | grep default - 输出类似:
default via 192.168.1.1 dev eth0 proto dhcp metric 100default via 10.0.0.1 dev wlan0 proto dhcp metric 200
说明有线连接当前更优。
修改连接的 route-metric 值
为指定连接设置固定 metric,需在连接激活前或重载后生效:
- 以太网连接设为高优(如 metric=50):
nmcli connection modify "Wired connection 1" ipv4.route-metric 50 - Wi-Fi 连接设为次优(如 metric=150):
nmcli connection modify "MyWiFi" ipv4.route-metric 150 - 修改后必须重载并重启连接:
nmcli connection reload && nmcli connection down "Wired connection 1" && nmcli connection up "Wired connection 1"
配合静态路由实现精准流量分流
仅调 metric 只能控制“默认路由”走向;若还需让特定网段(如内网 10.10.0.0/16)强制走某网卡,则要加静态路由,并确保其不被 DHCP 覆盖:
- 禁用 DHCP 自动添加默认路由:
nmcli connection modify "Wired connection 1" ipv4.ignore-auto-routes yes - 手动添加内网静态路由(不带 metric,默认继承连接 metric):
nmcli connection modify "Wired connection 1" +ipv4.routes "10.10.0.0/16 10.10.1.1" - 其中
10.10.1.1是该网卡对应的内网网关,+表示追加而非覆盖 - 最后同样 reload + up 激活生效
验证与排错要点
配置完成后务必验证实际路由表是否符合预期:
- 执行
ip route,确认:
– 只有一条default via ... metric X(metric 最小者生效)
– 内网网段有独立10.10.0.0/16 via ... dev eth0条目
– 无重复或冲突的 default 条目 - 若仍走错网关,检查是否多个连接都启用了 DHCP 且未设
ignore-auto-routes,导致自动路由覆盖手动设置 - 注意:metric 仅影响同目标网络(尤其是 default)的选路,对直连网段或明确静态路由无效



















