Linux

ARP 在同一網路上具有多個介面的 Linux 伺服器上以單個 MAC 地址響應

  • March 6, 2014

Linux 伺服器有 2 個活動網路介面:

IF:eth1    IP:192.168.1.1/24    MAC:11:11:11:11:11:11   (1GbE)
IF:eth2    IP:192.168.1.2/24    MAC:22:22:22:22:22:22   (10GbE)

這個想法是 10GbE 介面 (eth2) 是與網路上的主機通信的主要介面。我想保留第二個 1GbE 介面 (eth1) 作為故障保護。如果 10GbE 介面出現故障:我仍然可以輕鬆進入,可以更新 DNS,以便主機可以連接等。

在觀察介面統計資訊時,我注意到所有流量都在 eth1 而不是 eth2 上發送/接收,儘管網路上的所有主機都在定址這個介面。我確認 DNS A 記錄指向正確介面的 IP。此外,我確認通過 IP 而不是 FQDN 定址介面會產生相同的結果。

我清除了機器上的 ARP 記憶體,並通過 IP 地址 ping 了 eth1 介面。我檢查了我的 ARP 表並找到了 eth1 的 MAC 地址。我再次清除了 ARP 記憶體,並通過 IP 地址 ping 了 eth2 介面。再次,我檢查了我的 ARP 表並找到了 eth1(不是 eth2)的 MAC 地址。

如果我關閉 eth1、物理斷開介面或將其放在不同的邏輯網路上 - 我會得到預期的行為,流量會通過我的 eth2 介面。

我的問題:為什麼會發生這種情況?我看到一些證據表明,由於其“弱主機模型”,這是 linux 核心上的預期行為。

我怎樣才能在同一個網路上保持兩個介面正常執行,並讓它們以我期望的方式工作。

Linux 旨在響應任何介面上的 ARP 請求。假設主機擁有 IP 地址而不是特定介面。您所看到的稱為 ARP Flux。

您可以使用 sysctrl 更改此行為

arp_ignore - 整數

定義不同的模式來發送回復以響應接收到的解析本地目標 IP 地址的 ARP 請求:

0 -(預設):回復任何本地目標IP地址,在任何介面上配置

1 - 僅當目標 IP 地址是傳入介面上配置的本地地址時才回复

2 - 僅當目標 IP 地址是在傳入介面上配置的本地地址並且與發送者的 IP 地址都來自該介面上的同一子網時才回复

3 - 不回複使用範圍主機配置的本地地址,僅回復全域和連結地址的解析

引用自:https://serverfault.com/questions/580160