Routing
如何強制主機不為自己子網中的 IP 地址發送廣播?
對於 LAN,而不是交換機,我建構了一個拓撲,其中每台機器都連接到路由器。從 10/8 開始為每個主機分配一個 IP 地址。以下是介面詳細資訊:
假設我從該主機 ping 10.16.0.3。10.16.0.2 的路由表已配置為使用路由器 (10.16.0.1) 作為預設網關。但由於目標 IP 地址 (10.16.0.3) 在同一子網中,它會發出 ARP 廣播。我想禁用發送 ARP 廣播的這種行為,而是強制它使用路由表。我該如何做到這一點?
有兩種方法可以實現這一點。第一種很不正常,容易引起怪異,所以第二種比較好。
方法一(不推薦)
典型的路由表如下所示:
% ip route 10.23.11.0/24 dev wlan0 proto kernel scope link src 10.23.11.209 default via 10.23.11.1 dev wlan0 proto static
它告訴核心 10.23.11.0/24 中的目的地直接連接到 wlan0,其他一切都必須通過 10.23.11.1 的路由器。這是第一條路由,它告訴核心執行 ARP 請求並直接發送數據包。如果你刪除它,那麼一切都應該通過路由器。不過,此路由是預設配置的,因此您需要在某處顯式刪除它。您最終的路由表應如下所示:
% ip route default via 10.23.11.1 dev wlan0 proto static
方法二(推薦)
更好的方法是將每台機器放在自己的子網中,這樣每個子網都是一個乙太網域(通常應該是這樣)。為此,您可以為每台機器分配一個 /30 子網,路由器採用其中一個 IP。您的網路將如下所示:
(machine1) 10.0.0.2/30 <-------> 10.0.0.1/30 (router) 10.0.0.5/30 <--------> 10.0.0.6/30 (machine2)