如果自适应安全设备(ASA)的每个目标子网有两个出口接口,并且通向目标的首选路由已从路由表中删除一段时间,则当首选路由重新添加到路由表时,用户数据报协议(UDP)连接可能会失败。TCP连接也可能会受到此问题的影响,但由于TCP检测到数据包丢失,这些连接由终端自动断开,并在路由更改后使用更优的路由重建。
如果使用路由协议,并且拓扑更改触发ASA上的路由表更改,也会出现此问题。
要遇到此问题,ASA的路由表必须更改。这在双ISP链路中以冗余方式存在或当ASA通过IGP(OSPF、EIGRP、RIP)学习路由时非常常见。
当主ISP链路重新联机或上述IGP发现重新收敛时,就会发生此问题,因为重新收敛会将ASA使用的较不优先的路由替换为较优先的低度量路由。一旦主路由或首选路由重新安装到ASA的路由表中,您就会看到长时间连接(例如UDP SIP注册、GRE等)失败。
本文档中的信息基于下列硬件和软件版本:
任何Cisco ASA 5500系列自适应安全设备
ASA版本8.2(5)、8.3(2)12、8.4(1)1、8.5(1)及更高版本
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
如果从ASA的路由表中删除了路由表条目,并且没有从接口向外到达目标的路由,则ASA将删除通过防火墙建立的与该外部目标的连接。发生此情况后,便可以使用另一个接口重新建立连接,同时存在目的地的路由条目。
但是,如果向表中添加更具体的路由,则连接不会更新为使用新的、更具体的路由,而是继续使用不太理想的接口。
例如,假设防火墙有两个面向Internet的接口 — “outside”和“backup”,并且这两个路由存在于ASA的配置中:
route outside 0.0.0.0 0.0.0.0 10.1.1.1 1 track 1 route backup 0.0.0.0 0.0.0.0 172.16.1.1 254
如果外部接口和备份接口均为“up”,则通过防火墙出站建立的连接将使用外部接口,因为它的首选度量为1。如果外部接口关闭(或跟踪路由的SLA监控功能遇到与被跟踪的IP的连接丢失),则使用外部接口的连接将断开并使用备份接口重新构建,因为备份接口是唯一具有到达目标的路由的接口。
当重新打开外部接口或跟踪的路由再次成为首选路由时,会发生此问题。路由表更新为首选原始路由,但现有连接仍存在于ASA上并穿越备份接口,不会在外部接口上删除并重新创建具有更首选度量的连接。这是因为ASA的接口特定路由表中仍存在备份默认路由。连接继续使用首选路由较少的接口,直到连接被删除;对于UDP,这可能是不确定的。
这种情况可能导致长期连接问题,例如外部SIP注册或其他UDP连接。
为了解决此特定问题,ASA中添加了一个新功能,如果路由表中添加了通往目的地的更首选路由,该功能将导致连接中断并在新接口上重建。要激活该功能(默认情况下已禁用),请为timeout floating-conn命令设置非零超时。此超时(以HH:MM:SS指定)指定ASA在将更多首选路由添加到路由表后断开连接之前等待的时间:
这是启用该功能的CLI示例。使用此CLI时,如果现有连接上收到数据包,且现有连接具有通向目的地的不同、更首选的路由,则连接将在1分钟后断开(然后使用新的、更首选的路由重建):
ASA# config terminal ASA(config)# timeout floating-conn 0:01:00 ASA(config)# end ASA# show run timeout timeout conn 1:00:00 half-closed 0:10:00 udp 0:50:00 icmp 0:00:02 timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00 timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00 timeout sip-provisional-media 0:02:00 uauth 0:01:00 absolute timeout tcp-proxy-reassembly 0:01:00 timeout xlate 0:01:00 timeout pat-xlate 0:00:30 timeout floating-conn 0:01:00 ASA#
此功能在版本8.2(5)、8.3(2)12、8.4(1)1和8.5(1)中(包括ASA软件的更高版本)添加到ASA平台。
如果运行不实施此功能的ASA代码版本,问题的解决方法是手动刷新继续采用较少首选路由的UDP连接,尽管通过clear local-host <IP>或clear-conn <IP> 提供更好的路由。
命令参考在timeout部分下列出此新功能。
版本 | 发布日期 | 备注 |
---|---|---|
1.0 |
21-Jun-2012
|
初始版本 |