在Linux上,ARP请求数据包通过哪个接口发出?

问题描述

我有一台Linux计算机,该计算机具有两个接口,这些接口的IPv4地址属于同一子网。在我的应用程序中,我创建了两个套接字(AF_INET,SOCK_DGRAM),将它们绑定到相应的接口IP地址,并使用具有相应接口名称的SO_BINDTODEVICE套接字选项。理解是,当我通过每个套接字发送UDP单播数据包时,它会通过相应的NIC发出出去。 (请参阅Linux: Bind UDP listening socket to specific interface (or find out the interface a datagram came in from)?)。

我的查询是关于实际UDP数据包之前的ARP请求的。 SO_BINDTODEVICE是否也确保ARP请求通过负责生成ARP的套接字绑定到的同一NIC发出?还是仅取决于目标IP地址?

此信息对我来说很重要,因为主机的两个NIC连接到由两个交换机管理的两个独立的网络。因此,如果主机A要与主机B的第二个地址通信,则数据包(UDP和ARP)必须通过A的第二个NIC发出。

PS:我知道,如果我仅将两个不同的子网用于两个网络,问题就会消失。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)