我有一个系统,其中的自定义硬件连接到同一系统上的 2 个不同以太网端口。接口配置在同一个子网上,因为硬件(基于 FPGA)具有与硬件配置关联的硬编码 IP 地址。我不希望配置对设备连接的端口敏感。
设备会响应计算机发出的 ARP 请求,如果只有一个设备,则一切顺利。但是,如果连接了两个设备,则第二个设备的 ARP 请求只会从第一个设备所连接的接口发出,因此无法通过标准套接字与该设备通信。
乍一看,这似乎是问题的反面看到这里。那里的解决方案似乎不起作用。
有什么建议可以让 Linux 通过同一子网上的所有接口发送特定子网上的 ARP 请求?
设置摘要:
eth2 - IP:192.168.1.102,子网:255.255.255.0,网关:192.168.1.0
eth3 - IP:192.168.1.103,子网:255.255.255.0,网关:192.168.1.0
设备 IP 地址:
192.168.1.2, 192.168.1.3
答案1
答案2
在这种奇怪的配置中,我只需手动配置 arp 和路由表。
ip neigh add to 192.168.1.2 dev eth2 lladdrr DEVICEMAC1 permanent
ip neigh add to 192.168.1.3 dev eth3 lladdrr DEVICEMAC2 permanent
ip route add to 192.168.1.2/32 dev eth2
ip route add to 192.168.1.3/32 dev eth3
用正确的 mac 地址替换设备MAC 1和 2.
答案3
我相信我之前的一个问题可能会有所帮助:在同一网络上具有多个接口的 Linux 服务器上,ARP 使用单个 MAC 地址进行响应
查看第一个回应。