100分鐘,我教你配CISCO RIP

火星人 @ 2014-03-12 , reply:0


  飛揚
-----
路由器的工作不外乎兩個,一是路徑選擇,二是數據轉發。進行數據轉發相對容易一些,難的是如何判斷到達目的網路的最佳路徑。所以,路徑選擇就成了路由器最重要的工作。
許多路由協議可以完成路徑選擇的工作,常見的有RIP,OSPF,IGRP和EIGRP協議等等。這些演算法中,我們不能簡單的說誰好誰壞,因為演算法的優劣要依據使用的環境來判斷。比如RIP協議,它有時不能準確地選擇最優路徑,收斂的時間也略顯長了一些,但對於小規模的,沒有專業人員維護的網路來說,它是首選的路由協議,我們看中的是它的簡單性。

如果你手頭正有一個小的網路項目,那麼,就讓我們來安排一個計劃,30分鐘讀完本文(一讀),20分鐘再細看一遍本文提及的命令和操作方法(二讀),用30分鐘配置網路上的所有路由器(小網路,沒有幾台路由器可以配的),最後20分鐘,檢查一下網路工作是否正常。好了,一百分鐘,你的RIP網路運轉起來了。就這麼簡單,不信,請繼續往下看。

一、RIP是什麼
RIP(Routing Information Protocols,路由信息協議)是使用最廣泛的距離向量協議,它是由施樂(Xerox)在70年代開發的。當時,RIP是XNS(Xerox Network Service,施樂網路服務)協議簇的一部分。TCP/IP版本的RIP是施樂協議的改進版。RIP最大的特點是,無論實現原理還是配置方法,都非常簡單。

度量方法
RIP的度量是基於跳數(hops count)的,每經過一台路由器,路徑的跳數加一。如此一來,跳數越多,路徑就越長,RIP演算法會優先選擇跳數少的路徑。RIP支持的最大跳數是15,跳數為16的網路被認為不可達。

路由更新
RIP中路由的更新是通過定時廣播實現的。預設情況下,路由器每隔30秒向與它相連的網路廣播自己的路由表,接到廣播的路由器將收到的信息添加至自身的路由表中。每個路由器都如此廣播,最終網路上所有的路由器都會得知全部的路由信息。正常情況下,每30秒路由器就可以收到一次路由信息確認,如果經過180秒,即6個更新周期,一個路由項都沒有得到確認,路由器就認為它已失效了。如果經過240秒,即8個更新周期,路由項仍沒有得到確認,它就被從路由表中刪除。上面的30秒,180秒和240秒的延時都是由計時器控制的,它們分別是更新計時器(Update Timer)、無效計時器(Invalid Timer)和刷新計時器(Flush Timer)。

路由循環
距離向量類的演算法容易產生路由循環,RIP是距離向量演算法的一種,所以它也不例外。如果網路上有路由循環,信息就會循環傳遞,永遠不能到達目的地。為了避免這個問題,RIP等距離向量演算法實現了下面4個機制。
Ø 水平分割(split horizon)。水平分割保證路由器記住每一條路由信息的來源,並且不在收到這條信息的埠上再次發送它。這是保證不產生路由循環的最基本措施。
Ø 毒性逆轉(poison reverse)。當一條路徑信息變為無效之後,路由器並不立即將它從路由表中刪除,而是用16,即不可達的度量值將它廣播出去。這樣雖然增加了路由表的大小,但對消除路由循環很有幫助,它可以立即清除相鄰路由器之間的任何環路。
Ø 觸發更新(trigger update)。當路由表發生變化時,更新報文立即廣播給相鄰的所有路由器,而不是等待30秒的更新周期。同樣,當一個路由器剛啟動RIP時,它廣播請求報文。收到此廣播的相鄰路由器立即應答一個更新報文,而不必等到下一個更新周期。這樣,網路拓撲的變化會最快地在網路上傳播開,減少了路由循環產生的可能性。
Ø 抑制計時(holddown timer)。一條路由信息無效之後,一段時間內這條路由都處於抑制狀態,即在一定時間內不再接收關於同一目的地址的路由更新。如果,路由器從一個網段上得知一條路徑失效,然後,立即在另一個網段上得知這個路由有效。這個有效的信息往往是不正確的,抑制計時避免了這個問題,而且,當一條鏈路頻繁起停時,抑制計時減少了路由的浮動,增加了網路的穩定性。
即便採用了上面的4種方法,路由循環的問題也不能完全解決,只是得到了最大程度的減少。一旦路由循環真的出現,路由項的度量值就會出現計數到無窮大(Count to Infinity)的情況。這是因為路由信息被循環傳遞,每傳過一個路由器,度量值就加1,一直加到16,路徑就成為不可達的了。RIP選擇16作為不可達的度量值是很巧妙的,它既足夠的大,保證了多數網路能夠正常運行,又足夠小,使得計數到無窮大所花費的時間最短。

