直接修改网卡配置文件中的ipv4_route_metric值(数值越小优先级越高),并重启网络服务或对应网卡方可永久生效;该参数由ifup脚本解析,仅影响本网卡生成的默认路由,需确保已配置gateway,且避免networkmanager覆盖,验证须用ip route命令查看metric是否正确写入。

直接改网卡配置文件里的 IPV4_ROUTE_METRIC 就行,数值越小优先级越高,改完必须重启网络服务或对应网卡,否则不生效。
为什么改 IPV4_ROUTE_METRIC 而不是用 route 命令
因为 route add 或 ip route replace 加的路由是临时的,系统重启、网卡重载、NetworkManager 重连都会丢失。CentOS 7 默认用 network 服务(或 NetworkManager)管理网卡,它会读取 /etc/sysconfig/network-scripts/ifcfg-* 里的 IPV4_ROUTE_METRIC 并自动注入路由表,这才是永久生效的路径。
-
route命令操作的是内核路由表,不写入配置,适合调试或应急 -
IPV4_ROUTE_METRIC是 RHEL/CentOS 7+ 特有的网卡级配置项,由 ifup 脚本解析并生成带 metric 的路由 - 如果同时用了 NetworkManager 和传统 network 服务,优先确认当前启用的是哪个(
systemctl status NetworkManagervssystemctl status network),二者冲突会导致 metric 不生效
IPV4_ROUTE_METRIC 怎么写才有效
编辑对应网卡的配置文件,比如 /etc/sysconfig/network-scripts/ifcfg-ens192,在末尾添加一行:
IPV4_ROUTE_METRIC=20
注意几个关键点:
- 值必须是纯数字,不能带引号或空格,例如
IPV4_ROUTE_METRIC="20"会失败 - 该参数只影响本网卡生成的默认路由(
default via ...),不影响静态路由或直连路由 - 如果网卡没配
GATEWAY,IPV4_ROUTE_METRIC不起作用——因为没默认路由可设 metric - 多个网卡都设了 metric,系统按数值从小到大选默认出口;若数值相同,则按网卡加载顺序或路由添加时间决定,不可控
改完之后怎么验证是否生效
不要只看 route -n,它不显示 metric 列;要用 ip route:
ip route show default
输出类似:
default via 192.168.10.1 dev ens192 proto static metric 20
如果看到 metric 20,说明已生效。再对比另一块网卡(如 ens224)的默认路由 metric,确认优先级关系符合预期。
- 如果没出现 metric,检查:
systemctl restart network(或ifdown ens192 && ifup ens192),而不是只 reload - 如果仍无效,运行
nmcli connection show ens192 | grep ipv4.route-metric,确认 NetworkManager 没覆盖配置(它会把IPV4_ROUTE_METRIC当作ipv4.route-metric导入) -
ip route输出里 metric 为 0 的默认路由,往往是 DHCP 自动获取的,此时需在 DHCP 客户端配置中禁用默认网关,或改用静态配置
metric 看似只调一个数字,但实际影响的是整个出向流量路径——尤其是多网卡出口、内外网分离、或需要特定网卡响应外部请求时,错配会导致连接超时、回程路径不对、甚至 SSH 断连。务必在修改后用真实业务流量(不只是 ping)验证双向通路。











