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本书解释了这一切,精致的细节。
路由表通常按从“最具体”到“最不具体”的顺序应用。0.0.0.0
具有 网络掩码 的目的地0.0.0.0
,即您的默认路由,可能是最不具体的,因此将始终最后应用。
如果您有本地网络上另一台 PC 的 MAC 地址,但它位于不同的子网上,您可以为该 PC 添加特定的主机路由,您可能会获得通信。