You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux路由无metric时的优先级问题:是系统特性还是网络标准?

无Metric路由优先级低于数值Metric的原因分析

嘿,这个问题我之前排查过类似的,正好可以给你捋清楚:

一、为什么会出现这个现象?

Linux的路由选路逻辑是优先选择metric值最小的路由(metric代表选路代价,值越小,优先级越高)。而这里的关键误区是:未显式指定metric的路由,并不会默认等同于metric 0,它的实际metric值是继承自对应网络接口的metric属性。

举个实际例子:

  • 你用ip route add 10.0.0.0/8 dev eth0添加路由时,没指定metric,这条路由会自动使用eth0接口的默认metric值(大多数系统里默认是100)。
  • 如果你手动添加另一条路由ip route add 10.0.0.0/8 dev eth1 metric 50,那这条metric 50的路由代价更低,会被优先选用。

如果你遇到“无metric的路由优先级比任何数值型metric都低”的情况,大概率是你手动指定的所有数值metric都小于对应接口的默认metric值。反过来,如果你手动指定一个比接口默认值更大的metric(比如metric 200),那未指定metric的路由反而会优先生效。

另外要注意:Linux里metric 0是合法的,你可以手动设置ip route add 10.0.0.0/8 dev eth0 metric 0来让这条路由优先级最高,但这必须显式指定,内核不会自动给未指定metric的路由分配0值。

二、这是Linux特有还是通用标准?

这是Linux特有的实现细节。

TCP/IP相关的RFC标准(比如RFC 1812)只定义了路由metric的核心概念——作为选路代价,值越小越优先,但完全没有规定“未指定metric的路由应该使用什么默认值”。不同操作系统的实现差异很大:

  • 比如BSD系统中,未指定metric的路由默认metric就是0,优先级最高;
  • Windows系统中,未指定metric的路由会继承接口metric,但接口的默认metric是根据带宽自动分配的(带宽越高,metric越小);
  • 只有Linux(基于iproute2工具集的现代实现)会将未指定metric的路由绑定到接口的默认metric(通常为100),且不会自动设为0。

内容的提问来源于stack exchange,提问作者rsuarez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:40:23