前文我們瞭解了動態路由的基本概念,以及動態路由和靜態路由的區別,優缺點,動態路由的分類,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/14995317.html;今天我們主要來聊一聊動態路由協議中的RIP協議;
什麼是RIP?RIP是Routing Information Protocol 首字母縮寫,翻譯成中文就是路由資訊協議;它是一種基於距離向量演算法的動態路由協議,使用跳數作為衡量到達目標網路的距離。其特點是配置簡單,易於維護和適合應用在較小的網路環境中;它有兩個版本RIPV1和RIPV2兩個版本,它是應用層協議,工作在udp的520埠,主要用來發現和維護去往目標網路的最短路徑(路由的學習和維護);支援水平分割、毒性逆轉和觸發更新等防環機制;
RIP的工作原理
RIP的工作原理很簡單,我們在路由器上啟用rip程式,宣告網路以後,路由器首先會傳送路由更新請求,收到請求的路由器會傳送自己的RIP路由進行響應,收到路由更新包的路由器會對應的路由資訊更新到自己的路由表中;當網路穩定後,各路由器會時隔30s,週期性的傳送自己的路由更新資訊;
實驗:如下圖拓撲環境,各路由器都執行rip,然後抓包看看具體的工作過程
配置各路由器的介面ip以及名稱
配置R1
<Huawei>sys Enter system view, return user view with Ctrl+Z. [Huawei]sys R1 [R1]int g0/0/0 [R1-GigabitEthernet0/0/0]ip add 1.1.1.1 24 Jul 13 2021 19:20:53-08:00 R1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state. [R1-GigabitEthernet0/0/0]q [R1]dis ip int b *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 2 The number of interface that is UP in Protocol is 2 The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 1.1.1.1/24 up up GigabitEthernet0/0/1 unassigned down down GigabitEthernet0/0/2 unassigned down down NULL0 unassigned up up(s) [R1]
配置R2
<Huawei>sys Enter system view, return user view with Ctrl+Z. [Huawei]sys R2 [R2]int g0/0/0 [R2-GigabitEthernet0/0/0]ip add 1.1.1.2 24 Jul 13 2021 19:21:35-08:00 R2 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state. int [R2-GigabitEthernet0/0/0]g0/0/1 [R2-GigabitEthernet0/0/1]ip add 2.2.2.2 24 Jul 13 2021 19:21:36-08:00 R2 %%01IFNET/4/LINK_STATE(l)[1]:The line protocol IP on the interface GigabitEthernet0/0/1 has entered the UP state. [R2-GigabitEthernet0/0/1]q [R2]dis ip int b *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 3 The number of interface that is DOWN in Physical is 1 The number of interface that is UP in Protocol is 3 The number of interface that is DOWN in Protocol is 1 Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 1.1.1.2/24 up up GigabitEthernet0/0/1 2.2.2.2/24 up up GigabitEthernet0/0/2 unassigned down down NULL0 unassigned up up(s) [R2]
配置R3
<Huawei>sys Enter system view, return user view with Ctrl+Z. [Huawei]sys R3 [R3]int g0/0/0 [R3-GigabitEthernet0/0/0]ip add 2.2.2.3 24 Jul 13 2021 19:22:05-08:00 R3 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP on the interface GigabitEthernet0/0/0 has entered the UP state. [R3-GigabitEthernet0/0/0]q [R3]dis ip int b *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 2 The number of interface that is DOWN in Physical is 2 The number of interface that is UP in Protocol is 2 The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 2.2.2.3/24 up up GigabitEthernet0/0/1 unassigned down down GigabitEthernet0/0/2 unassigned down down NULL0 unassigned up up(s) [R3]
提示:可以看到3臺路由器各自的相關介面都正確配置了ip地址和名稱;
配置R1路由器上的RIP ,並宣告對應的網路,然後抓包看看對應能抓到什麼包?
提示:可以看到當R1執行rip,並宣告網路以後,對應就能抓到一個request包,其他的都是response包,並且在R1會每隔30秒傳送一次響應包;在抓包的資訊中,我們也能清楚的看到rip傳送請求和響應包目標地址都是255.255.255.255,這個地址就是全網廣播;預設沒有配置RIP的版本時,預設執行的是RIPv1的版本;以此同時我們也能清楚的看到RIP工作在udp的520埠;
配置R2的rip,並宣告對應介面的網路,然後抓包分析
提示:同樣的原理,在R2配置好RIP以後,對應在R1的介面上也能收到對應R2傳送過來的請求包和響應包,並且也能看到R1的響應包;
檢視R1的路由表
[R1]dis ip routing-table Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 8 Routes : 8 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Direct 0 0 D 1.1.1.1 GigabitEthernet0/0/0 1.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 1.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 2.0.0.0/8 RIP 100 1 D 1.1.1.2 GigabitEthernet0/0/0 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0 127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 [R1]dis ip rout pro rip Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Public routing table : RIP Destinations : 1 Routes : 1 RIP routing table status : <Active> Destinations : 1 Routes : 1 Destination/Mask Proto Pre Cost Flags NextHop Interface 2.0.0.0/8 RIP 100 1 D 1.1.1.2 GigabitEthernet0/0/0 RIP routing table status : <Inactive> Destinations : 0 Routes : 0 [R1]
提示:可以看到現在R1的路由表中學習到R2上的2.2.2.2 的路由;
檢視R2的路由表
[R2]dis ip routing Route Flags: R - relay, D - download to fib ------------------------------------------------------------------------------ Routing Tables: Public Destinations : 10 Routes : 10 Destination/Mask Proto Pre Cost Flags NextHop Interface 1.1.1.0/24 Direct 0 0 D 1.1.1.2 GigabitEthernet0/0/0 1.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 1.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0 2.2.2.0/24 Direct 0 0 D 2.2.2.2 GigabitEthernet0/0/1 2.2.2.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 2.2.2.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1 127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0 127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0 127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0 [R2]dis ip rou pro rip [R2]
提示:在R2上並沒有發現學習通過RIP學習到R1的路由,其原因是R1上只宣告了一條和R2直連的網路,預設情況下,路由器它不會學習和當前介面是直連的路由,所以在R2上我們是看不到通過RIP學習到的1.0.0.0的路由;
在R3上執行RIP,並新增一個lo3迴環口,配置其ip地址為3.3.3.3 24,並宣告對應的網路,看看各路由器是否能夠相互學習到自己非直連的路由資訊呢?
[R3]int lo3 [R3-LoopBack3]ip add 3.3.3.3 32 [R3-LoopBack3]rip 1 [R3-rip-1]net 2.0.0.0 [R3-rip-1]net 3.0.0.0 [R3-rip-1]d th [V200R003C00] # rip 1 network 2.0.0.0 network 3.0.0.0 # return [R3-rip-1]dis ip int b *down: administratively down ^down: standby (l): loopback (s): spoofing The number of interface that is UP in Physical is 3 The number of interface that is DOWN in Physical is 2 The number of interface that is UP in Protocol is 3 The number of interface that is DOWN in Protocol is 2 Interface IP Address/Mask Physical Protocol GigabitEthernet0/0/0 2.2.2.3/24 up up GigabitEthernet0/0/1 unassigned down down GigabitEthernet0/0/2 unassigned down down LoopBack3 3.3.3.3/32 up up(s) NULL0 unassigned up up(s) [R3-rip-1]
提示:RIP宣告網路只需宣告其主類即可;所謂主類是根據其ip地址的分類,如A類地址是從1-126,B類是從128-191,C類是從192-223;
檢視R2 是否學習到3.3.3.3/32的路由呢?
提示:可以看到R2的路由表中就有通過RIP學習到了3.0.0.0/8的路由;
檢視R1的路由表
提示:可以看到在R1的路由表中也通過RIP學習到了到達3.0.0.0/8的路由;
檢視R3的路由表
提示:R3也通過RIP學習到了1.0.0.0/8的路由;通過上述實驗我們可以看到,當路由器執行了RIP程式,並宣告了對應介面上的網路以後,對應路由器首先會傳送請求路由資訊包,然後自己每隔30秒將自己宣告的網路對應的路由全網廣播(ripv1);收到路由更新包的路由器會將其對應的路由資訊更新到自己的路由表中;
RIP度量
RIP使用跳數作為度量值來衡量到達目標網路的距離,預設預設情況下,直連網路的路由器跳數為0,但路由器傳送到路由更新時,會把其度量值加1;
驗證:在上述實驗環境中,在R2上抓包,看看3.0.0.0/8這條路由的跳數是多少?
提示:可以看到在R2上抓包,看到3.0.0.0/8這個目標網路的跳數為1,其原因是在R3的路由表中3.0.0.0的路由其跳數為0,在R3傳送該條路由資訊時,會將其跳數加1,所以R2接收到3.0.0.0這條路由時,其跳數為1;
驗證:按照上述的理論,我們在R1上抓包,看看對應3.0.0.0這個目標網路的路由是不是2?
提示:可以看到了到達3.0.0.0的網路,跳數為2;說明在R2發出路由更新包時,將其路由的跳數加1,所以到達R1時就變為2了;同時我們也看到上述的抓包資訊中,並沒有抓到R1傳送到路由更新包,其原因是R1上值宣告了和R2直連的一條網路,對於R2來說,並沒有值得學習的路由,所以R1也乾脆不發了(預設情況下,如果使用RIPv2版本,配置的有認證,R1還是會傳送路由更新資訊);
RIP規定超過15跳的網路為不可達網路;這句話的意思也就告訴我們了在預設情況下,到達目標網路的路由器不能超過16個;同時我們可以理解當我們要在RIP中刪除一條路由資訊,RIP會將對應的路由資訊的跳數置為16跳;
驗證:還是上述的實驗,我們在R2上抓包,然後把R3 上的3.0.0.0從R3的RIP程式刪除,看看R2 收到的路由更新包對應3.0.0.0的跳數是多少?
提示:可以看到對應在R3被取消宣告的3.0.0.0網路,在R3傳送時將其跳數置為16跳,意思就是告訴R2 3.0.0.0網路不可達;此時在R2的路由表中就不會存在3.0.0.0網路的路由;
驗證:檢視R2的路由表,看看對應3.0.0.0網路的路由是否還存在?
提示:可以看到在R2的路由表中並沒有發現3.0.0.0的路由;說明R2理解了R3傳送到路由更新,將其3.0.0.0從路由表中刪除;這也說明了跳數為16跳的路由在RIP中沒有任何意義,當然也不會被其他路由器學習並存放在路由表中;
RIPv1和RIPv2 的區別
從上面的實驗和抓包我們可以看到RIPv1預設是把路由請求和路由更新傳送給目標地址為255.255.255.255(廣播),並且在對應的報文中,並沒有掩碼,只有ip地址,其原因是RIPv1是有類路由協議,它預設會根據ip地址的分類預設新增/8或/16或/24的掩碼,這也說明了RIPv1它不能執行在非預設掩碼的網路環境中,即不支援vlsm(可變長子網掩碼,就是子網劃分,將一個子網劃分為多個子網)和cidr(無類域間路由,和子網劃分相反,是將多個子網聚合為一個子網);除了上述的2各特點,它還不支援認證;
RIPv2的特點,它彌補了RIPv1版本的缺陷,首先它的報文不是全網廣播,而是將路由請求和路由更新傳送到224.0.0.9這個組播地址,只有執行RIPv2版本的RIP程式會從這個組播地址學習路由;其次RIPv2是無類路由協議,所謂無類動態路由協議就是指對應路由資訊在報文中除了有ip地址,它還攜帶掩碼,這也意味著RIPv2支援vlsm和cidr;除此RIPv2支援明文認證和md5密文認證,從某些角度講要比RIPv1安全;
驗證:在R1上抓包,然後更改R2 上的RIP程式,讓其執行為v2 版本,看看對應和v1版本的資料包有什麼不同?
RIPv2的資料包
RIPv1的資料包
提示:從上面抓包來看,V1的資料包是全網廣播,並且路由資訊不攜帶掩碼;v2的資料包不是全網廣播,而是傳送給224.0.0.9這個組播地址,並非且對應路由資訊中有攜帶掩碼;
在R1上檢視路由表
提示:在R1的路由表中我們可以看到有兩條由RIP學習過來的路由,其中一條的掩碼為8,另一條為24;為什麼會有兩條路由呢,其原因是v2版本學習到的是24為掩碼,而v1版本學習到的是8為掩碼,從路由器的路由規則來講,24為掩碼優先匹配(最長掩碼匹配原則嘛),所以當路由器從RIPv2切換為v1時,原來24掩碼的路由不會立馬被路由器刪除(老化時間到了會被刪除);反之,如果路由器從RIPv1切換成RIPv2,對應/8的路由會立馬被刪除;
RIPv1報文格式
RIPv1欄位解釋
RIPv2報文格式
RIPv2報文欄位解釋
RIPv2認證功能的配置
在R2上配置簡單明文認證功能
提示:配置RIP認證,我們需要在對應的介面上配置;上述命令中simple表示簡單明文認證,除此RIP還支援md5認證,後面的plain表示在配置資訊中以明文的方式回顯,所以上述命令表示的意思是在g0/0/0這個介面上開啟rip認證,認證模式為簡單明文認證,並在配置資訊中以明文的方式回顯;
驗證:我們在R1上抓包,看看對應R2傳送到資料包有什麼特點?是否能夠抓到密碼呢?
提示:可以看到我們在R1上抓包,是能夠看到R2傳送到認證資訊,並且從路由更新包中也能清楚的看到對應的密碼;
更改R2上RIP認證模式為md5認證,並在配置資訊回顯以明文方式顯示
再次在R1上抓包,看看是否能夠抓到R2傳送到認證密碼呢?
提示:再次在R1上抓包就看不到對應的密碼了;接下來我們看看R1的路由表,看看是否能夠學習到R2上的路由呢?
提示:可以看到在R1上此時並無法學習到R2上的路由;原因是R1上沒有配置認證;
在R1上配置簡單明文認證,並在配置資訊中以密文方式回顯
提示:後面的cipher的作用就是用來配置在配置資訊中以密文的方式顯示;這是一種防止密碼洩露的一個安全措施吧;
此時R1和R2都配置了認證,並且密碼都相同,在R1上是否能夠學習到R2上的路由呢?
提示:雖然R1上的認證和R2上的認證密碼都是admin,但是他們的使用的認證模式不一樣,所以還是導致R1無法學習到R2的路由;
配置R1的認證模式為md5,並在回顯時以密文方式
提示:現在R1和R2的認證方式和認證密碼都相同,唯一不同的是一個回顯明文顯示,一個回顯密文顯示,我們再來看看R1是否能夠學習到R2的路由呢?
提示:現在我們在R1上學習到R2上的路由;通過上述實驗我們可以總結,在RIP中做認證,必須滿足兩個條件,第一認證模式必須相同,其次就是認證的密碼必須相同,回顯相同和不同不影響認證;這兩個條件必須同時滿足,認證才會通過,否則認證通不過;