为什么 Linux 会对与 LAN 路由匹配的数据包生成 ARP 广播?

为什么 Linux 会对与 LAN 路由匹配的数据包生成 ARP 广播?

我有两个物理设备,一个路由器和一个接入点,都安装了 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,然后该设备将处理到其他网络的路由。

相关内容