ipv4_route_metric 是 centos 7 中控制单网卡路由优先级最直接、最可靠的方式,因其写入网卡配置文件(如 /etc/sysconfig/network-scripts/ifcfg-ens33)后随网络服务重启永久生效,避免了 route 或 ip route 临时命令重启丢失、route 命令已废弃、static-routes 文件不被 networkmanager 识别等问题;数值越小优先级越高,多网卡场景下主出口建议设 0 或 10,备用设 100 或更高,并需执行 systemctl restart network 生效。

IPV4_ROUTE_METRIC 是 CentOS 7 中控制单网卡路由优先级最直接、最可靠的方式,不用动 route 命令或 ip rule,也不依赖已废弃的 /etc/sysconfig/static-routes。
为什么改 IPV4_ROUTE_METRIC 而不是用 route 或 ip route
临时命令如 ip route replace default via 192.168.10.1 dev ens33 metric 50 生效快,但重启就丢;route 命令在 CentOS 7+ 已被标记为 legacy,且不支持写入配置文件。真正持久生效的入口,是网卡配置文件里的 IPV4_ROUTE_METRIC 参数。
ifcfg-* 文件里怎么设 IPV4_ROUTE_METRIC
编辑对应网卡的配置文件,比如 /etc/sysconfig/network-scripts/ifcfg-ens33:
开箱即用的技能链路由引擎。13 条预定义链覆盖搜索、开发、审查、MLOps、法律、创意等场景,三层路由架构(触发词→SAD反馈→DAG编排),recall@10=96.97%。配置驱动(chains.yaml),零代码扩展。pip install skill-weave-chains 一键安装。
- 添加或修改这一行:
IPV4_ROUTE_METRIC=20 - 确保该网卡启用了 IPv4:
BOOTPROTO=static或BOOTPROTO=dhcp都可以,但必须有ONBOOT=yes - 如果同时配置了默认网关(
GATEWAY=...),它会自动参与主路由表(table 254)的 metric 计算 - 数值越小,优先级越高;多网卡场景下,建议主出口设
0或10,备用出口设100或更高
改完不生效?检查这三件事
常见失效原因不是配置错,而是没触发重载:
-
systemctl restart network是必须的,nmcli connection reload+nmcli connection down/up <conn-name></conn-name>也行,但别只 reload 不 restart - 确认网卡名和配置文件名严格一致:文件名是
ifcfg-ens33,就不能写成ifcfg-eth0或漏掉前缀 - 运行
ip route show看输出里每条路由末尾的metric N是否已更新——不是看route -n,它的Metric列在 CentOS 7+ 已不反映真实值
多个默认网关冲突时,metric 不够用怎么办
当需要基于源 IP 或目的网络分流(比如内网走 A 口、外网走 B 口),仅靠 IPV4_ROUTE_METRIC 无法解决。这时得用策略路由:
- 先在
/etc/iproute2/rt_tables添加自定义表名:100 table_a - 用
ip rule add from 192.168.10.100 table table_a绑定源地址 - 再用
ip route add default via 192.168.10.1 dev ens33 table table_a写入独立路由表 - 这些命令需写进
/etc/rc.d/rc.local(启用并加执行权限)或 NetworkManager dispatcher 脚本,才能持久
IPV4_ROUTE_METRIC 就能闭环。真正容易被忽略的是:metric 值只影响同一目标网络(尤其是 default)的选路,而不会改变已有静态路由的下一跳或设备绑定关系。










