IGP-靜態路由之ICMP Redirect

ICMP重定向(ICMP Redirect)

1.概述

在以太網中路由器之間基於IP路由轉發,將用戶的數據包盡力而爲的轉發到目的地。一般狀況下,主機都會將去往遠程的數據包發送到下一跳路由器,路由器再盡最大努力轉發數據。可是在某些狀況下,收到數據包的路由器可能並非去往目的地的最優選擇,也就是說該路由器並不在源於目標的路徑當中,或者說數據源應該將數據交給其它路由器來轉發數據(最佳路由器)。若是某臺路由器真的發現本身不該該爲用戶轉發數據,而但願讓用戶選擇其餘路由器來轉發數據,那麼它就會經過向數據源發送ICMP重定向(ICMP Redirect)來告訴對方,讓對方不要再將數據包發向本身,而是發送到其餘最佳的路由器。網絡

這裏因爲IP是不可靠的容易出現丟包,因此爲盡力而爲的在IP網絡中傳輸。測試

2.路由器向源發送ICMP重定向的狀況有兩種:

2.1 當路由器從某個接口收到數據包後,還要將數據包從同一個接口發往目的地,也就是路由器收到數據包的接口正是去往目的地的出口時,則會向源發送ICMP 重定向,通告對方直接將數據包發向本身的下一跳便可,不要再發給本身。spa

2.2 數據包源IP和本身轉發時下一跳IP地址是同一網段時,也會像源發送ICMP重定向,通告對方直接將數據包轉發給本身的下一跳路由器。debug

注:路由器再向數據發送ICMP重定向的同時,也會正常轉發收到的數據包,並不會中斷網絡。3d

3.實驗案例:

3.1 實驗拓撲

注:ICMP在Cisco設備中是基於接口下配置的,默認爲開啓狀態。blog

3.2 拓撲說明

這裏主要用到4個路由器,其實Internet這個路由器暫時無需配置,R1,R2,R3的接口G0/0在10.1.1.0/24這個廣播域中;R2和R4的接口G0/1在20.1.1.0/24這個廣播域中;而R3將去往任何目的的數據所有須要交給R1進行轉發。接口

4.實驗過程

4.1 基礎網絡環境配置

(1)配置R1ip

R1>enable 
R1#configure terminal 
R1(config)#interface GigabitEthernet0/0
R1(config-if)#ip address 10.1.1.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.2
R1(config)#end路由

說明:R1將去往任何目的地的數據包所有交給10.1.1.2這個下一跳地址,即交給R2來轉發。terminal

(2)配置R2

R2#conf t
R2(config)#int g0/0
R2(config-if)#ip add 10.1.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int g0/1
R2(config-if)#ip add 20.1.1.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit

 說明:R2同時鏈接10.1.1.0/24和20.1.1.0/24這兩個直連網段。

(3)配置R3

R3#conf t
R3(config)#int g0/0
R3(config-if)#ip add 10.1.1.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
R3(config)#end

說明:R3將去往任何目的地的數據包所有交給10.1.1.1,也就是選擇R1做爲網關進行轉發。

(4)配置R4

R4#conf t
R4(config)#int g0/1
R4(config-if)#ip add 20.1.1.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
R4(config)#ip route 0.0.0.0 0.0.0.0 20.1.1.2
R4(config)#end

說明:因爲R4與R2直連都在20.1.1.0/24網段內,因此均可以相互通信,可是R1,R2,R3在10.1.1.0/24網段內若是沒有路由默認R1和R3是不能訪問R4,因爲以前R3下一跳路由指向R1,而後R1下一跳又指向R2,由此R4必須向R2指向一條回指路由(反向路由,回程路由)。由於靜態路由雙向互指才能夠通信。

4.2 測試ICMP重定向

(1)在R3上向目標網絡20.1.1.0發送數據包來測試ICMP重定向,而且打開debug觀察數據包:

說明:從上面信息能夠看出,因爲R3的網關是10.1.1.1,因此會將去往20.1.1.0/24的數據包發給網關R1,可是R1從接口G0/0收到數據包後,檢查路由表得知須要再將數據包從相同接口G0/0發給10.1.1.2,不只知足發送ICMP重定向狀況的第一條同接口進出,也知足第二條源和下一跳同網段,因此R1向源發送了ICMP重定向,數據包中明確告訴R3將去往20.1.1.4的數據包直接交給10.1.1.2,即交給R2。

(2)更改R3的路由方式

查看路由配置

R3(config)#do show run | in ip route
ip route 0.0.0.0 0.0.0.0 10.1.1.1

配置靜態路由由接口轉發:

R3(config)#no ip route 0.0.0.0 0.0.0.0 10.1.1.1
R3(config)#ip route 0.0.0.0 0.0.0.0 g0/0

查看抓包狀態:

說明:能夠看出,R1並無再發送ICMP重定向,由於R3並無將去往20.1.1.0/24的數據包發向R1,具體緣由,由普通ARP的原理能夠得知。

4.3 關閉ICMP重定向

在R1接口上關閉ICMP重定向:

R3(config)#int g0/0
R3(config-if)#no ip redirects

 

更改路由配置:

R3(config)#no ip route 0.0.0.0 0.0.0.0 GigabitEthernet0/0
R3(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1

說明:須要開啓ICMP重定向,輸入命令ip redirects;ICMP重定向功能不建議關閉。
注:在接口上開啓HSRP後,默認會關閉ICMP重定向的功能,在IOS 12.1(3)T和之後的版本能夠手工開啓ICMP重定向功能。

查看測試結果:

相關文章
相關標籤/搜索