为什么改变度量不会影响路由选择

为什么改变度量不会影响路由选择

我的默认路线有以下输出:

Kernel IP routing table Destination     Gateway         Genmask        Flags Metric Ref    Use Iface
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0

这里选择的路由是 8.8.8.8。到这里,没什么特别的。

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.167.1 (192.168.167.1)  0.326 ms  0.465 ms  0.527 ms
 2  192.168.1.254 (192.168.1.254)  1.409 ms  1.422 ms  1.429 ms

当我激活VPN时,路由变成:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.13       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
10.8.0.1        10.8.0.13       255.255.255.255 UGH   0      0        0 tun0
10.8.0.13       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.8.0.13       128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 tun0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
213.246.56.21   192.168.167.1   255.255.255.255 UGH   0      0        0 enp1s0

无论我为 tun0 metric 设置什么值:

sudo ifmetric tun0 3000

路线-n输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.13       128.0.0.0       UG    3000   0        0 tun0
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
10.8.0.1        10.8.0.13       255.255.255.255 UGH   3000   0        0 tun0
10.8.0.13       0.0.0.0         255.255.255.255 UH    3000   0        0 tun0
128.0.0.0       10.8.0.13       128.0.0.0       UG    3000   0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     3000   0        0 tun0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
213.246.56.21   192.168.167.1   255.255.255.255 UGH   0      0        0 enp1s0

选定的路由始终通过接口 tun0 :

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  10.8.0.1 (10.8.0.1)  28.510 ms  33.924 ms  33.941 ms
 2  ik056002.ikoula.com (213.246.56.2)  33.960 ms
...

为什么 ??

谢谢 !

答案1

路由从最具体到最不具体进行处理,如果有两个路由具有相同级别的具体性,则只检查度量。

您正在使用这种route -n格式,在我看来有点糟糕,如果您做一个,它会看起来更好,更明显,ip route show它的输出可能看起来像这样。

default via 192.168.167.1 dev enp1s0 metric 100
0.0.0.0/1 via 10.8.0.13 dev tun0 metric 3000
128.0.0.0/1 via 10.8.0.13 dev tun0 metric 3000
...

两条路由具有不同的特异性,因此度量无关紧要。 比路由/1更具体(多 1 位)/0

查看route -n输出时,必须记住必须考虑第一列和第三列。路由是网络地址面具。

相关内容