目录

简介

先决条件

要求

使用的组件

规则

ICMP 重定向消息如何工作

何时发送ICMP 重定向？

相关信息

简介

Internet Control Message Protocol (ICMP) 用于针对在路由数据包时遇到的错误与初始源通信，以及尝试流量控制。本文档讨论 ICMP 重定向以及网络中何时发生重定向。

先决条件

要求

需要了解有关 IP 协议簇的知识。

使用的组件

所有系列的 Cisco 路由器和 Cisco IOS® 软件版本都支持此功能。

规则

有关文件规则的更多信息请参见“ Cisco技术提示规则”。

ICMP 重定向消息如何工作

路由器使用 ICMP 重定向消息来通知数据链路上的主机：对于特定目标，有更好的路由可用。

例如，两个路由器 R1 和 R2 被连接到主机 H 所在的同一以太网段中。主机 H 的默认网关被配置为使用路由器 R1。主机 H 将数据包发送到路由器 R1，以到达远程分支机构主机 10.1.1.1 上的目标。路由器 R1 在查询其路由表后发现，到达主机 10.1.1.1 的下一跳是路由器 R2。现在，路由器 R1 必须将数据包在接收该数据包的同一个以太网接口上转发出去。路由器 R1 将数据包转发给路由器 R2，并向主机 H 发送了一条 ICMP 重定向消息。该消息通知主机，到达主机 10.1.1.1 的最佳路由是通过路由器 R2。主机 H 随后将所有要发送给主机 10.1.1.1 的后续数据包转发给路由器 R2。

如网络图中所示，此调试消息指示路由器 R1 将 ICMP 重定向消息发送给主机 H (172.16.1.1)。

R1#

debug ip icmp

ICMP packet debugging is on

*Mar 18 06:28:54: ICMP:redirect sent to 172.16.1.1 for dest 10.1.1.1, use gw 172.16.1.200

R1#

路由器 R1 (172.16.1.100) 向主机 H (172.16.1.1) 发送重定向，以便使用路由器 R2 (172.16.1.200) 作为网关来到达目的地 10.1.1.1。

何时发送ICMP 重定向？

Cisco 路由器在满足以下所有条件时发送 ICMP 重定向：

- 数据包进入路由器的接口与数据包被路由出的接口是同一个接口。

- 源 IP 地址的子网或网络与被路由的数据包的下一跳 IP 地址处于同一个子网或网络上。

- 数据报不是源路由的。

- 内核被配置为发送重定向。（默认情况下，Cisco 路由器发送 ICMP 重定向。接口子命令 no ip redirects 可用于禁用 ICMP 重定向。）

注意：如果接口上配置了热备份路由器协议(HSRP)，则默认情况下会禁用ICMP重定向。在 Cisco IOS 软件版本 12.1(3)T 及更高版本中，允许在配置了 HSRP 的接口上启用 ICMP 重定向。有关详细信息，请参阅Hot Standby Router Protocol 特性和功能中的对 ICMP 重定向的 HSRP 支持部分。

例如，如果路由器在其某个接口上有两个 IP 地址：

interface ethernet 0

ip address 171.68.179.1 255.255.255.0

ip address 171.68.254.1 255.255.255.0 secondary

如果路由器收到从子网 171.68.179.0 中的主机发往子网 171.68.254.0 中的主机的数据包，路由器不会发送 ICMP 重定向，因为只满足了第一个条件，没有满足第二个条件。

路由器发送了重定向的原始数据包仍将被路由到正确的目标。

相关信息

- 对 ICMP 重定向的 HSRP 支持

- 现场通知：*Expired* FN - 23074 - IOS接受错误的ICMP重定向

- IP 路由协议技术支持页

- 技术支持和文档 - Cisco Systems