鄰居
有些網路是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網路上不允許廣播傳送數據。對於這種網路,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發送給某一台特定的路由器。

RIP的缺陷
RIP雖然簡單易行,並且久經考驗,但是也存在著一些很重要的缺陷,主要有以下幾點:
Ø 過於簡單,以跳數為依據計算度量值,經常得出非最優路由;
Ø 度量值以16為限,不適合大的網路;
Ø 安全性差,接受來自任何設備的路由更新;
Ø 不支持無類IP地址和VLSM(Variable Length Subnet Mask,變長子網掩碼);
Ø 收斂緩慢,時間經常大於5分鐘;
Ø 消耗帶寬很大。

二、路由器怎麼配

路由器本身就是一台有多個網路介面的計算機,同普通計算機一樣,它也有中央處理器(CPU)、系統主存(RAM)和只讀存儲器(ROM)等部件。
除此之外,一個很重要的部分是它的網路介面(Interface),為了連結不同類型的網路,路由器的網路介面種類繁多,比如應用在區域網中的以太、快速以太、令牌環介面,應用於廣域網的V.35、RS232、ISDN BRI PRI介面等等。
路由器的外存儲器主要有兩種:NVRAM(Non-Volatile RAM,非易失性RAM)和Flash(快閃記憶體)。NVRAM存儲路由器的配置文件,Flash用於存放操作系統IOS(Internet Operating System)。

配置模式
CISCO路由器最基本的配置模式有兩種:用戶(user)和特權(privileged)。在用戶模式下,只能顯示路由器的狀態,特權模式還可以更改路由器的配置。
特權模式下可以進入安裝(setup)模式、全局配置(global config)模式,局部配置(sub config)模式。
Ø 安裝模式提供菜單提示,引導用戶進行路由器的基本配置。新路由器第一次啟動后,自動進入安裝模式。
Ø 全局配置模式中可以改變路由器的全局參數,如主機名、密碼等等。
Ø 局部配置改變路由器的局部參數,例如某一個網路介面的配置、某一種路由協議的配置等等。

配置方法
路由器的配置可以使用多種方法,下面這五種是最常見的:
Ø 使用超級終端類的工具通過串列口登錄控制台(console port)。
Ø 將數據機連結至路由器的輔助口(auxiliary port),遠程撥號登錄控制台。
Ø 遠程登錄(telnet)至路由器的某一IP 地址,通過VTY(virtue terminal line,虛擬終端)方式訪問路由器。
Ø 編輯配置文件,並通過TFTP上傳至路由器。
Ø 通過網路管理軟體(network management system)遠程設置路由器參數。

安裝路由器
假設我們的項目網路中只有三台路由器。網路拓撲如下圖:

它們放在北京、上海和天津,名字分別叫testBJ、testSH和testTJ。我們採用B類保留IP地址172.16.0.0,共劃分了四個子網172.16.1.0、172.16.2.0、172.16.3.0和172.16.4.0,子網掩碼均為255.255.255.0。

