從這篇文章開始,筆者將整理出各種常見路由協定的疑難排解技巧,包含如何檢視路由協定的設定值,以及如何做到即時的偵錯技巧。而為了讓讀者快速容易地了解偵錯的過程與指令的用法,都會透過範例來解說,這樣讀者就更能真正明白指令輸出結果的含意,而範例中也會大略介紹設定路由協定環境的指令。這裡將介紹RIP路由協定、IGRP路由協定、EIGRP路由協定和OSPF路由協定等相當知名且常用的路由協定。
若要做路由協定相關的疑難排解,當然不一定只有以下所介紹的這些方法,而是要看當時遇到的情況而定。有時候不一定是路由協定的問題,且偵錯方法也很多,通常可以查看Routing Table,或是透過「show running-config」指令來查看目前正在使用的路由器設定值,或是執行「show ip protocols」指令來查看協定的設定情況。
偵錯的方法其實千變萬化,唯有深入明白每一個環節,清楚所有運作的關鍵以及原理,才能夠真正靈活地運用偵錯的技巧。
RIP路由協定
先從RIP路由協定開始介紹,直接來看一個簡單的範例。假設網路架構圖如下所示,現在要在每一台路由器設備上都套用RIP路由協定並加以啟動。
上圖中有X,Y與Z三台路由器設備,其中路由器X接到172.16.1.0和10.1.1.0兩個網段,其兩邊介面的IP分別為172.16.1.1與10.1.1.2,因此路由器X的RIP路由協定設定指令如下:
RouterX(config)#router rip RouterX(config-router)#network 172.16.0.0 RouterX(config-router)#network 10.0.0.0
其中,172.16.0.0和10.0.0.0分別代表路由器所接的兩個網路區段的Major Network Number。同理,因為路由器Z接到192.168.2.0和10.1.2.0兩個網段,假設路由器Z針對這兩個網段的IP分別為192.168.2.1與10.1.2.3,則在路由器Z上設定RIP路由協定的指令如下:
RouterZ(config)#router rip RouterZ(config-router)#network 192.168.2.0 RouterZ(config-router)#network 10.0.0.0
在設定IP網路區段的Major Network Number時,哪一個網段先設定,哪一個網段後設定,並沒有差別,只要「都設定」就可以。接著剩下的就是路由器Y,路由器Y連接到10.1.1.0和10.1.2.0兩個網段。假設路由器Y在這兩個網段的IP位址為10.1.1.5和10.1.2.7,則要在路由器Y上設定RIP路由協定的指令如下:
RouterY(config)#router rip RouterY(config-router)#network 10.0.0.0
因為10.1.1.0網段和10.1.2.0網段的Major Network Number相同,所以只要設定一次即可。
檢視RIP路由協定設定的方法
檢視RIP路由協定的指令是「show ip protocols」。這裡以上面的範例來說明,假設要檢視路由器Z的RIP路由協定設定值,則執行結果如下:
RouterZ#show ip protocols
Routing Protocol is “rip”
Sending updates every 30 seconds, next due in 15 seconds Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is
Incoming update filter list for all interfaces is
Redistributing: rip
Default version control: send version 1, receive any version Interface Send Recv Triggered RIP Key-chain Ethernet0 1 1 2 Serial2 1 1 2 Routing for Networks: 10.0.0.0 192.168.2.0 Routing Information Sources: Gateway Distance Last Update (this router) 120 01:12:34 10.1.2.7 120 01:01:56 Distance: (default is 120)
由上面的執行結果可以看出路由器Z設定成使用RIP路由協定,這可以從執行結果的第一行看出。接著,由第二行可以發現這個路由資料會每隔30秒互相傳遞一次,而且能夠看出下一次傳送路由資訊的時間為15秒之後。而這每隔30秒傳送一次路由資訊的設定是可以改變的。
接著,觀察輸出結果的第三行「Invalid after 180 seconds, hold down 180, flushed after 240」。第一個180秒代表如果這台路由器Z經過180秒都沒有收到由其他路由器所傳過來的路由更新資訊,則路由器Z會將相關的路由路徑標示為可能無法到達,即Possibly Down。而「hold down 180」中所指的180則是Hold-Down Timer的時間,所以當路由器Z發現有Possibly Down的路由資訊時,就會馬上啟動Hold-Down Timer。
如果經過180秒後,都沒有再收到這筆路由資訊的更新,路由器Z就會把這筆路由資訊視為無法到達。至於最後的「flushed after 240」所指的是,若經過240秒後都沒有再收到任何關於這筆路由資訊的更新,則路由器Z會把這筆資料從Routing Table中移除。
在顯示結果的後半部,有一行顯示「Routing for Networks:」。而在此行後面接了兩個網段,這代表目前這台路由器將會處理這兩個網段的路由資訊。至於接在「Routing Information Sources:」後面的IP位址,則代表這些位址會傳送路由的更新資訊給目前這台路由器。讀者應該可以聯想到,後面所接的120指的就是RIP路由協定的AD值。如果覺得這樣的檢視資訊過於複雜,也可以執行以下的指令以便顯示比較簡短的設定值:
RouterZ#show ip interface brief
RIP路由協定即時偵錯
如果想即時查看目前這台路由器更新路由資訊的情況,可以執行「debug ip rip」指令。一旦執行這個指令,往後如果這台路由器收到或是發送任何路由資訊的更新時,就會馬上把相關的資料列印在螢幕以便即時偵錯。以上述的例子來講解,假設在路由器Z上執行「debug ip rip」指令,則執行結果如下列所示:
RouterZ#debug ip rip
RIP protocol debugging is on
RouterZ#
00:04:06: RIP: received v1 update from 10.1.2.7 on Serial2 00:04:06: 10.1.1.0 in 1 hops 00:04:06: 172.16.1.0 in 2 hops
00:04:11: RIP: sending v1 update to 255.255.255.255 via Ethernet0(192.168.2.1)
00:04:11: network 10.0.0.0, metric 1 00:04:11: network 172.16.1.0, metric 3 00:04:11: RIP: sending v1 update to 255.255.255.255 via Serial2(10.1.2.3)
00:04:11: network 192.168.2.0, metric 1
透過這個指令,可以在第一時間得知目前這台路由器如何更新自己的Routing Table以及如何影響其他路由器的Routing Table。上面的資訊看起來似乎很亂,接著就來一一解釋。一開始執行「debug ip rip」指令之後,第一行看到的是:
RIP protocol debugging is on
這代表目前已經開啟偵錯模式。接著,路由器就會等待下一次要接收或發送路由更新的資訊。而接下來三行代表收到由其他路由器送過來的路由更新:
00:04:06: RIP: received v1 update from 10.1.2.7 on Serial2 00:04:06: 10.1.1.0 in 1 hops 00:04:06: 172.16.1.0 in 2 hops
10.1.2.7是路由器Y在10.1.2.0網段的IP位址,因此這邊第一行代表的就是「從本地端的Serial 2介面收到由10.1.2.7路由器所發送的RIPv1的路由更新資訊」,而下面兩行則顯示出所得到的路由更新有哪些。其中,第二行代表「從路由器Z開始算,經過一個路由器設備後,可以到達10.1.1.0網段」。同樣地,第三行代表的是「從路由器Z開始算,經過兩個路由器設備之後,可以到達172.16.1.0網段」。
而接下來如下的這三行,第一行代表正在目前這台路由器Z的Ethernet0介面傳送路由更新資訊到其他設備中。假設Ethernet0是路由器Z接往192.168.2.0網段的介面,由這一行中也可以看出所傳送的正是RIP路由協定,而且是v1版本。
另外,255.255.255.255是Broadcast位址,所以此路由資訊是藉由Broadcast方式送出。而後面兩行顯示所送出的路由更新資料有哪些。
00:04:11: RIP: sending v1 update to 255.255.255.255 via Ethernet0(192.168.2.1) 00:04:11: network 10.0.0.0, metric 1 00:04:11: network 172.16.1.0, metric 3
從這裡的第二行可以看出路由器Z想傳送的資料就是「透過我這台路由器,經過一台設備可到達10.0.0.0網段」,同樣地,下一行代表「透過我這台路由器,一共經過三台設備可到達172.16.1.0網段」。至於執行結果的最後兩行,讀者也就可以清楚明白其含意了。(更多精采文章詳見網管人第54期)