CentOS 主机配备多个 NIC。所有 NIC 都绑定到同一个子网(假设为 10.0.0.0/24)。它们的 IP 配置由 DHCP 服务器提供(作为保留)。
在尝试为属于某个特定 NIC(arp -a
来自 Windows 主机)的某个特定 IP 地址远程获取 ARP 条目时,我总是得到相同的 MAC 地址,它等于主机的第一个接口 MAC 地址(eth0),而不管真实的适配器的 MAC。例子:
adapter, ip, mac, arpcache entry:
eth0, 10.0.0.1, aa:aa:aa:aa:aa:00, aa-aa-aa-aa-aa-00
eth1, 10.0.0.2, aa:aa:aa:aa:aa:11, aa-aa-aa-aa-aa-00
eth2, 10.0.0.3, aa:aa:aa:aa:aa:22, aa-aa-aa-aa-aa-00
…
对于类似配置的 Windows 主机,我为不同的适配器获取不同的 MAC(根据适配器的配置)。
为什么 Linux 主机以单个 MAC 响应?为什么 Windows 主机的行为相反?这种行为的原因是什么?
如何配置当前主要的 Linux 发行版以响应不同的 MAC?我已经阅读了类似的主题Ubuntu Linux - multiple NICs, same LAN... ARP 响应总是发出单个 NIC,但建议的答案不适用于我的 CentOS 6.4 主机 - eth0 以上的适配器无法访问。
因为 IPv4 的 Linux 内核默认实现基于“弱主机模型”: http ://en.wikipedia.org/wiki/Host_model
您可以设置多个路由表,每个路由表都为适当的网关设置单独的默认值,并设置规则来告诉来自某些 ips 的流量使用适当的路由。
据我了解,您希望从获取请求的 NIC 传输 arp 回复?
将以下内容放入您的 /etc/sysctl.conf
然后运行
这些规则确保 arp 请求仅在它们到达的接口上得到响应