2014-11-24 104 views
0

我的Linux(Debian)服务器具有eth0和eth1,并且两者在同一个子网上。 它从两个接口接收数据包,但它只从eth0进行回复。 发送到eth1的包从eth0回复,并且回复包含eth0的src mac和eth1的src IP。 我通过在Linux服务器上运行tcpdump时向eth1发送ping来验证此情况。Linux从一个接口的源IP发送数据包,但发送另一个接口的源MAC

这是一个问题,因为: 由于没有数据包与eth1的源mac(除了初始arp)一起发送,交换机会忘记eth1 mac。然后,交换机接收到eth1目标mac的每个数据包为broadcasted across the network, flooding it,这让我们感到悲伤。

我想: 我的Linux服务器从eth0和eth1发出数据包。我认为最好的解决方案是我们获得每个数据包,我们从相同的接口回复。另一种解决方法是我想将每个接口绑定到它的IP和MAC,这样它就只会发送来自这些地址的数据包。

更多详细信息: 我的Linux服务器是一个ISCSI目标,与一个作为ISCSI启动器的ESX进行通信 - 尽管是一个Cisco交换机。 5分钟后交换机会忘记MAC,并且ESX可能会记住它们20分钟(如讨论的herehere)。因此,当ESX记住Linux的mac时,ESX不断发送网络泛洪的ISCSI请求,而我的服务器只通过其中一个接口发送ISCSI响应。

+0

您是否研究过绑定接口? (或者,如果您不关心吞吐量,将两个ips分配给一个接口) – 2014-11-24 18:27:36

+0

@thatotherguy,我希望我的客户能够选择eth0和eth1是否在同一个子网上。而且,我写的解决方案(如果存在的话)将允许我们其余的代码保持原样,这很好。 Still- [bonding](https://www.corelan.be/index.php/2007/08/21/bind-network-interfaces-on-linux-for-redundancy-load-balancing-and-performance/)是一个很好的方向,谢谢 – Hibuki 2014-11-26 14:49:55

回答

0

这不是你问什么,但如果你只是设置上做了

ping -c 1 -I eth1 <address of eth1's default gateway> 

每分钟框中cron作业,那么你就必须离开eth1的每分钟至少一个包eth1的MAC地址就在它上面。 -I告诉ping绑定到特定的接口,所以即使这是首选路由,也不会使用eth0。

+0

谢谢,作为解决方法,我做了类似的事情:我[发送arp](http://serverfault.com/questions/175803/how-to-broadcast-arp-更新到所有邻居在Linux中)每分钟通过cron。 – Hibuki 2014-12-20 14:53:58

相关问题