Routing

如何強制主機不為自己子網中的 IP 地址發送廣播?

  • June 18, 2012

對於 LAN,而不是交換機,我建構了一個拓撲,其中每台機器都連接到路由器。從 10/8 開始為每個主機分配一個 IP 地址。以下是介面詳細資訊:

http://i45.tinypic.com/2vuc0f5.png

假設我從該主機 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)

引用自:https://serverfault.com/questions/399638