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重定向功能。

查看测试结果:

相关文章
相关标签/搜索