1. 程式人生 > >ping 閘道器不同的原因

ping 閘道器不同的原因

網路工程師都會用到Ping,它是檢查路由問題的有效辦法。但也常聽工程師抱怨:不可能,怎麼會不通呢?

這樣的困惑一般發生在自認為路由設定正確的時候。舉幾個筆者遇到的問題,歡迎大家補充

最簡單的三種情況:

1.太心急。即網線剛插到交換機上就想Ping通閘道器,忽略了生成樹的收斂時間。當然,較新的交換機都支援快速生成樹,或者有的管理員乾脆把使用者埠(access port)的生成樹協議關掉,問題就解決了。

2.訪問控制。不管中間跨越了多少跳,只要有節點(包括端節點)對ICMP進行了過濾Ping不通是正常的。最常見的就是防火牆的行為。

3.某些路由器埠是不允許使用者Ping的。

還遇到過這樣的情形,更為隱蔽。



1.網路因裝置間的時延太大,造成ICMPecho報文無法在預設時間(2秒)內收到。時延的原因有若干,比如線路(衛星網時延上下星為540毫秒),路由器處理時延,或路由設計不合理造成迂迴路徑。使用擴充套件Ping,增加timed out時間,可Ping通的話就屬路由時延太大問題。

2.引入NAT的場合會造成單向Ping通。NAT可以起到隱蔽內部地址的作用,當由內Ping外時,可以Ping通是因為NAT表的對映關係存在,當由外發起Ping內網主機時,就無從查詢邊界路由器的NAT表項了。

3.多路由負載均衡場合。比如Ping遠端目的主機,成功的reply和timed out交錯出現,結果發現在閘道器路由器上存在兩條到目的網段的路由,兩條路由權重相等,但經查一條路由存在問題。


4.IP地址分配不連續。地址規劃出現問題象是在網路中埋了地雷,地址重疊或掩碼劃分不連續都可能在Ping時出現問題。比如一個極端情況,A、B兩臺主機,經過多跳相連,A能Ping通B的閘道器,而且B的閘道器設定正確,但A、B就是Ping不通。經查,在B的網絡卡上還設有第二個地址,並且這個地址與A所在的網段重疊。

5.指定源地址的擴充套件Ping。登陸到路由器上,Ping遠端主機,當ICMP echorequest從序列廣域網介面發出去的時候,路由器會指定某個IP地址作為源IP,這個IP地址可能不是此介面的IP或這個介面根本沒有IP地址。而某個下游路由器可能並沒有到這個IP網段的路由,導致不能Ping
通。可以採用擴充套件Ping,指定好源IP地址。

當主機閘道器和中間路由的配置認為正確時,出現Ping問題也是很普遍的現象。此時應該忘掉"不可能"幾個字,把Ping的擴充套件引數和反饋資訊、traceroute、路由器debug、以及埠映象和Sniffer等工具結合起來進行分析。

比如,當A、B兩臺主機經過多跳路由器相連時,二者閘道器設定正確,在A上可以Ping通B,但在B上不能Ping通A。可以通過在交換機做映象,並用Sniffer抓包,來找出ICMP報文終止於何處,報文內容是什麼,就可以發現ICMP報文中的源IP地址並非預期的那樣,此時很容易想象出可能是路由器的NAT功能使然,這樣就能夠逐步地發現一些被忽視的問題。而Ping不通時的反饋資訊是"destination_net_unreachable"還是"timedout"也是有區別的。