如何强制主机不在自己的子网中为IP地址发送广播?

对于局域网,而不是交换机,我已经build立了一个拓扑结构,每台机器都连接到路由器。 每台主机都分配有一个10/8的IP地址。 以下是界面的详细信息:

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

比方说,我从这台主机ping 10.16.0.3。 10.16.0.2的路由表已configuration为使用路由器(10.16.0.1)作为默认网关。 但是由于目标IP地址(10.16.0.3)在同一个子网内,所以发送了一个ARP广播。 我想禁用发送ARP广播的这种行为,而是强制它使用路由表。 我如何做到这一点?

有两种方法来实现这一点。 第一个很不正常,很可能造成怪异,所以第二个更好。

方法1(不推荐)

典型的路由表如下所示:

% 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请求并直接发送数据包的第一个路由。 如果你删除它,那么一切都应该通过路由器。 这个路由是默认configuration的,所以你需要明确地将其删除。 你最终的路由表应该是这样的:

 % ip route default via 10.23.11.1 dev wlan0 proto static 

方法2(推荐)

更好的方法是将每台机器放置在自己的子网上,以便每个子网都是以太网域(通常应该是这样)。 你可以通过分配每台机器一个30分的子网,路由器select其中一个IP来做到这一点。 你的networking看起来像这样:

 (machine1) 10.0.0.2/30 <-------> 10.0.0.1/30 (router) 10.0.0.5/30 <--------> 10.0.0.6/30 (machine2)