在Linux主机中,来自同一networking的多个网卡对单个MAC进行响应

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请求仅在它们到达的接口上被响应