基本配置
將包裝中附帶的串列電纜一端連接到Beijing路由器的console口上,另外一端連接到計算機的com口上。啟動超級終端程序(Win95/NT中),作適當配置,連接路由器。給路由器加電,連續鍵入數個回車,出現如下提示符,顯示路由器處於用戶模式。
testBJ>
由用戶模式轉入特權模式,使用enable命令。
testBJ> enable
testBJ#
和UNIX主機一樣,「#」代表特權(root)用戶的系統提示符,它表示你進入了特權模式。與enable作用相反,即從特權模式返回用戶模式的命令是disable。
特權模式下,可以使用config terminal命令進入全局配置模式。全局配置模式下,可以使用一些配置子項的名稱進入局部配置模式。返回的方法都是exit命令。其中,從局部配置模式直接返回特權模式的命令是end。如下所示。
testBJ#config terminal
Enter configuration commands, one per line. End with CNTL/Z.
testBJ(config)#router rip
testBJ(config-router)#exit
testBJ(config)#exit
testBJ#
CISCO IOS的一個非常引人的特色是它的命令行幫助,一個?解決了所有的問題。?可以顯示當前模式下的命令列表,可以顯示命令全稱,還可以顯示命令的參數和幫助信息。在任何對命令不確定的地方鍵入?,系統會給出提示信息。
CISCO路由器還支持命令簡寫功能,只要不引起歧義,可以用命令的前幾個字元替代整個命令,這樣,配置時的打字工作量就小多了。

路由器的全部配置信息都保存在配置文件中,當前正在使用的配置文件是running-config,它存放在系統內存里,我們在特權模式下對配置的修改會立即反映到running-config中。startup-config是存儲在NVRAM中的配置文件,只有它是掉電不丟失的,所以如果想使所做的修改到下一次啟動時仍然有效,就必須保存當前配置。存檔命令如下:
testBJ#copy running-config startup-config
Building configuration...
[OK]
testBJ#

更改路由器名、密碼
路由器的名字可以用hostname命令修改。
Router(config)#hostname testBJ
testBJ(config)#
enable password和enable secret命令可以修改特權模式的密碼。
testBJ(config)#enable password cisco
testBJ(config)#enable secret cisco
進入line console局部配置模式下,修改console登錄密碼;進入line vty局部配置模式,修改telnet登錄的密碼。login命令指出需要登錄,修改密碼的命令都是password。
testBJ(config)#line console 0
testBJ(config-line)#login
testBJ(config-line)#password cisco
testBJ(config-line)#exit
testBJ(config)#line vty 0 4
testBJ(config-line)#login
testBJ(config-line)#password cisco

測試連通性
打開其餘兩台路由器,按上述方法進行配置,然後就可以檢查它們之間是否連通了。
測試線路連通性的方法有三種,ping、traceroute和telnet。ping可以檢測目的地是否可達;trace不僅檢測連通性,還給出到達目的地所經過的路徑;telnet測試應用層軟體的連通性,如下所示。
testBJ#ping 172.16.4.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.4.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 24/25/28 ms
testBJ#traceroute 172.16.4.2
Type escape sequence to abort.
Tracing the route to 172.16.4.2
1 172.16.2.2 16 msec 16 msec *
testBJ#telnet 172.16.4.2
Trying 172.16.4.2 ... Open
User Access Verification
Password:
testTJ>
172.16.4.2是路由器testTJ上的一個埠,我們在testBJ上運行上述三個命令,得知它運行正常。

顯示當前狀態
為了使網路管理員能夠方便地了解路由器的狀態,CISCO路由器提供了豐富的show命令。我們在這裡介紹最簡單的幾個,如下所示。
show version命令顯示路由器的硬軟體版本號及配置信息。
show flash:命令相當於DOS的dir命令,顯示flash中包含的文件信息。
show interface命令顯示網路介面的狀態。
配置路由器的過程中,最重要的一個show命令莫過於查看配置文件的內容,可以用show命令查看running-config或startup-config,如下所示。
show running-config
show startup-config
配置文件是一個文本文件,其中包含著你鍵入的每一條配置命令。可以將配置文件下載到計算機上,用文本編輯器修改之後,再傳迴路由器。

三、RIP要配什麼

