我的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分鐘(如討論的here和here)。因此,當ESX記住Linux的mac時,ESX不斷髮送網絡泛洪的ISCSI請求,而我的服務器只通過其中一個接口發送ISCSI響應。
您是否研究過綁定接口? (或者,如果您不關心吞吐量,將兩個ips分配給一個接口) – 2014-11-24 18:27:36
@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