ICMP重定向

R1发送一个重定向报文给主机172.16.1.1R2作为网关去到达10.1.1.1

图片.png

何时发送重定向报文:

1.信息包进入路由器的接口是信息包被发送的同一个接口。

2.IP源地址的子网或网络是路由信息包的下一跳IP地址的相同子网或网络。

3.数据包不来源路由。

4.配置内核发送重定向。 (默认情况下, Cisco路由器发送ICMP重定向。 接口子命令no ip redirects可以被用于禁用ICMP重定向。)


ICMP重定向的过程:

图片.png


实验拓扑,接上一篇ICMP网络控制信息协议


R3:

ip route 14.1.1.0 255.255.255.0 10.1.1.2   //去往R4 14.1.1.4的路由下一跳指向R2


R2:

ip route 14.1.1.0 255.255.255.0 10.1.1.1   //去往R4 14.1.1.4的路由下一跳指向R1


R4:

ip route 10.1.1.0 255.255.255.0 14.1.1.1 


测试:

R3#debug ip packet detail
IP packet debugging is on (detailed)
R3#

R3#ping 14.1.1.4
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 14.1.1.4, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/5 ms


debug 信息显示如下:

*Nov 16 11:50:03.152: IP: tableid=0, s=10.1.1.2 (Ethernet0/2), d=10.1.1.3 (Ethernet0/2), routed via RIB
*Nov 16 11:50:03.152: IP: s=10.1.1.2 (Ethernet0/2), d=10.1.1.3 (Ethernet0/2), len 56, rcvd 3
*Nov 16 11:50:03.152:     ICMP type=5, code=1
*Nov 16 11:50:03.152: IP: s=10.1.1.2 (Ethernet0/2), d=10.1.1.3, len 56, stop process pak for forus packet
*Nov 16 11:50:03.153:     ICMP type=5, code=1

通过wireshark 抓包显示如下:

图片.png

图片.png



ICMP的另一个典型应用是traceroute

traceroute基于报文头中的TTL值来逐跳跟踪报文的转发路径。

为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。

traceroute是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。


测试:

在R3上进行traceroute

R3#traceroute 14.1.1.4 numeric
Type escape sequence to abort.
Tracing the route to 14.1.1.4
VRF info: (vrf in name/id, vrf out name/id)
  1 10.1.1.2 1 msec 0 msec 1 msec
  2 10.1.1.1 1 msec 0 msec 1 msec
  3 14.1.1.4 0 msec *  1 msec


图片.png