Linux

Linux 上的網路路由問題

  • August 19, 2009

我希望那裡的人能夠看到這個並讓我知道我錯過了什麼。我有 4 台機器,出於某種原因,其中只有 1 台可以通過它們的私有 IP 地址(在 eth1 上)與另外 3 台通信。

這4台機器是:

mach01 10.176.193.17
馬赫02 10.176.193.92
馬赫03 10.176.193.27
馬赫04 10.176.195.9

所有的機器都是 Debian lenny。從mach02 可以ping 其他3 台機器沒問題,從其他機器可以ping 通mach02。但是,從 mach01、mach03 和 mach04 我只能 ping mach02。

所有機器上“iptables –list”的結果是:

鏈輸入(策略接受)
目標 prot opt 源目標

Chain FORWARD(政策接受)
目標 prot opt 源目標

鏈輸出(策略接受)
目標 prot opt 源目標

所以我不相信有防火牆問題。所有機器上 eth1 的路由表是:

10.176.192.0 * 255.255.224.0 U 0 0 0 eth1
10.191.192.0 10.176.192.1 255.255.192.0 UG 0 0 0 eth1
10.176.0.0 10.176.192.1 255.248.0.0 UG 0 0 0 eth1

所以看起來也不錯。由於某種原因,從 mach03 到 mach02 以外的任何地方的 ARP 請求都失敗了,對於其他機器也是如此。

mach03$ arping -c 1 -I eth1 10.176.193.17
ARPING 10.176.193.17

--- 10.176.193.17 統計 ---
發送 1 個數據包,接收 0 個數據包,100% 未應答

我看不出 ARP 會像這樣失敗的任何原因,並且已經沒有想法和地方可以查看。在網路故障排除方面有更多經驗的其他人有什麼想法嗎?

謝謝

編輯

嘗試從 mach03 ping mach01 後,ARP 記憶體中出現以下內容:

$ arp -a
? (10.176.193.17) 在 eth1 上的 <incomplete>
? (67.23.45.1) 在 00:00:0C:07:AC:01 [ether] 在 eth0

反之亦然(從 mach03 到 mach01):

? (10.176.193.92) 在 40:40:FA:77:D7:94 [ether] 在 eth1
? (10.176.193.27) 在 eth1 上的 <incomplete>
? (67.23.45.1) 在 00:00:0C:07:AC:01 [ether] 在 eth0

以及有關 eth1 的更多詳細資訊:

$ ip addr 顯示 dev eth1
3: eth1: mtu 1500 qdisc pfifo_fast 狀態 UNKNOWN qlen 1000
連結/乙太 40:40:16:e0:f3:dd brd ff:ff:ff:ff:ff:ff
inet 10.176.193.17/19 brd 10.176.223.255 範圍全域 eth1
inet6 fe80::4240:16ff:fee0:f3dd/64 範圍連結
valid_lft 永遠首選_lft 永遠

好吧,您已經打折了防火牆,所以…

以我極其有限的網路知識,我能想到的唯一事情是:

  1. mach01/03/04 上的廣播地址錯誤。
  2. 路由順序混亂 - 在上面的範例中,第 3 個條目與第 1 個條目的範圍重疊。所有機器上路由條目的順序是否相同?也許有些機器在錯誤的網路上進行arp-ing。

‘arping’ 是否從 01/03/04 到 02 工作,或者他們是否根據來自 02 的傳入廣播數據包更新他們的 arp 記憶體?

有點奇怪,開始時我會嘗試在 mach01、mach02 和 mach03 上執行 tcpdump,以查看當您嘗試 ping mach01 時,mach01 和 mach02 是否從 mach03 獲取 ARP 請求,如果它正在回复(對於 mach03),等等

。你知道主機之間是否可以有透明防火牆?這可以解釋你所看到的。

什麼是網路拓撲?主機之間有很多切換還是只有一個?什麼樣的開關?

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