Linux
基於 ubuntu 13.10 的 linux 網橋的其他埠上不存在 ARP 響應
我最近建構了基於 linux 的網橋用於數據包監控,但存在很大的問題。
環境是,
- 整體環境
- 監控目標是 vSphere 上的虛擬機。
- vSphere 主機上配置了兩個 vSwitch。
- vSwitch 1 配置了 NIC,用於外部網橋通信。
- vSwitch 2 配置為沒有用於橋接虛擬機連接的 NIC。
- 兩者都配置為“允許混雜模式”。
- 環境。的橋樑。
- 基於 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 有關。)
- https://communities.vmware.com/message/1509541#1509541
- 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 表,現在讓我來看看。
感謝閱讀並希望能幫助您解決同樣的問題!