IP地址配置
我們可以使用interface命令進入局部配置模式,然後利用ip address設置介面的IP地址。如下所示。
testBJ#conf t
Enter configuration commands, one per line. End with CNTL/Z.
testBJ(config)#interface e0/1
testBJ(config-if)#ip address 172.16.1.2 255.255.255.0
testBJ(config-if)#
為了便於配置和記憶,你還可以給每個埠添加一些描述信息。如下所示,在埠局部配置模式下使用description命令。
testBJ(config-if)#description connect to testSH
testBJ(config-if)#end
testBJ#
有些網路是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網路上不允許廣播傳送數據。對於這種網路,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發送給某一台特定的路由器。
有些網路是NBMA(Non-Broadcast MultiAccess,非廣播多路訪問)的,即網路上不允許廣播傳送數據。對於這種網路,RIP就不能依賴廣播傳遞路由表了。解決方法有很多,最簡單的是指定鄰居(neighbor),即指定將路由表發送給某一台特定的路由器。

RIP配置
RIP是最容易配置的路由協議。配置它只需要兩步操作,首先,指定使用RIP協議,然後,聲明所連接的網路號,如下所示。
testBJ(config)#router rip
testBJ(config-router)#network 172.16.0.0
testBJ(config-router)#end
testBJ#
router rip命令用於指定使用RIP協議,network命令聲明網路號,由於RIP是一個有類路由協議,所以不必聲明各個子網號。
對每一台路由器重複上述操作,一個使用RIP路由的網路就建成了。

測試配置正確性
配置RIP之後,要檢查數據是否可以被正確路由。除了可以使用上面提到的連通性測試工具之外,還有以下幾個命令:
Ø sh ip route用於檢測路由表;
Ø sh ip protocols用於檢查路由協議狀況;
Ø debug ip rip用於調試RIP協議信息。
使用sh ip route命令顯示各台路由器的路由表。
testBJ#sh ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2,
* - candidate default, U - per-user static route, o - ODR
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
R 172.16.4.0 [120/1] via 172.16.2.2, 00:00:12, Serial1/0
C 172.16.1.0 is directly connected, Ethernet0/1
C 172.16.2.0 is directly connected, Serial1/0
R 172.16.3.0 [120/1] via 172.16.1.3, 00:00:09, Ethernet0/1
[120/1] via 172.16.2.2, 00:00:22, Serial1/0
上面顯示的是北京路由器的路由信息。字母C開頭的是直接相連的網路,有172.16.1.0和172.16.2.0,分別連接在e0/1和s1/0埠上。字母R開頭的是RIP協議學習到的路由,有172.16.3.0和172.16.4.0,其中,到172.16.3.0有兩條路徑供選擇,分別經由testSH和testTJ路由器。對比網路拓撲圖,可以看出實際情況與設計的完全一致。
中括弧里的內容是路由項的管理距離和度量值,RIP的預設管理距離是120,到達3、4子網的度量值是1,即經過1個路由器可達。
同樣的命令在另外兩台路由器上運行,結果如下。
testSH#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
R 172.16.4.0 [120/1] via 172.16.3.2, 00:00:13, Ethernet0/0
C 172.16.1.0 is directly connected, Ethernet0/1
R 172.16.2.0 [120/1] via 172.16.1.2, 00:00:11, Ethernet0/1
[120/1] via 172.16.3.2, 00:00:13, Ethernet0/0
C 172.16.3.0 is directly connected, Ethernet0/0

