![为什么 Linux 会对与 LAN 路由匹配的数据包生成 ARP 广播?](https://linux22.com/image/770869/%E4%B8%BA%E4%BB%80%E4%B9%88%20Linux%20%E4%BC%9A%E5%AF%B9%E4%B8%8E%20LAN%20%E8%B7%AF%E7%94%B1%E5%8C%B9%E9%85%8D%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E7%94%9F%E6%88%90%20ARP%20%E5%B9%BF%E6%92%AD%EF%BC%9F.png)
我有两个物理设备,一个路由器和一个接入点,都安装了 OpenWRT。
路由器有两个接口,一个是LAN口(192.168.1.1/24),一个是WAN口。AP也有两个接口,一个是LAN口(192.168.1.2/24),一个是WiFi口(192.168.2.1/24)。两个LAN口用网线连接。
在路由器上,设置WiFi的路由:
ip route add 192.168.2.0/24 via 192.168.1.1
192.168.2.1
当我在路由器上ping 时,我希望回显请求能够通过带有源 IP192.168.1.1
和目标 IP的线路传输192.168.2.1
,并且路由器会收到回显答复,但事实证明路由器会生成 ARP 广播,询问 MAC 地址,并将其192.168.2.1
发送到 AP 的 LAN 接口,然后被忽略。
我怎样才能使路由器按预期工作?
答案1
问题是您没有告诉路由器将数据包发送到哪里,发送到哪个可以访问该网络的设备。
您使用了无法访问网络的同一主机上的 IP ,因此您基本上是在告诉他将自己用作该网络的路由器,然后它通过具有您指定的本地 IP 的 NIC 发送 ARP,尝试找到与 192.168.1.1 NIC 连接到同一物理网络(交换机)的 IP192.168.2.0/24
的设备。192.168.2.1
如果您添加带有在 via 部分指定远程主机的路由,那么一切都应该正常工作。
ip route add 192.168.2.0/24 via 192.168.1.2
然后,您告诉路由器将需要进入192.168.2.0./24
网络的数据包发送到位于同一网络上的具有 IP 的设备192.168.1.2
,然后该设备将处理到其他网络的路由。