有多少运维配置防火墙忽略了长连接?

长连接的使用场景

当业务中客户端和服务器长时间无数据交互,空闲时间超过1800秒,会话会因超时被清除。后续客户端没有重新发起连接,直接发送控制报文时导致数据不通。常见于数据库连接。

1. 重点说明

  • 以天为单位的会话超时需要开启长效会话比例,否则无效,按协议默认值生效。TCP 1800s,UDP 60s。

  • 以秒为单位的会话超时配置(最大65535,约18小时),不属于长效会话,可以不开启长效会话比例。

  • 在服务中定义的超时时间,必须对应策略引用才生效。

  • 在应用中定义的超时时间,不需要策略引用。

  • 应用超时时间优先级低于服务。

  • 命令行show session 或web UI通过策略查看会话超时时间确认是否生效。

  • 仅对配置完成后新建的会话生效,配置前已存在的会话无效。

2. 场景解析

某些业务同一个会话的保持或响应时间比较长,出现以下情况时,会导致业务失败。

  • 业务的连接闲置时间比较长,StoneO会话超时后,客户端和服务器直接连接仍然保持。当请求发起时,客户端不再进行三次握手,如果防火墙开启了syn0检查或响应时间超过三次握手等待时间,相关报文会被丢弃。

  • 客户端发送请求后,服务端响应时间超过应用会话存活期(例如海量数据库查询用时超过1800S),回包经过防火墙时,相关会话已经因超时关闭,从而导致报文被丢弃业务失败。

StoneOS相关会话的生存期需要大于应用的等待和响应时间,如果该时长大于系统预定义生存期,则需要做相关配置。

常见的相关应用:oracle数据库(预定义应用SQLNETv2)、SSL 的UDP数据传输等。

3. 相关概念

  • 业务相关概念

会话闲置时间:只客户端和服务器之间的连接保持时间,只要闲置不超过该时长,客户端和服务器可能会继续使用该连接。

  • StoneOS相关概念

超时时间:相关会话无任何流量命中时的保持时长,超过该时长会话会关闭。

长效会话:超时时间超过65535秒的会话。

4. 相关配置

设置长效会话比例

以天为单位的会话超时需要开启长效会话比例,否则无效,按协议默认值生效。TCP 1800s,UDP 60s。以秒为单位的会话超时配置(最大65535,约18小时),不属于长效会话,可以不开启长效会话比例。

进入【网络】【全局网络参数】开启 【长效会话】开关,比例通常按推荐10%即可。

有多少运维配置防火墙忽略了长连接?_第1张图片

CLI 配置:

longlife-sess-percent 10

通过应用定义长连接

如果需要全局对某个常见应用生效,如全网oracle可以对预定义应用进行配置。配置步骤如下

有多少运维配置防火墙忽略了长连接?_第2张图片

有多少运维配置防火墙忽略了长连接?_第3张图片

CLI配置:

application SQLNETv2

timeout-day tcp 2

exit

如需对特定的业务生效,如某指定的orcale服务器生效,可以通过自定义应用配置。配置步骤如下,不同版本界面有所区别,逻辑是一致的。

有多少运维配置防火墙忽略了长连接?_第4张图片

有多少运维配置防火墙忽略了长连接?_第5张图片

CLI配置:

application oracle-OA

timeout-day tcp 2

exit

signature

application oracle-OA                            #刚才新建的应用名称

src-addr Any

dst-ip 10.0.0.100/32

protocol tcp dst-port 1521

exit

通过服务定义长连接
大部分主流版本当前WEB UI不支持服务修改超时时间,只能CLI配置;

service "tcp1521"

tcp dst-port 1521 timeout-day 2

exit

服务中定义的连接时长需要策略调用才生效。如流量命中服务为ANY的策略,则超时时间为1800s。

5. 生效条件

如下图,因命中预定义应用sqlnetv2生效

有多少运维配置防火墙忽略了长连接?_第6张图片

有多少运维配置防火墙忽略了长连接?_第7张图片

如下图,已经命中预定义应用,超时时间仍然是1800,如应用配置没问题,大概率全局没开启长效会话比例。

如超时时间配置单位为秒,不需要开启长效会话即可生效。如下图

当服务和应用中配置的超时时间不一致,以命中策略服务为准,上图会话配置如下;

有多少运维配置防火墙忽略了长连接?_第8张图片

有多少运维配置防火墙忽略了长连接?_第9张图片

 
 

你可能感兴趣的:(运维,java,网络)