ASA-长连接策略

一、长连接应用场景

长连接(Long Connection)通常代表TCP 长连接,TCP会话建立后,无论是否有数据发送,双方都将通过发送链路检测包维持会话。长连接的关闭通常由一方,无论是服务器还是客户端都可以主动关闭。

长连接通常用于操作频繁的点到点通信。例如金融行业部分Web服务器需要长时间连接数据库,数据库和Web服务器之间可能存在防火墙,防火墙的存在默认会话保活时长,如果TCP长连接连接时长超出了默认会话保活时长,则会导致防火墙将长连接掐掉,应用同数据库的后续数据转发将会被丢弃。

二、ASA默认会话保活时长

ASA中通过show run timeout可以查询到各种协议的默认会话超时时长。关注一些常用协议的会话超时时长:

  • TCP连接超时时长为1小时

  • TCP半连接超时时长为10分钟

  • UDP连接超时时长为2分钟

  • ICMP超时时长为2秒

ASA#show run timeout
timeout xlate 3:00:00
timeout pat-xlate 0:00:30
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 sctp 0:02: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:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
timeout floating-conn 0:00:00
timeout conn-holddown 0:00:15
timeout igp stale-route 0:01:10

三、配置长连接

ASA中配置长连接策略,首先需要配置访问控制列表,放行相关流量(流量的方向需要注意,否则策略容易调用不生效)。通过编写ACL匹配长连接的流量,Class-map调用长连接ACL,Policy-map调用Class-map并设置超时时间,Service-policy则用于调用Policy-map到固定Zone(或叫接口)。

1、ACL

编写SSH长连接ACL,允许对象组Server_group中的对象访问对象组Client_group中对象的TCP 22端口。

access-list SSH_LongLink extended permit tcp object-group Server_group object-group Client_group eq ssh

2、Class-map

编写Class-map,调用上一步创建的ACL。

class-map Server_to_Client_LongLinkCM
 match access-list SSH_LongLink

3、Policy-map

编写Policy-map,调用上一步创建的Class-map,并对匹配的会话设置连接超时时间为24小时。

policy-map Server_to_Client_LongLinkPM
 class Server_to_Client_LongLinkCM
   set connection timeout idle 24:00:00

4、Service-policy

编写Service-policy,调用上一步创建的Policy-map到相关接口。

service-policy Server_to_Client_LongLinkPM interface Inside

创建完成后,通过show conn detail查看相关会话的超时时间即可。