Networking

路由表是按哪個順序分析的?

  • June 11, 2021

在我的 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

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

如果從上到下分析,那麼即使目標 IP 是 192.168.1.15,所有內容都將始終發送到我家的路由器;但我知道(錯誤地?)是,如果 PC 在我的同一個本地網路內,那麼一旦我通過廣播消息恢復 MAC 目的地,那麼我的 PC 可以直接將消息發送到目的地。

路由表按照最具體到最不具體的順序使用。

然而在 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的策略路由》一書非常詳細地解釋了這一切。

引用自:https://unix.stackexchange.com/questions/188584