CentOS主机装有多个网卡。 所有的网卡绑定到相同的子networking(让它是10.0.0.0/24)。 他们的IPconfiguration与DHCP服务器一起提供(作为保留)。
当试图远程获取属于某个特定网卡的某个特定IP地址(来自Windows主机的arp -a
)的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 …
对于类似configuration的Windows主机,我为不同的适配器获得不同的MAC(根据适配器的configuration)。
为什么Linux主机响应单个MAC? 为什么Windows主机的行为方式相反? 这种行为的原因是什么?
如何configuration当前的主要Linux发行版以使用不同的MAC进行响应? 我已经阅读了类似的话题Ubuntu的Linux – 多个网卡,相同的LAN … ARP响应总是出去一个网卡 ,但build议的答案不适用于我的CentOS 6.4主机 – 适配器以上的eth0变得无法访问。
由于Linux内核对IPv4的默认实现基于“弱主机模式”: http : //en.wikipedia.org/wiki/Host_model
您可以设置多个路由表,每个路由表都有相应网关的单独默认值,以及用于告知来自特定ips的stream量以使用适当路由的规则。
据我所知,你希望从获取请求的网卡传输ARP响应?
将以下内容放在/etc/sysctl.conf中
net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2
然后运行
sysctl -p
这些规则确保arp请求仅在它们到达的接口上被响应