Linux
Linux橋在錯誤的介面上響應arp?
我正在嘗試建立一個無聲的橋樑來進行監控。我的電腦執行的是 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 介面會在幾毫秒後響應,但事實並非如此……我該如何解決這個問題?
除了使用 /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
就個人而言,我認為這在概念上簡化了一些,因為介面直接在橋上。