路由表按什么顺序分析?

路由表按什么顺序分析?

在我的电脑上,我必须遵循以下路由表:

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0

我不明白它是如何分析的,我的意思是从上到下还是从下到上?

如果从上到下分析,那么即使 IP 目的地是 192.168.1.15,所有内容都将始终发送到我家的路由器;但我知道(错误地?)是,如果一台 PC 在我的同一个本地网络内,那么一旦我通过广播消息恢复了 MAC 目的地,那么我的 PC 就可以直接将消息发送到目的地。

答案1

路由表按照最具体到最不具体的顺序使用。

然而在 Linux 上它比你想象的要复杂一些。首先,路由表不只一个,何时使用哪个路由表取决于许多规则。

要获得完整的图片:

$ ip rule show
0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

$ ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table main
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

$ ip route show table default

$

local表是特殊的路由表,包含本地和广播地址的高优先级控制路由。

main表是包含所有非策略路由的普通路由表。如果您只是执行ip route show(或ip ro简称),这也是您可以看到的表格。我建议不要再使用旧route命令,因为它只显示main表格,并且其输出格式有些过时。

default如果先前的默认规则未选择数据包,则该表为空并保留用于后处理。

您可以添加自己的表并添加规则以在特定情况下使用这些表。一个示例是,如果您有两个 Internet 连接,但一台主机或子网必须始终通过一个特定的 Internet 连接进行路由。

Linux 策略路由本书非常详细地解释了这一切。

答案2

路由表通常按照从“最具体”到“最不具体”的顺序应用。0.0.0.0网络掩码为 的目的地0.0.0.0,即您的默认路由, 是最不具体的,因此总是最后应用。

如果您拥有本地网络上另一台 PC 的 MAC 地址,但该 PC 位于不同的子网上,则您可以为该 PC 添加特定的主机路由,并且可能会获得通信。

相关内容