rip路由協議 細節分析及實例配置【完整版】
RIP呢,這是一個比較重要的知識點,所以它的知識覆蓋面很廣泛;但是呢,我將會對碰到的問題進行一些分析解刨(主要是爲了幫助自己理清思維);也希望能夠從中發現自己不足的問題,也希望能夠找到一些比較冷僻的問題,這樣子纔會有意思多了。
先上圖,這個就是我準備做實驗的基本用圖了。現在已經按照圖上標註的IP將所有基本配置設置好了。
在這個實驗中,大多數都是基於ripv1,只有在需要比較的時候纔會把版本改成ripv2,然後判斷完之後再切換爲ripv1;
第一步:測試連通性;
在配置rip之前,先對沒有進行任何配置的拓撲圖進行一些測試;
【1】因爲通過查看路由表:(因爲是直連鏈路。所以R1有到達R2的路由;同理R2上面也有如何到達R1路由器的路由:)
所以我嘗試用PC1去ping通AR2的G0/0/1端口:(因爲所有的PC機的默認網關都是指向路由器)
但是會顯示超時;
這是爲什麼呢?
所以這個時候各個路由器下的網段都沒有互聯起來。需要使用一種協議來使各個網段能夠互相知曉;
第二步:配置rip
配置rip之前先查看下路由表信息;
[R1]display ip routing-table
[R1]rip [R1-rip-1]network 192.168.14.0 宣告網絡;該地址一定是自然網段的地址 [R1-rip-1]network 192.168.12.0 不能是子網地址; [R1-rip-1]network 192.168.1.0 (使能了所有的路由器) 自然網段就是A,B,C類網絡地址;所以不需要掩碼。每個ip地址的範圍就決定了屬於的類型; [R1]display ip routing-table protocol rip 使用這個命令查看rip的路由;
但是我們看到並沒有任何rip路由,這是因爲我們只是啓動了R1的rip協議並且通告。但是其他路由器卻並沒有使能rip,導致沒有路由器能夠響應R1的通告。所以沒有信息;
但是我們從這張表中發現:所有的rip都只是建立了“直連路由”找不到的路由;
第三步:解決發現的問題
----------------中斷-----------華麗的分割線----------------------------
【問題】這裏就發現了一個問題:
rip到底建立了相鄰路由器之間的路由(因爲優先級不夠不顯示)而沒有在表中顯示?
還是說rip根本就沒有建立相鄰路由器之間的路由呢?
【1】、首先我考慮了是否可以吧直連路由的優先級修改一下。但是現實是殘酷的:
【2】所以我準備修改下rip的優先級:
但是也殘酷啊,因爲允許修改的最小值纔是1.別個直連鏈路是0啊0啊!
【3】所以只有間接測試了!
使用這張圖:因爲在沒有做任何配置的情況下,從R6直接pingR8是不能到達的;
所以準備在這個網絡中運行rip協議,並且設置一條靜態路由;
修改rip路由的優先級,看是否路由表中會出現rip協議產生的路由;
[R8]ip route-static 10.0.1.2 24 10.0.1.1 [R6]ip route-static 10.0.1.0 24 10.0.0.2
當我建立了rip然後準備通告的時候。又有問題發生了:
這裏並不能通告10.0.1.0 這是爲啥子呢?!
這個應該和network只能通告自然網段有關係吧:(既然碰到這個知識點了就先分析下)
不過也沒關係,反正10.0.1.0也屬於A類網段;所以我們只需要通告
[R7-rip-1]network 10.0.0.0
照樣能在每個路由器之間發現rip的路由:
這個時候爲了驗證之前的問題:我將修改優先級爲1;
[R6/7/8-rip-1]preference 1
我們發現:當我們修改了優先級之後:使用命令
[R6]display ip routing-table之後;
在整體路由表中,看不到優先級比較小的rip路由;只能看到靜態路由;
【結論】
[R6]display ip routing-table -------查看整體路由表
使用這個命令查看的是整體路由表,說明整體路由表是會自動隱藏優先級小的路由項的;
[R6]display ip routing-table protocol rip
使用這個命令會顯示rip生成的所有的路由項;而不會因爲優先級較小而隱藏;
所以也可以同時證明。Rip不會生成相鄰路由間的路由條目;(因爲沒必要)
----------------接着上面話題-----------華麗的分割線----------------------
第四步:查看運行的rip參數
抓包分析:
從上往下看,可以看出以下信息:
1、Frame 1:
這個是幀的發送格式吧,我也不瞭解;看不懂上面的參數;不過這個也不是我們需要討論的重點;
2、Ethernet II :
以太網封裝:從這裏可以看出來源MAC地址和目標MAC地址;
3、Internet Protocol
IP封裝:從這裏看到源IP地址和目標IP地址(廣播地址)
4、User Dategram Protocol
UDP封裝:看到目標端口和源端口號,這裏並不像Telnet的服務器的端口號是任意 端口號,而是都是520;也說明RIP是應用層協議;
5、Routing Information Protocol
RIP數據:最裏面的當然就是RIP的數據啦。
然後我們展開最後個RIP的數據內容:
這個是RIP的展開數據;可以看到裏面的詳細信息;
第五步:修改參數;
既然我們在上一個步驟中看到了很多的參數,所以這些參數到底是什麼作用,然後這些參數應該怎麼去修改呢?這是我們這個步驟需要討論的問題:
【1】首先呢,我們將R1的rip的版本更迭爲ripv2;
然後我們查看路由表信息;
R1上沒有任何rip路由:只有直連路由;
但是R2,和R3都有到達R1非直連的路由;
[R1-rip-1]version 2[R1-rip-1]display ip routing-table [R1-rip-1]display ip routing-table protocol rip
首選進行抓包:
我們來分開展開下這兩個包的詳細信息:
RIP在ipv4有v1和v2兩個版本;
在不指定版本的情況下,默認情況下是ripv1的版本;
ripv1能接受V1和V2兩個版本,但是隻能發送V1的報文。
Ripv2只能接受和發送ripv2的報文,不能接受ripv1的報文;
【2】修改定時器
在修改定時器之前,我們先還原R1設置的ripv2的版本;依舊將其設置爲V1;
在rip中,定時器一共有三種:
1更新計時器:默認30s更新報文;
2超時計時器:默認時間180s;
3垃圾收集定時器:默認時間120s;
即從一個路由表失效到完全消失需要5分鐘;
[R1-rip-1]timers rip 20 120 60 修改定時器時間,(分別對應的是:更新,超時,垃圾收集定時器) [R1-GigabitEthernet0/0/0]undo rip output 停止發送rip報文; [R1-GigabitEthernet0/0/0]display rip 1 database 查看rip發佈數據庫中的所有激活的路由;
我們可以發現三個定時器的參數已經發生了變化;
在這裏先補充下什麼是undo rip output和undo rip input:
1.我們先觀察更新報文;
修改了更新計時器的發送情況和默認更新計時器的對比:
2、觀察超時定時器;
這時候使用在R1和R2相連的接口上undo rip output;使其不再發送rip報文;查看定時器使發送的rip報文發生的變化;
[R1-GigabitEthernet0/0/0]undo rip output 停止發送rip報文
在這個時候, 我又發現個好玩的東西;
第六步:解決發現的問題
-------------先中斷內容,開始說說路由環路-------華麗的分割線------------------
這是發現問題地方的截圖:
【1】先解釋下什麼是路由環路:在維護路由表信息的時候,如果在拓撲發生改變後,網絡收斂緩慢產生了不協調或者矛盾的路由選擇條目,就會發生路由環路的問題,這種條件下,路由器對無法到達的網絡路由不予理睬,導致用戶的數據包不停在網絡上循環發送,最終造成網絡資源的嚴重浪費。
【2】產生路由環路的原因(摘抄自百度百科;雖然是思科的圖,但是技術不分家~)
如圖所示,在網絡11.4.0.0發生故障之前,所有的路由器都具有正確一致的路由表,網絡是收斂的。在本例中,路徑開銷用跳數來計算,所以,每條鏈路的開銷是1。路由器C與網絡11.4.0.0直連,跳數爲0。路由器B經過路由器C 到達網絡11.4.0.0,跳數爲1。路由器A 經過路由器B到達網絡11.4.0.0,跳數爲2。
如果網絡11.4.0.0 故障,就可能會在路由器之間產生路由環路,下面是產生路由環路的步驟:
1、當網絡11.4.0.0 發生故障,路由器C 最先收到故障信息,路由器C 把網絡11.4.0.0 設爲不可達,並等待更新週期到來通告這一路由變化給相鄰路由器。如果,路由器B的路由更新週期在路由器C之前到來,那麼路由器C就會從路由器B那裏學習到去往11.4.0.0的新路由(實際上,這一路由已經是錯誤路由了)。這樣路由器C的路由表中就記錄了一條錯誤路由(經過路由器B,可去往網絡11.4.0.0,跳數增加到2 )。
2、路由器C 學習了一條錯誤信息後,它會把這樣的路由信息再次通告給路由器B,根據通告原則,路由器B也會更新這樣一條錯誤路由信息,認爲可以通過路由器C去往網絡11.4.0.0,跳數增加到。
3。這樣,路由器 B 認爲 可以通過路由器C 去往網絡11.4.0.0,路由器C 認爲 可以通過路由器B 去往網絡11.4.0.0,就形成了環路。
【3】解決環路的幾種方式:(水平分割,毒性逆轉,觸發更新常用;)
[R1-GigabitEthernet0/0/1]undo rip split-horizon 關閉水平分割;(默認開啓) [R2-GigabitEthernet0/0/1]rip poison-reverse 開啓毒性逆轉;(默認關閉)
水平分割
一種消除路由環路並加快網絡收斂的方法是通過叫做“水平分割”的技術實現的。其規則就是不向原始路由更新來的方向再次發送路由更新信息
毒性逆轉
rip從某個接口接收到路由信息後,將該路由的開銷設置爲16,並從元接口發回鄰居設備;利用這種方式,可以清楚對方路由表中的無用路由,這是超越水平分割的一個特列,這樣保證所有的路由器都接受到了毒化的路由信息。
控制更新時間(即抑制計時器)
抑制計時器用於阻止定期更新的消息在不恰當的時間內重置一個已經壞掉的路由。抑制計時器告訴路由器把可能影響路由的任何改變暫時保持一段時間,抑制時間通常比更新信息發送到整個網絡的時間要長。當路由器從鄰居接收到以前能夠訪問的網絡現在不能訪問的更新後,就將該路由標記爲不可訪問,並啓動一個抑制計時器,如果再次收到從鄰居發送來的更新信息,包含一個比原來路徑具有更好度量值的路由,就標記爲可以訪問,並取消抑制計時器。如果在抑制計時器超時之前從不同鄰居收到的更新信息包含的度量值比以前的更差,更新將被忽略,這樣可以有更多的時間讓更新信息傳遍整個網絡。
觸發更新
正常情況下,路由器會定期將路由表發送給鄰居路由器。而觸發更新就是立刻發送路由更新信息,以響應某些變化。檢測到網絡故障的路由器會立即發送一個更新信息給鄰居路由器,並依次產生觸發更新通知它們的鄰居路由器,使整個網絡上的路由器在最短的時間內收到更新信息,從而快速瞭解整個網絡的變化。這樣觸發更新將有時間傳遍整個網絡,從而避免了已經損壞的路由重新插入到已經收到觸發更新的鄰居中,也就解決了路由環路的問題。
【4】好了,接着說問題:【爲了能夠加快現象的產生:我將更新報文改爲10s】
我先將g0/0/1的rip output 關閉後,在開啓rip output 後:抓包是這樣的:
發生這個的原因就是:水平分割:(防環的措施之一;默認開啓)
在這裏:因爲之前關閉了R1的output功能:所以R2不會收到來自R1的rip的更新報文;當開啓了rip 的output功能後:R2收到了R1更新報文:發現R1更新報文也通告了192.168.12.0這個網段的路由;所以R2知道了R1是相鄰的;爲了防止路由環路,於是就基於水平分割,在之後通告的報文中將192.168.12.0這個網段的路由的度量值設置爲16;同時啓動垃圾收集定時器(120s);等待這條通告路由的消失:
【5】驗證毒性逆轉:
毒性逆轉的優先級是高於水平分割:但是毒性逆轉是默認關閉的;
在這個時候,所有的rip都恢復正常了:
[R1-GigabitEthernet0/0/1]rip poison-reverse [R2-GigabitEthernet0/0/1]rip poison-reverse
這時候我們在對R2的g0/0/0進行抓包:
-------------先中斷內容,開始說說路由環路-------華麗的分割線------------------
【接】第五步:修改參數;
接着之前的說:如何觀察超時定時器呢?
爲了方便觀察:我將前面的毒性逆轉給關閉了;
[R1-GigabitEthernet0/0/0]undo rip input
如圖所示:將路由器R1的g0/0/1的端口設置爲不接受任何更新報文,自然也學習不到R4的路由信息了。這時候我們在對R1和R2之間的報文進行抓包:
【這是自動開啓了觸發更新吧?!】
我沒有能夠抓取到超時計時器的現象,是因爲每個接口都默認開啓了觸發更新嗎?就算我關閉了R1的G0/0/1接口的rip input,然後同時在R2的G0/0/2接口上進行抓包,還是沒能觀察到超時定時器;好像超時計時器的180s從來沒有出現過;到時垃圾收集定時器總是能觀察到;
【3】配置rip路由附加度量值
[R1-GigabitEthernet0/0/1]rip metricin 3 配置metricin爲3, [R2-GigabitEthernet0/0/1]rip metricout 2 配置metricout爲2 [R1-GigabitEthernet0/0/1]display rip 1 database 查看rip的數據庫;
通過查看路由表,我們發現,如果報文要從R2到達R3時,下一跳地址是192.168.23.3;(就是上面那一條路);現在我們要對修改cost值來改變路徑;
[R2] g0//-GigabitEthernet0//]rip metricout
這時候通過查看R3的路由表信息,發現R3到R2會選擇走下面開銷爲2的路了。
(說明了metricout能夠影響其他設備的選擇;)
[R2-GigabitEthernet0/0/2]undo rip metricout 先取消R2的metricout [R3]int g0/0/2[R3-GigabitEthernet0/0/2]rip metricin 10 在R3上面增加metricin
這時候通過查看R3的路由信息,發現R3到R2會選擇走下面開銷爲2的路了。
(這也說明了metricin能夠影響本地設備的選擇)
第七步:安全性考慮
【1】配置rip抑制接口
1、在路由器和主機之間配置抑制接口;
在RIPv1中,路由信息都是通過廣播形式傳播的,但是這就有一個問題,rip的報文會將一些信息泄露出去,所以爲了能夠保證信息的安全,所以在必要地方都要設置抑制接口;比如說可以在連接外界(和主機相連的接口)設置抑制接口:
什麼是rip抑制接口呢?
RIP支持抑制接口的配置,即配置後禁止接口發送更新報文,但是此接口所在的網段路由可以發佈出去; 默認狀態是不抑制狀態;
默認情況下是沒有配置抑制端口的;
但是通過抓包。R1都會發送更新報文到PC1上,然後PC1都會返回一個目的不可達的ICMP報文;但是壞人可以通過分析發送來的RIP更新報文,從而獲取內網的相應信息;
[R1]rip 1[R1-rip-1]silent-interface g0/0/2 配置抑制端口
我們可以發現,配置了抑制端口的端口,沒有任何報文在鏈路上傳輸,保證了安全性;
當然,可以做到這個要求的除了抑制端口,還可以使用:
[R1-GigabitEthernet0/0/2]undo rip [R1-GigabitEthernet0/0/2]undo rip output (關閉端口的rip 發送) [R1-GigabitEthernet0/0/2]undo rip input
不過silent-interface只接受報文,但不能發送報文,優先級大於在接口下配置的undo rip output;
2、在路由器之間配置抑制接口
就在如圖上兩個路由器之間設置抑制端口吧;
在R4上面設置抑制端口;
[R4]rip 1[R4-rip-1]silent-interface g0/0/0 設置抑制端口
查看R4
通過上圖我們可以發現:原來在R1上存在的到達192.168.4.10的路由已經不存在了。這是因爲抑制端口導致R4不能對自己的路由信息進行通告。所以這個時候R1也不會知道如何到達192.168.4.10這個網段了。
自然使用PC1pingPC4是不可能ping的通的;
所以,該如何使配置了抑制端口的兩端能夠繼續建立rip更新呢?
3、單播更新
[R1-rip-1]peer 192.168.14.4[R4-rip-1]peer 192.168.14.1這個時候:[R4-rip-1]display ip routing-table protocol rip
從這裏就能看出R4已經通過單播更新獲取到通往192.168.1.0網段的路由信息了;
【注意】
1、當使用silent-interface命令配置抑制接口後,在指定單薄更新的目的地址後,單播更新有效;
2、如果在接口下使用undo rip output命令來配置抑制接口,即使在指定單薄更新的目的地址也是無法發送更新的路由條目的;
3、但是使用抑制端口的優先級卻大於undo rip output
【2】在ripv2設置認證;
RIPv1沒有密碼驗證;RIPv2有密碼驗證:
MD5密文驗證但是一種單項消息摘要算法或安全散列函數
1、基本配置,按照要求把所有的配置好
2、搭建RIP網絡
[AR1-rip-1]rip 打開rip [AR1-rip-1]version 2 切換到RIPv2 [AR1-rip-1]network 192.168.10.0 設置自然網段爲192.168.10.0[AR1-rip-1]network 10.0.0.0 設置自然網段爲10.0.0.0
已經能夠正常ping通
3、模擬網絡***;
將***者介入網絡,將地址配置爲10.0.12.3,與公司路由器在同一個網段,配置RIPv2協議,通告該網段
[AR3-LoopBack0]ip address . -LoopBack1]ip address . 配置欺騙的環回接口(和主機一樣) 並在協議中通告這兩個欺騙網段 <AR1>display ip routing-table 然後查看r1的路由表,發現出現了欺騙的網段路由;
發送ping包在R3抓包,發現從pc1發來的包(負載均衡)
4、配置RIPv2簡單驗證;(避免發生欺騙)
[AR1]interface GigabitEthernet 0/0/1[AR1-GigabitEthernet0/0/1]rip authentication-mode simple huawei [AR2-GigabitEthernet0/0/1]rip authentication-mode simple huawei
過一段時間,路由表恢復很長,配置了rip認證之後,密碼不對的就會認爲非法讓後丟棄;
5、配置RIPv2 MD5 密文驗證;(之前的簡單驗證是明文)
[AR1-GigabitEthernet0/0/1]undo rip authentication-mode 先取消之前的rip認證模式 [AR1-GigabitEthernet0/0/1]rip authentication-mode md5 usual huawei 設置md5模式
然後在抓包,然後就看不到啦。看不到。
剩下就是補充下相關知識點:
一、rip路由協議基本配置
RIP目前有兩個版本:RIP1v1和RIPv2,RIPv2針對v1是擴充;能夠便攜的攜帶跟多的信息量,並增強了安全性能;RIP V1 和 V2都是基於UDP的協議;
二、ripv2的認證
MD5密文驗證但是一種單項消息摘要算法或安全散列函數
三、rip路由協議的彙總
ripv1是有類別路由協議,無法支持路由聚合,所有的路由會被自動彙總爲有類路由;
ripv1只發布彙總之後的有類路由,ripv1默認開啓自動彙總切無法關閉,也不支持手動彙總;
ripv2是無類路由協議;支持手動和自動路由彙總兩種方式;
ripv2支持自動彙總,默認是開啓的可以關閉;如果以太網接口啓用了水平分割或者毒性逆轉的接口,默認自動彙總就就會失效;
四、配置rip
RIP在ipv4有v1和v2兩個版本,在不指定版本的情況下,默認情況下能接受V1和V2兩個版本,但是隻能發送V1的版本。
在指定版本的情況下,ripv1只能接受和發送v1的報文,ripv2只能接受和發送v2的報文
更新計時器:默認30s更新報文;
超時計時器:默認時間180s;
垃圾收集定時器:默認時間120s; 即從一個路由表失效到完全消失需要5分鐘;
RIP默認的協議優先級爲100;
R1採用版本1,選擇廣播發送更新。R2採用版本22.選擇組播發送更新;*發送至224.0.0.9
R1沒有明確指明版本,可以接受V1和V2,但是隻發送V1,所以R1裏面有rip路由信息;
R2指明的版本,只能接受和發送V2,所以R2裏面不會存在rip路由器信息;
R1會把靜態路由加入IP路由表中,因爲若同一條路由條目來自兩個不同協議,、
且協議優先級一樣,路由器會根據協議內部優先級來選擇最優路由,內部優先級也就是協議優先級的初始值。
五、配置rip抑制接口以及單播更新;
RIP支持抑制接口的配置,即配置後禁止接口發送更新報文,但是此接口所在的網段路由可以發佈出去; 默認狀態是不抑制狀態;
silent-interface只接受報文,但不能發送報文,優先級大於在接口下配置的undo rip output;
undo rip iniput:禁止接口接受RIP更新報文;
當使用silent-interface命令配置抑制接口後,在指定單薄更新的目的地址後,單播更新有效;
如果在接口下使用undo rip output命令來配置抑制接口,即使在指定單薄更新的目的地址也是無法發送更新的路由條目的;
六、rip與不連續子網
rip會在主網邊界自動彙總,當彙總發生時,
彙總的子網路由在邊界處會被抑制,只會通告主網路由;
連續子網是指:所連接的子網屬於同一主網,
不連續子網指:相同主網下的子網被另一主網分隔;
個人理解:不連續子網就不能通告所有的路由;會在中間隔斷
出現這種情況的原因:由於採用了ripv1,在R2和R4分別接受到了10.0.12.0/24
和10.0.12.0/24的路由條目時,默認打開了自動有類彙總功能,所以在主網邊界
向外發送路由信息的時候都彙總了10.0.0.8/8,發送給R3,最終在R3上由於收到
了兩條目的網段相同,代價也相同的路由條目;
在RIPv2的環境中,因爲默認情況下自動彙總是開啓的,所以在設計網絡中,
應該儘量不要出現同主網的子網被其他主網分割;
如果出現了。關閉自動彙總是最好的做法,不足之處是路由條目會增加;
七、rip的水平分割問題以及觸發更新
四、水平分割:指的是rip從某個接口接收到的路由信息,不會從該接口在發回給鄰居設備,這樣不但減少了寬帶消耗,還可以防止路由環路;默認開啓;
觸發更新:當路由信息發生變化時,運行rip的設備會立即向鄰居設備發送更新報文,而不必等待定時更新;縮短了手鍊時間;
毒性逆轉:rip從某個接口接收到路由信息後,將該路由的開銷設置爲16,並從元接口發回鄰居設備;利用這種方式,可以清楚對方路由表中的無用路由,
如果同時配置了毒性逆轉和水平分割,則會選擇毒性逆轉;毒性逆轉默認關閉的;
ripv2和ripv1都支持水平分割、觸發更新和毒性逆轉的功能;