這個問題也可以結合主機路由表及主機發送資料包的過程進行理解。總體結論:1.只要本機路由表有目的地址匹配項,該資料包就會被送出去;2.閘道器地址在Linux中必須對應一條型別為scope link的路由表項,在進行ARP廣播時根據該表項選擇進行arp廣播的介面。為了簡化和直觀顯示結果,我直接啟動了一臺virtualbox虛擬機器,虛擬機器裡安裝了ubuntu 14.04,並透過NAT和主機相連(NAT介面的原理和PPPOE一致)。同時主機還有一個內網介面。步驟一:初始預設情況,主機自動獲得IP10.0.2.15/24和閘道器10.0.2.2一個網段,如果輸入ip route命令,結果如下,ping閘道器正常能通;步驟二:主機地址手動設為10.0.1.2/32,ping閘道器依舊能通;ip route命令返回的主機路由表步驟三:刪除所有路由,只新增default 路由,不能直接新增,提示Network is unreachable。步驟四:多個介面同一個相同的閘道器地址,路由表配置優先選擇不和閘道器直連線口,此時ping 10.0.0.2不通ip route清空arp 表ping 10.0.0.2不通原因:進行arp廣播根據metric 1的路由表選擇僅從eth1介面廣播,不會在所有介面上都廣播,然而閘道器實際和eth0相連,所以收不到arp應答,無法ping 通。注:注意到測試過程中有時閘道器主動透過eth0發來arp訊息,系統會自動把eth1的表項刪除。此時又可以ping通了。參考:How to clear the ARP cache on Linux? - Linux Auditarp requesting to another subnet, how?
這個問題也可以結合主機路由表及主機發送資料包的過程進行理解。總體結論:1.只要本機路由表有目的地址匹配項,該資料包就會被送出去;2.閘道器地址在Linux中必須對應一條型別為scope link的路由表項,在進行ARP廣播時根據該表項選擇進行arp廣播的介面。為了簡化和直觀顯示結果,我直接啟動了一臺virtualbox虛擬機器,虛擬機器裡安裝了ubuntu 14.04,並透過NAT和主機相連(NAT介面的原理和PPPOE一致)。同時主機還有一個內網介面。步驟一:初始預設情況,主機自動獲得IP10.0.2.15/24和閘道器10.0.2.2一個網段,如果輸入ip route命令,結果如下,ping閘道器正常能通;步驟二:主機地址手動設為10.0.1.2/32,ping閘道器依舊能通;ip route命令返回的主機路由表步驟三:刪除所有路由,只新增default 路由,不能直接新增,提示Network is unreachable。步驟四:多個介面同一個相同的閘道器地址,路由表配置優先選擇不和閘道器直連線口,此時ping 10.0.0.2不通ip route清空arp 表ping 10.0.0.2不通原因:進行arp廣播根據metric 1的路由表選擇僅從eth1介面廣播,不會在所有介面上都廣播,然而閘道器實際和eth0相連,所以收不到arp應答,無法ping 通。注:注意到測試過程中有時閘道器主動透過eth0發來arp訊息,系統會自動把eth1的表項刪除。此時又可以ping通了。參考:How to clear the ARP cache on Linux? - Linux Auditarp requesting to another subnet, how?