考虑以下路由表:
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 所指出的,这套规则可能不完整。
最底下的规则很奇怪,因为当它的接口地址与网络掩码相交时,结果只给出一个零。这一点与我见过的任何其他示例都不同,在这些示例中,相交总是给出一些非零数字。