1,問題描述

如圖所示,其中R1和R2爲AR路由器,R3爲NE20E,R4爲NE40E。R2下建立一個LoopBack口,用於模擬下掛的終端網段。R4下建立一個LoopBack口,用於模擬下掛的終端網段。整網運行動態路由協議,通過修改cost等方法實現了指定流量走向爲R4-R3-R1-R2。最終目的是要求R2和R4的LoopBack口之間能夠互通,並且流量走向要符合設計,即爲R4-R3-R1-R2或R2-R1-R3-R4。

在R4上帶Loopback源地址能夠正常Ping通到R2的LoopBack地址,但是做tracert時,到達R1後,無法獲得R2的回應,回顯爲“* * *”。反過來,在R2上帶LoopBack源地址卻能夠正常tracert到R4的Loopback地址。

AR路由器缺省不處理TTL=1的ICMP報文導致tracert異常組網圖

2,處理過程

步驟 1 排查路由表和轉發表項。

先後分別使用過RIPv2和OSPF,效果都相同,而且通過逐跳查看目標爲R4的LoopBack地址和R2的LoopBack地址的路由走向,都是按照設計方案正常實現的。說明路由表項和轉發是正常的。

步驟 2 從R3開始做tracert。

由於每次tracert都是R1回顯正常,R2回顯爲“* * *”。所以爲了排查是否每次經過R1都會復現故障,於是從R3開始做tracert,目標地址依然是R2的LoopBack地址。

測試結果相同,R1回顯正常,R2回顯爲“* * *”。故障點排除掉R4,鎖定在R1上。

步驟 3 在R1和R2上分別執行命令display traffic policy statistics interface interface-type interface-number { inbound | outbound },在R1和R2兩臺路由器互連的接口上分別做流量統計。

其中interface interface-type interface-number爲與另一臺路由器相連的接口,inbound指定統計接口的入方向流量,outbound指定統計接口出方向的流量。最終統計結果爲:

R1:面向R2的接口出方向計數正常,入方向計數爲0。

R2:面向R1的接口入方向計數正常,出方向計數爲0。

由流統結果得出結論:R1正常將包轉發給R2,但是R2沒有做出回應。

3,根因

AR路由器上爲防止TTL攻擊,缺省情況下不處理TTL=1的ICMP報文。因爲ICMP屬於協議類報文,需要上送CPU進行處理,如果大量的ICMP上送CPU進行處理的話,可能會對設備處理性能造成影響。

而tracert包爲TTL=1的ICMP報文,所以當tracert包到達R2時,R2發現是TTL=1的ICMP報文,於是就將tracert包丟棄,不回應,這樣就會導致tracert異常。

4,解決方案

在R2的系統視圖下執行命令icmp port-unreachable send使能設備的ICMP端口不可達報文的發送功能。

5,建議與總結

使用tracert時,如果路由器作爲被檢測的目的設備,爲保證路由器設備正常響應源設備發起的tracert請求,需要在系統視圖下執行命令icmp port-unreachable send命使能ICMP端口不可達報文的發送功能。

tracert命令檢測和ping命令指定-r參數檢測都會返回從源端到目的主機間的節點信息,但是最主要區別在於:

1、ping命令一旦在中間某一個節點超時,則整個ping測試返回超時,不顯示任何路徑信息。

2、tracert命令如果在中間某一個節點超時,只會在顯示信息中標識此節點信息超時“* * *”,不影響整個tracert命令操作。

查看原文 >>
相關文章