Linux

Linux橋在錯誤的介面上響應arp?

  • November 26, 2010

我正在嘗試建立一個無聲的橋樑來進行監控。我的電腦執行的是 linux 2.6,brctl 1.4,有 3 個網卡:

eth0,分配 IP,用於 SSH 維護

eth1,和 eth2,網橋 br0 的 2 個埠

全部設置在 etc/network/interfaces 中:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
       address 192.168.1.120
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.254

auto br0
iface br0 inet manual
       bridge_ports eth1 eth2
       bridge_maxwait 0
       bridge_stp off

這樣,eth0 和 eth1 都連接到我的本地網路。(eth2 連接到我的網關)但只有 eth0 有一個 IP 地址。

網橋工作得很好,我可以使用 tcpdump -i br0 或其他工具監控流量。

由於網橋沒有 IP 地址,它不應該發出任何流量。但是,它有時會響應 arp 請求,而不是 eth0。

假設 eth0 有 00:01:02:ab:00:00 和 eth1 有 00:01:02:ab:00:01 的mac地址:這是我在本地站執行wireshark得到的:

packet no time   source    dest   protocol info
   4303  1063.539943 00:01:02:ab:00:01 Giga-Byt_46:d9:fe ARP 192.168.1.120 is at 00:01:02:ab:00:01
   4305  1063.539958 00:01:02:ab:00:00 Giga-Byt_46:d9:fe ARP 192.168.1.120 is at 00:01:02:ab:00:00

由於我的“真實”IP 介面會在幾毫秒後響應,但事實並非如此……我該如何解決這個問題?

如果您要求網橋不響應 arp 請求,http: //kb.linuxvirtualserver.org/wiki/Using_arp_announce/arp_ignore_to_disable_ARP應該可以幫助您。

除了使用 /proc/*/arp_ignore 之外的另一個選擇是擺脫 eth0 介面並將 IP 地址放在網橋上:

auto br0
iface br0 inet manual
       bridge_ports eth1 eth2
       bridge_maxwait 0
       bridge_stp off
       address 192.168.1.120
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.254

就個人而言,我認為這在概念上簡化了一些,因為介面直接在橋上。

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