Linux 上的網路路由問題
我希望那裡的人能夠看到這個並讓我知道我錯過了什麼。我有 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 永遠
好吧,您已經打折了防火牆,所以…
以我極其有限的網路知識,我能想到的唯一事情是:
- mach01/03/04 上的廣播地址錯誤。
- 路由順序混亂 - 在上面的範例中,第 3 個條目與第 1 個條目的範圍重疊。所有機器上路由條目的順序是否相同?也許有些機器在錯誤的網路上進行arp-ing。
‘arping’ 是否從 01/03/04 到 02 工作,或者他們是否根據來自 02 的傳入廣播數據包更新他們的 arp 記憶體?
有點奇怪,開始時我會嘗試在 mach01、mach02 和 mach03 上執行 tcpdump,以查看當您嘗試 ping mach01 時,mach01 和 mach02 是否從 mach03 獲取 ARP 請求,如果它正在回复(對於 mach03),等等
。你知道主機之間是否可以有透明防火牆?這可以解釋你所看到的。
什麼是網路拓撲?主機之間有很多切換還是只有一個?什麼樣的開關?