本節書摘來自異步社群《ccnp tshoot 300-135認證考試指南》一書中的第2章,第2.3節利用cisco ios驗證和定義故障問題,作者 【加】raymond lacoste , 【美】kevin wallace,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
2.3 利用cisco ios驗證和定義故障問題
ccnp tshoot 300-135認證考試指南
接到故障工單後的首要任務就是驗證并定義故障問題,利用一些相對簡單的任務即可确認所報告的故障問題,并且在大多數情況下有助于聚焦故障排查工作。cisco ios内置了三款易于使用的工具(ping、telnet和traceroute),可以幫助驗證網絡連接配接性并明确定義故障問題。本節将讨論利用ping、telnet和traceroute等工具驗證故障問題并聚焦故障排查工作的方式。
關鍵
檢測網絡連接配接性的最常用指令就是ping。第1章曾經說過,ping測試成功表示osi的第一層、第二層、第三層工作均正常,因而可以将排障重心集中到更高的osi層,反之,如果ping測試不成功,那麼就可以将排障重心集中到較低的osi層。
基本的ping指令可以向指定目的地發送icmp(internet control message protocol,internet控制消息協定)echo(回送)消息,從指定目的地收到每一條echo reply(回送應答)消息後,都會在輸出結果中顯示一個感歎号(如例2-21所示)。
例2-21 基本的ping指令

請注意,本例中的所有ping測試均失敗了,這是因為設定的逾時時間為0秒,也就是說,路由器根本不做任何等待來發現ping測試是否失敗就發出下一條icmp echo消息。需要記住的是,此時關心的并不是ping測試是否失敗,而是以人工方式為測試工作制造負荷。
有時可能會懷疑接口的mtu(maximum transmission unit,最大傳送單元)值不是預設值,這種情況常見于q-in-q隧道、gre(generic routing encapsulation,通用路由封裝)隧道以及pppoe(point-to-point protocol over ethernet,以太網上的點對點)接口。為了驗證猜測,可以利用ping指令的df-bit和size選項指定所要發送的資料報大小,并讓icmp echo消息流經該接口,其中,選項df-bit的作用是讓路由器在需要對資料報進行分段時丢棄該資料報,而不是分段該資料報。
例2-23給出了不分段比特置位之後的ping指令運作情況。請注意ping響應中的字母m,表示需要對封包進行分段但由于設定了不分段比特而無法執行分段操作,那麼就可以斷定源與目的地之間的mtu是非标準值(也就是說mtu小于1500位元組)。
t
ping指令能夠有效檢測三層(即網絡層)連接配接性問題,而telnet指令則能夠有效檢測四層(即傳輸層)和七層(即應用層)故障。雖然telnet預設使用tcp端口23,但也可以指定其他端口号,以檢視目的ip位址是否運作了特定的四層服務,這一點對于從三層開始排障(這是因為ping操作成功,表明三層工作正常)的分而治之法非常有用,同樣,對于自底而上法也非常有用(因為也已經證明了三層工作正常)。此時,就可以使用telnet來測試傳輸層是否正常。
舉例來說,請注意例2-25中的telnet 192.168.1.50 80指令,該指令的作用是讓路由器r1試圖使用端口80(即http端口)與192.168.1.50建立tcp連接配接,響應結果open表明192.168.1.50确實在端口80上運作了服務。
例2-25 利用telnet測試傳輸層(成功)
traceroute指令可以為故障檢測與排除工作提供非常有價值的資訊,首先可以驗證連接配接性,如果路由跟蹤成功,那麼就能驗證三層連接配接性,這也是ping指令所能做到的。第二個有價值的資訊就是跟蹤操作在網絡中經曆的路徑,這是ping指令所不能提供的資訊,是以,如果ping 10.4.4.4指令失敗,那麼就可以運作traceroute 10.4.4.4指令以确定ping失敗的位置。例2-27顯示了向ip位址為10.4.4.4的路由器發起路由跟蹤操作成功的輸出結果。
如果在traceroute輸出結果中看到重複的ip位址(如10.1.2.2、10.1.3.2、10.1.2.2、10.1.3.2、10.1.2.2、10.1.3.2),那麼就表明存在路由環路。