思科路由器:ICMP重定向(ICMP Redirect)
思科路由器:ICMP重定向(ICMP Redirect)
网络中的路由器通过相互之间的共同努力,将用户的数据包转发到目的地。通常情况下,主机都会将去往远程网络的数据包发送到路由器,路由器再尽最大努力转发数据。但是在某些情况下,收到数据包的路由器可能并不是去往目的地的最优选择,也就是说该路由器并不在源与目标的路径当中,或者说数据源应该将数据交给其它路由器来转发。如果某台路由器真的发现自己不应该为用户转发数据,而希望让用户选择其它路由器来转发数据,那么它就会通过向数据源发送ICMP重定向(ICMP Redirect)来告诉对方,让对方不要再将数据包发向自己,而应该发到其它路由器。
需要路由器向源发送ICMP重定向的情况有两种:
★ 1.当路由器从某个接口收到数据包后,还要将数据包从同一个接口发往目的地,就是路由器收到数据包的接口正是去往目的地的出口时,则会向源发送ICMP重定向,通告对方直接将数据包发向自己的下一跳即可,不要再发给自己。
★ 2.数据包的源IP和自己转发时的下一跳IP地址是同网段时,则会向源发送ICMP重定向,通告对方直接将数据包发向自己的下一跳。
注:路由器在向数据源发送ICMP重定向的同时,也会正常转发收到的数据包,并不会中断网络。
配置ICMP重定向
说明:ICMP重定向是基于接口配置的,默认为开启状态。
说明:以上图为例,测试ICMP重定向,其中,R1,R2,R3的接口F0/0在10.1.1.0/24网段,R2和R4的接口F0/1在20.1.1.0/24网段,而R3将去往任何目的的数据全部交给R1。
1.配置基础网络环境
(1)配置R1:
r1(config)#int f0/0
r1(config-if)#ip address 10.1.1.1 255.255.255.0
r1(config-if)#no sh
r1(config-if)#exit
r1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.2
说明:R1将去往任何目的地的数据包全部交给10.1.1.2,即交给R2。
(2)配置R2:
r2(config)#int f0/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 f0/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(config)#int f0/0
r3(config-if)#ip add 10.1.1.3 255.255.255.0
r3(config-if)#no sh
r3(config-if)#exit
r3(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
说明:R3将去往任何目的地的数据包全部交给10.1.1.1,即选择R1作为网关。
(4)配置R4:
r4(config)#int f0/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在20.1.1.0/24。
2.测试ICMP重定向
(1)在R3上向目标网络20.1.1.0发送数据包来测试ICMP重定向,并且打开debug观察数据包:
r3#debug ip icmp
ICMP packet debugging is on
r3#
r3#ping 20.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 20.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/84/200 ms
r3#
*Mar 1 00:15:39.075: ICMP: redirect rcvd from 10.1.1.1- for 20.1.1.4 use gw 10.1.1.2
*Mar 1 00:15:39.175: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:15:39.291: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:15:39.323: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:15:39.383: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:15:39.403: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
r3#
说明:从上面信息可以看出,由于R3的网关是10.1.1.1,所以会将去往20.1.1.0/24的数据包发给网关R1,但是R1从接口F0/0收到数据包后,检查路由表得知需要再将数据包从相同接口F0/0发给10.1.1.2,不仅满足发送ICMP重定向情况的第一条同接口进出,也满足第二条源和下一跳同网段,所以R1向源发送了ICMP重定向,数据包中明确告诉R3将去往20.1.1.4的数据包直接交给10.1.1.2,即交给R2。从上也可以看出,让R1来转发数据包确实是无谓举动。
(2)更改R3的路由方式:
r3(config)#ip route 0.0.0.0 0.0.0.0 f0/0
说明:如果将R3的路由改为直接指定出接口,而不使用下一跳IP地址,则不会造成R1发送ICMP重定向,因为R3在此类路由方式下,并不会将数据包发向R1。
(3)测试R3更改路由方式后的情况:
r3#debug ip icmp
ICMP packet debugging is on
r3#
r3#ping 20.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 20.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 52/86/176 ms
r3#
*Mar 1 00:33:41.511: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:33:41.607: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:33:41.663: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:33:41.719: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
*Mar 1 00:33:41.779: ICMP: echo reply rcvd, src 20.1.1.4, dst 10.1.1.3
r3#
说明:可以看出,R1并没有再发送ICMP重定向,因为R3并没有将去往20.1.1.0/24的数据包发向R1,具体原因,由普通ARP的原理可以得知。
3.关闭ICMP重定向
(1)在R1接口上关闭ICMP重定向:
r1(config)#int f0/0
r1(config-if)#no ip redirects
说明:需要开启ICMP重定向,输入命令ip redirects;ICMP重定向功能不建议关闭。
注:在接口上开启HSRP后,默认会关闭ICMP重定向的功能,在IOS 12.1(3)T和以后的版本可以手工开启ICMP重定向功能。
-----------------------------------
ICMP重定向(ICMP Redirect)
文章来源:https://blog.51cto.com/233705835/988380
ping与Tracert简介(列表、list、全)pinglist、tracertlist、ICMPLIST
http://www.zh-cjh.com/wenzhangguilei/2460.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。
转载请保留出处: www.zh-cjh.com珠海陈坚浩博客 » 思科路由器:ICMP重定向(ICMP Redirect)
作者: cjh
手机扫一扫,手机上查看此文章: |
一切源于价值!
其他 模板文件不存在: ./template/plugins/comment/pc/index.htm