Networking
路由表是按哪個順序分析的?
在我的 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的策略路由》一書非常詳細地解釋了這一切。