testTJ#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 4 subnets
C 172.16.4.0 is directly connected, Ethernet0/0
R 172.16.1.0 [120/1] via 172.16.3.3, 00:00:07, Ethernet0/1
[120/1] via 172.16.2.3, 00:00:19, Serial1/0
C 172.16.2.0 is directly connected, Serial1/0
C 172.16.3.0 is directly connected, Ethernet0/1
分析上述命令輸出時,一定要隨時參照拓撲圖,離開網路拓撲,上面的信息就沒有任何意義。動態路由的靈活性體現在一條鏈路出現故障,路由演算法會自動切換到迂迴鏈路上。例如我們將testBJ和testTJ之間的串列線纜斷開,一段時間后,再檢查路由表,如下所示。
testBJ#sh ip route
Gateway of last resort is not set
172.16.0.0/24 is subnetted, 3 subnets
R 172.16.4.0 [120/2] via 172.16.1.3, 00:00:22, Ethernet0/1
C 172.16.1.0 is directly connected, Ethernet0/1
R 172.16.3.0 [120/1] via 172.16.1.3, 00:00:22, Ethernet0/1
我們發現串列鏈路所在的子網2斷開了,到網路172.16.4.0網路的數據包都將繞經testSH路由器。
sh ip protocols命令可以顯示當前路由協議的狀況,如下所示。
testBJ#sh ip protocols
Routing Protocol is "rip"
Sending updates every 30 seconds, next due in 19 seconds
Invalid after 180 seconds, hold down 180, flushed after 240
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Redistributing: connected, rip
Default version control: send version 1, receive any version
Interface Send Recv Key-chain
Ethernet0/1 1 1 2
Serial1/0 1 1 2
Routing for Networks:
172.16.0.0
Routing Information Sources:
Gateway Distance Last Update
172.16.2.2 120 00:00:05
172.16.1.3 120 00:00:27
Distance: (default is 120)
從命令輸出中,可以看出RIP協議的基本配置,還可以得知與當前路由器交換信息的路由器有testTJ(172.16.2.2)和testSH(172.16.1.3)兩台路由器,上次接收路由信息分別在5秒和27秒之前。
要了解路由器之間交換路由信息的詳情,可以使用debug ip rip命令。如下所示,輸入命令后,隔一段時間,控制台上出現接收或者發送RIP廣播的信息。
testBJ#debug ip rip
RIP protocol debugging is on
testBJ#
RIP: received v1 update from 172.16.2.2 on Serial1/0
172.16.4.0 in 1 hops
172.16.3.0 in 1 hops
RIP: received v1 update from 172.16.1.3 on Ethernet0/1
172.16.4.0 in 2 hops
172.16.3.0 in 1 hops
RIP: sending v1 update to 255.255.255.255 via Ethernet0/1 (172.16.1.2)
subnet 172.16.4.0, metric 2
subnet 172.16.2.0, metric 1
RIP: sending v1 update to 255.255.255.255 via Serial1/0 (172.16.2.3)
subnet 172.16.1.0, metric 1
RIP: received v1 update from 172.16.1.3 on Ethernet0/1
172.16.4.0 in 2 hops
172.16.3.0 in 1 hops
RIP: received v1 update from 172.16.2.2 on Serial1/0
172.16.4.0 in 1 hops
172.16.3.0 in 1 hops
testBJ#no debug all
All possible debugging has been turned off
testBJ#
從上述信息中可以得到RIP廣播的詳情。路由器先是從testTJ收到子網3、4的信息,然後又從testSH收到子網3、4的信息。其中,到子網4走testTJ一跳,走testSH兩跳,所以,路由表中反映出來的是經由testTJ到子網4;到子網3的距離都是一跳,所以,路由表中有兩條並列的路由。
一段時間后,當前路由器的更新計時達到30秒,於是,它在兩條鏈路上廣播自身的路由表信息。注意,廣播路由更新時,RIP採用了水平分割機制,從一個埠上學得的信息就不在這個埠上進行廣播,所以當前路由器testBJ只發送子網172.16.1.0的路由信息。
使用no debug all命令結束調試信息的顯示。需要注意的是debug命令非常消耗路由器資源,所以不要在通訊繁忙的路由器上使用,否則,路由器就會象死機一樣停止反應。

怎麼樣,你看一遍這篇文章用了多少時間。下面可以找幾台路由器,試著配置一下,不是很困難吧。
體會網路連通時的樂趣,將這裡作為你學習路由器的起點,IGRP、OSPF、HSRP等等,不過,再往後學,100分鐘可就不夠了……




[火星人 via ] 100分鐘,我教你配CISCO RIP已經有390次圍觀

http://www.coctec.com/docs/net/show-post-68522.html