我的Linux(Debian)服务器有eth0和eth1,两者都在同一个子网上。 它从两个接口接收数据包,但它只回复eth0。 发送到eth1的数据包将从eth0回复,并且回复具有eth0的src mac和eth1的src IP。 我通过在Linux服务器上运行tcpdump时向eth1发送ping来验证这一点。
这是一个问题,因为: 由于没有使用eth1的源mac发送数据包(初始arp除外),交换机会忘记eth1 mac。然后,交换机收到的目标mac为eth1的每个数据包都是broadcasted across the network, flooding it,这让我们感到难过。
我想: 我的Linux服务器从eth0和eth1发送数据包。我认为最好的解决方案是,对于我们得到的每个数据包,我们都会从同一个接口回复。另一种说法是我想将每个接口绑定到它的IP和MAC上 - 这样它就只能从这些地址发送数据包。
更多细节: 我的Linux服务器是一个ISCSI目标,它与作为ISCSI发起者的ESX通信 - 虽然是Cisco交换机。交换机在5分钟后忘记了MAC,并且ESX可能会记住它们20分钟(如here和here所述)。因此,当ESX记住Linux的mac时,ESX会不断发送充斥网络的ISCSI请求,而我的服务器只通过其中一个接口发送ISCSI回复。
答案 0 :(得分:0)
这不是你要求的,但如果你只是在框上设置了一个cron作业
ping -c 1 -I eth1 <address of eth1's default gateway>
每分钟,那么每分钟至少有一个数据包,将eth1与eth1的MAC地址放在一起。 -I
告诉ping绑定到特定接口,因此即使它是首选路由,它也不会使用eth0。