ICMP&重定向

ICMP (Internet Control Message Protocol Internet控制報文協議)

ICMPTCP/IP協議族的一個子協議,用於在IP主機路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。

ICMP協議是一種面向非連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義,它是TCP/IP協議族的一個子協議,屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。

ICMP的消息可以分爲錯誤消息,請求消息和響應消息。

有以下功能:

偵測遠端主機是否存在;

建立及維護路由資料;

重導資料傳送路徑;

資料流量控制;

 

ICMP3個重要類型:

路由通告和路由選擇:分別是類型9和類型10,它們用於ICMP路由器發現協議(IRDP),IRDP協議用於某些操作系統發現本地路由器;

重定向:ICMP類型5,被路由器用於通知主機去往指定目標的網關,是數據鏈路上的另外一臺路由器;

 

ICMP重定向(ICMP Redirect)

網絡中的路由器通過相互之間的共同努力,將用戶的數據包轉發到目的地。通常情況下,主機都會將去往遠程網絡的數據包發送到路由器,路由器再盡最大努力轉發數據。但是在某些情況下,收到數據包的路由器可能並不是去往目的地的最優選擇,也就是說該路由器並不在源與目標的路徑當中,或者說數據源應該將數據交給其它路由器來轉發。如果某臺路由器真的發現自己不應該爲用戶轉發數據,而希望讓用戶選擇其它路由器來轉發數據,那麼它就會通過向數據源發送ICMP重定向(ICMP Redirect)來告訴對方,讓對方不要再將數據包發向自己,而應該發到其它路由器.

 

需要路由器向源發送ICMP重定向的情況有兩種:

  1. 1.  當路由器從某個接口收到數據包後,還要將數據包從同一個接口發往目的地,就是路由器收到數據包的接口正是去往目的地的出口時,則會向源發送ICMP重定向,通告對方直接將數據包發向自己的下一跳即可,不要再發給自己;

  2. 2.  數據包的源IP和自己轉發時的下一跳IP地址是同網段時,則會向源發送ICMP重定向,通告對方直接將數據包發向自己的下一跳

 

路由器在向數據源發送ICMP重定向的同時,也會正常轉發收到的數據包,並不會中斷網絡; ICMP重定向是基於接口配置的,默認爲開啓狀態。

wKioL1XZN9ugrNV6AARN5lva76E821.jpg

Eg:

wKiom1XZNeiDqiJLAACioIEvdbY842.jpg

R1#show running-config

interface FastEthernet0/0

 ipaddress 192.168.1.1 255.255.255.0

 duplexauto

 speedauto

!

 

ip route 192.168.2.0 255.255.255.0192.168.1.2

 

 

R2#show running-config

interface FastEthernet0/0

  ipaddress 192.168.2.1 255.255.255.0

!

interface FastEthernet0/0

 ipaddress 192.168.1.2 255.255.255.0

 duplexauto

 speedauto

!

R3#show running-config

interface FastEthernet0/0

 ipaddress 192.168.1.3 255.255.255.0

 duplexauto

 speedauto

 

!

ip route 0.0.0.0 0.0.0.0 192.168.1.1

 

驗證:

R3#ping 192.168.2.1

R3#debug ip icmp

*Mar  1 00:11:53.039: ICMP:redirect rcvd from 192.168.1.1- for 192.168.2.1 use gw 192.168.1.2

*Mar  100:11:53.091: ICMP: echo reply rcvd, src 192.168.2.1, dst 192.168.1.3

*Mar  100:11:53.159: ICMP: echo reply rcvd, src 192.168.2.1, dst 192.168.1.3

*Mar  100:11:53.191: ICMP: echo reply rcvd, src 192.168.2.1, dst 192.168.1.3

*Mar  100:11:53.219: ICMP: echo reply rcvd, src 192.168.2.1, dst 192.168.1.3

*Mar  100:11:53.271: ICMP: echo reply rcvd, src 192.168.2.1, dst 192.168.1.3

 

R1#debug ip icmp

ICMP packet debugging is on

*Mar  1 00:11:53.651: ICMP:redirect sent to 192.168.1.3 for dest 192.168.2.1, use gw 192.168.1.2


 

關閉ICMP重定向:

R1(config)#int f0/0       

R1(config-if)#no ip redirects

 

在接口上開啓HSRP後,默認會關閉ICMP重定向的功能,在IOS 12.1(3)T和以後的版本可以手工開啓ICMP重定向功能。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章