cisco7200 路由器响应不是发给它的 icmp 消息

网络工程 思科 路由 国际会议
2021-07-13 11:23:11

我正在尝试使用通过集线器连接的三个路由器的非常简单的拓扑(如果重要的话,在 GNS3 中)。我尝试从一个路由器 ping 到另一个路由器的时间说 R1 到 R2。R3 回复 ICMP 重定向消息,导致 R1 重新向 R2 发出 ping 请求。循环继续无限破坏模拟网络。问题是为什么 R3 回复 R1 的 ICMP 消息不是指向它的(ping 从 R1 到 R2)。 在此处输入图片说明

R3 路由表:-

R3>enable
Password:
R3#show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
O        10.1.0.0/16 [110/2] via 192.168.0.1, 00:58:17, FastEthernet1/0
O        10.2.0.0/16 [110/2] via 192.168.0.2, 00:58:17, FastEthernet1/0
C        10.3.0.0/16 is directly connected, FastEthernet0/0
L        10.3.0.1/32 is directly connected, FastEthernet0/0
C     192.168.0.0/16 is directly connected, FastEthernet1/0
      192.168.0.0/32 is subnetted, 1 subnets
L        192.168.0.3 is directly connected, FastEthernet1/0
R3#

更新:问题不在于 ICMP 重定向,而是任何路由器都会将它无法处理的 ICMP ping 数据包放回到它到达的接口,从泛洪网络直到 TTL 到期。

更新2:用交换机替换集线器解决了问题。

3个回答

这是预期的行为。由于您最初使用的是集线器(它将数据包发送到除接收数据包之外的所有接口之外的所有接口),路由器正在接收发往同一子网上其他路由器的数据包。结果,这些路由器向 ping 发起者发送重定向,告诉它“不要将您的数据包发送给我,将它们直接发送到您尝试 ping 的路由器”。

正如您所提到的,使用交换机而不是集线器可以解决这个问题。这是因为交换机确保只有 ping 目的地的路由器才能接收数据包。由于子网上的其他路由器没有收到这些数据包,它们不再发送重定向。

问题是 CISCO 路由器假定它位于交换机而不是集线器后面,因此默认情况下,当接收到错误 MAC 地址的数据包时,它会尝试通过替换使用自己的原始 SRC MAC 并重新发送数据包(使用 TTL-1)。当然,在集线器的情况下,它不仅不能解决问题,而且会使情况变得更糟,因为现在其他路由器(在我们的案例中至少有一个)接收到错误 MAC 的消息,从而导致“无限”泛洪。

R3 可以明确地处理数据包。R3 有一条从 f1/0 到 R2 的路由。

当路由器的下一跳数据包从接收数据包的同一接口出去时,您将获得 ICMP 重定向。