跳转至主要内容

在过去的几个星期里,有几个人问我关于神秘出现然后又消失的路线。比如说

航线打印

默认网关:10.10.10.1。

网络地址 网关地址 子网掩码 重定向寿命
172.16.0.0       10.10.10.172     255.255.0.0
图1 - 原始路由表

然后

航线打印

默认网关:10.10.10.1。

网络地址 网关地址 子网掩码 重定向寿命
172.16.0.0       10.10.10.172     255.255.0.0
172.16.1.2 255.255.255.255 10.10.10.254 5分钟。
图2 - 添加的动态路线

5分钟后

航线打印

默认网关:10.10.10.1。

网络地址 网关地址 子网掩码 重定向寿命
172.16.0.0       10.10.10.172     255.255.0.0
图3 - 删除的动态路由

当STCP协议栈收到一个路由器发来的ICMP重定向消息,告诉它使用不同的路由器时,就会添加这些动态路由。正如显示的那样,这些路由有5分钟的寿命,所以5分钟后它们会被删除。当然,如果堆栈收到另一个重定向消息,它们可以立即回来。

详细描述一下过程;假设定义了STCP,并通过路由器10.10.10.172定义了一条通往172.16.0.0/16网络的路由。另外,网络上还有一个IP地址为10.10.10.254的路由器。我把这些路由器称为R-172和R-254。R-172和R-254都可以到达172.16.0.0/16网络,但R-172使用的是高带宽的T3连接,而R-254使用的是低带宽的拨号ISDN连接。

STCP路由如上图1,注意没有使用R-254的明文路由。

当R-172的T3链路发生故障时,它无法再到达172.16.0.0/16网络,但它知道R-254可以,所以当172.16.1.2的数据包到来时,它就会把数据包转发给R-254,同时也会向发送方发送一个ICMP重定向消息。发送方,也就是本例中的STCP,建立了一个动态的主机路由,表示要到达172.16.1.2需要将数据包发送给R-254,图2。

由于这些都是主机路由,172.16.0.0/16网络上的每一台主机只要发送一个数据包,就会得到自己的路由,并有自己的5分钟计时器。路由命令显示了每个路由的当前剩余寿命。

航线打印

默认网关:10.10.10.1。

网络地址 网关地址 子网掩码 重定向寿命
172.16.0.0       10.10.10.172     255.255.0.0
172.16.1.1 255.255.255.255 10.10.10.254 5 mins
172.16.1.8 255.255.255.255 10.10.10.254 2分钟
172.16.1.23 255.255.255.255 10.10.10.254 2分钟
172.16.1.65 255.255.255.255 10.10.10.254 2分钟
172.16.1.101 255.255.255.255 10.10.10.254 3分钟
172.16.1.200 255.255.255.255 10.10.10.254 5分钟。
图4 - 多主机路由

当R-172的T3链路出现时,应该发生的情况是,没有主机路由的主机使用R-172,就像什么也没发生过一样。有主机路由的主机使用R-254,R-254知道R-172的链路恢复了(路由器之间交换路由状态),所以将数据包转发给R-172。R-254也应该发送一个ICMP重定向回发件人,结果是一个新的使用R-172的主机路由(图5)。

航线打印

默认网关:10.10.10.1。

网络地址 网关地址 子网掩码 重定向寿命
172.16.0.0       10.10.10.172     255.255.0.0
172.16.1.9 255.255.255.255 10.10.172 3分钟
172.16.1.18 255.255.255.255 10.10.10.172 4分钟。
172.16.1.20 255.255.255.255 10.10.10.172 2分钟
图5--主机路由重定向回原路由器

在某些情况下,STCP不创建任何动态路由可能是有意义的。例如,如果 R-254 宕机了,而 R-172 的信息是一个从未被删除的静态条目,怎么办?在这种情况下,到172.16.0.0/16网络上的主机的数据包就会在R-254无法到达时被丢弃。当R-172的T3恢复后就会出现这样的情况:那些没有主机路由的172.16.0.0/16主机是可以到达的,但是那些有R-254主机路由的主机却无法到达。随着时间的推移,随着R-254路由的超时,会有越来越多的主机可以到达,但是要完全恢复需要5分钟。

一些安全专家也认为,以这种方式创建的动态路由是一个安全问题。网络上的任何一台主机都可以发送ICMP重定向消息,将数据包重定向到不同的网关上,在这个网关上可以捕获含有敏感内容的数据包,如、密码或账户信息。

那么有没有办法防止这些路线的产生呢?

是的,STCP配置参数listen_redirects控制STCP如何处理ICMP重定向消息。默认设置"on"告诉STCP创建这些动态路由,设置"off"告诉STCP忽略ICMP重定向消息。

作为:list_stcp_params listen_redirects。

侦听ICMP重定向[关/开](listen_redirects)开启。 

如:set_stcp_param listen_redirects off。

将监听改为ICMP重定向 (listen_redirects)
从开到关
图6 - 设置 listen_redirect STCP参数

注意,这个参数会影响整个系统,你不能指定STCP应该监听来自某些路由器的重定向,而不是其他路由器。

© 2020 Stratus Technologies.