我运行的是 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)较低。
但在第二个示例中,您重新添加了路由,但未指定度量,因此它被视为具有度量零,即最高优先级。