为什么删除网关路由然后重新添加会使路由突然起作用?

为什么删除网关路由然后重新添加会使路由突然起作用?

我运行的是 Fedora 34,有 2 个以太网卡(我们称之为 eth0 和 eth1)。启动时的路由表如下所示:

$ sudo route
   default         _gateway        0.0.0.0         UG    0      0        0 eth0
   default         thor            0.0.0.0         UG    100    0        0 eth1
   10.0.0.0        0.0.0.0         255.0.0.0       U     101    0        0 eth0
   192.168.0.0     0.0.0.0         255.255.0.0     U     100    0        0 eth1

$ sudo ip route
default via 192.168.100.1 dev eth1 proto static metric 100
default via 10.100.0.1 dev eth0 proto static metric 101
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1 metric 101
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.100.1 metric 100

10.100.0.1 是我的路由器

当我 时ping yahoo.com,我会超时。

但是,如果我删除 eth0 默认值并使用相同的值重新添加它:

$ sudo route del default eth0
$ sudo route add default gw 10.100.0.1 eth0

现在 ping 可以正常工作了。

结果表:

$ sudo route
default         _gateway        0.0.0.0         UG    0      0        0 eth0
default         thor            0.0.0.0         UG    100    0        0 eth1
10.0.0.0        0.0.0.0         255.0.0.0       U     101    0        0 eth0
192.168.0.0     0.0.0.0         255.255.0.0     U     100    0        0 eth1

$ sudo ip route
default via 10.100.0.1 dev eth0
default via 192.168.100.1 dev eth1 proto static metric 100
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.1 metric 101
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.100.1 metric 100

这两条路线有何不同?一条可行,另一条则不可行。

答案1

目标 IP 地址匹配具有相同网络和前缀长度(default含义0.0.0.0/0)的路由。发生这种情况时,具有最低度量即成本最低的那个会被使用。

在第一个例子中,您根本没有使用 10.100.0.1 作为网关 - 它的度量为 101,因此操作系统会忽略它并使用 192.168.100.1 作为网关,因为它的度量(100)较低。

但在第二个示例中,您重新添加了路由,但未指定度量,因此它被视为具有度量,即最高优先级。

相关内容