Linux

基於 ubuntu 13.10 的 linux 網橋的其他埠上不存在 ARP 響應

  • May 29, 2020

我最近建構了基於 linux 的網橋用於數據包監控,但存在很大的問題。

環境是,

  1. 整體環境
  • 監控目標是 vSphere 上的虛擬機。
  • vSphere 主機上配置了兩個 vSwitch。
  • vSwitch 1 配置了 NIC,用於外部網橋通信。
  • vSwitch 2 配置為沒有用於橋接虛擬機連接的 NIC。
  • 兩者都配置為“允許混雜模式”。
  1. 環境。的橋樑。
  • 基於 ubuntu 13.10,作為最小虛擬機安裝。
  • br0 配置了 eth0(到 vS1)和 eth1(到 vS2)

我的問題是,當 VM ping 到 GW 時,發出了 ARP 請求並且有來自 GW 的響應。但響應數據包僅在 eth0 和 br0 上顯示。

superhero@vim-firewall:~$ sudo tcpdump -i eth0 -n host 192.168.10.172
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:13:45.809949 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
12:13:45.810060 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
12:13:45.810742 ARP, Reply 192.168.10.1 is-at 00:00:aa:aa:aa:d9, length 46
...
superhero@vim-firewall:~$ sudo tcpdump -i br0 -n host 192.168.10.172
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:13:51.810928 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
12:13:51.811031 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
12:13:51.811579 ARP, Reply 192.168.10.1 is-at 00:aa:aa:aa:aa:d9, length 46
...
superhero@vim-firewall:~$ sudo tcpdump -i eth1 -n host 192.168.10.172
tcpdump: WARNING: eth1: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
12:13:57.812937 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
12:13:57.813040 ARP, Request who-has 192.168.10.1 tell 192.168.10.172, length 46
...

我需要幫助!

PS。目前,只有 ARP 是問題。如果我手動添加 GW 的 MAC,網路連接很好,除了訪問本地子網的原因。

哎呀!我終於找到了可行的解決方案!

我花了大約 10 多個小時在三天內解決這個問題,但解決方案並不干淨,更接近解決方法。我需要真正的解決方案或更好的解決方法。請幫忙。

無論如何,我從 vmware cummunity 找到了以下資訊。(問題的根本原因與 vmware 有關。)

  1. https://communities.vmware.com/message/1509541#1509541
  2. https://communities.vmware.com/message/2208190#2208190

URL (1) 是有相同問題的原作者對問題原因的評論。 問題是由 vSwitch 的行為引起的。如果連接了兩個或更多物理網卡,它們會發出重複的 ARP 請求,Linux 網橋會收到來自外部網卡/埠的 dup.ed 請求。所以它陷入了MAC埠映射的混亂。

我對此進行了測試(從 vSwitch 分離備用 NIC),然後網路工作正常。(使用單網卡 vSwitch)

另一條評論 URL 編號 (2) 描述了一種解決方法。如果我從 linux 網橋將老化時間設置為 0,它作為虛擬集線器工作(將所有數據包發送到所有埠),因此 ARP 響應到達內部網路上的 VM。

就我而言,我的網橋只有兩個埠用於內部和外部連接,所以恕我直言,這不是一個大問題。但有一點不清楚。

如果有辦法阻止來自備用網卡的循環支持/重複請求,或者忽略重複請求或其他巧妙的方式來處理網橋的 MAC 表,現在讓我來看看。

感謝閱讀並希望能幫助您解決同樣的問題!

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