路由表是按什么顺序分析的?

zer*_*uno 24 networking table route

在我的 PC 上,我必须遵循路由表:

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
Run Code Online (Sandbox Code Playgroud)

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

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

wur*_*tel 27

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

然而,在 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

$
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

策略路由使用Linux本书解释了这一切,精致的细节。


roa*_*ima 5

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

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

  • @Celada 我没有提到“相同特定”路线的指标。然后是策略路由。至少目前,我_通常_支持。 (2认同)
  • @NK-cell 我们正在进入深水领域。考虑一台通过有线连接到本地网络并无线连接到同一本地网络的计算机。想象一下计算机有 192.168.1.45(有线)和 192.168.1.46(无线)。对于名为 192.168.0.0/16 的示例,这两个地址将引用同一网关。为了确保(更快?)有线网络优先,路由表中通过 192.168.1.45 的路由的度量值低于通过 192.168.1.46 的路由的度量值。两条相同的特定路线,其中一条优先于另一条。这对你有帮助吗? (2认同)