Windows 10 如何在路由表中找到路由规则?

Windows 10 如何在路由表中找到路由规则?

考虑以下路由表:

Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.8.1      192.168.8.2     2
          0.0.0.0        128.0.0.0         10.20.20.1        10.20.20.35      6

ip“8.8.8.8”选择了哪条路由规则?Windows 是选择第一个匹配的规则(底部规则)还是选择度量值最低的规则(第一个规则)?

答案1

都不是。IP 使用“最长前缀匹配”路由 - 在所有匹配的路由中,网络掩码中“1”位最多的路由(即最具体路线)被选择。

仅当多个具有相同网络掩码的路由与目的地匹配时,才会比较它们的成本指标,并选择具有最低指标的路由。

因此,如果您的目的地是 8.8.8.8,则两条路由都会匹配,但网络掩码为 128.0.0.0 的路由将具有优先权,因为它具有更多网络掩码“1”位(即更长的匹配前缀)。不使用度量​​。

答案2

最下面的规则将被选中。该指标并不重要,因为只有这一条规则匹配。

仅当找到与 IP 地址匹配的多个规则时才会参考度量,但此处只有一条规则匹配。默认路由无法匹配任何内容,因此不计算在内。

微软的文章 公制 解释何时考虑度量:

Metric 指定用于区分具有相同前缀长度的多条匹配路由的接口度量。如果多条路由前缀与数据包目的地匹配,则优先选择前缀长度最长的路由。如果存在多个具有相同前缀长度的匹配路由,则使用具有较低度量的路由


但是,我对本文中给出的示例的可行性有些怀疑。正如下面的用户 1686 所指出的,这套规则可能不完整。

最底下的规则很奇怪,因为当它的接口地址与网络掩码相交时,结果只给出一个零。这一点与我见过的任何其他示例都不同,在这些示例中,相交总是给出一些非零数字。

相关内容