对于 LAN,我没有使用交换机,而是构建了一个拓扑,其中每台机器都连接到路由器。每个主机都分配了一个 10/8 的 IP 地址。以下是接口详细信息:
假设我从此主机 ping 10.16.0.3。10.16.0.2 的路由表已配置为使用路由器 (10.16.0.1) 作为默认网关。但由于目标 IP 地址 (10.16.0.3) 位于同一子网中,因此它会发出 ARP 广播。我想禁用发送 ARP 广播的行为,而是强制它使用路由表。我该如何实现?
答案1
实现这个有两种方式,第一种很不正常,容易引起怪异,所以第二种比较好。
方法 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 请求并直接发送数据包。如果您删除它,那么一切都应该通过路由器。不过,此路由是默认配置的,因此您需要在某处明确删除它。您的最终路由表应该如下所示:
% ip route
default via 10.23.11.1 dev wlan0 proto static
方法 2(推荐)
更好的方法是将每台机器放在自己的子网上,这样每个子网就是一个以太网域(通常应该是这样)。您可以通过为每台机器分配一个 /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)