跳转至主要内容

最近我与一位因公司防火墙设置受阻的同事进行了讨论。该防火墙会清除状态表中任何超过10分钟闲置的连接。 不幸的是,当防火墙接收到状态表中不存在的连接数据包时,会直接丢弃该数据包而不作任何提示。这意味着STCP应用程序可能需要长达8分钟才能意识到无法与终端通信,进而重新建立连接。这种延迟正困扰着他的用户。

此时我建议修改应用程序,添加可配置的应用层保持活动消息。遗憾的是,修改应用程序并非可行方案。该应用程序也未设置SO_KEEPALIVE套接字选项,因此即使将系统范围内的保持活动计时器从默认的2小时缩短至9分钟,也无法解决问题。

解决方案是采用第三方TCP层保持活动分段。该分段看似来自应用程序(使用模块的IP地址作为源地址,应用程序的TCP端口作为源端口),并发送至远程主机的IP地址和端口。防火墙将此识别为活动状态,从而在状态表中维持该连接。

关于我的3rd_party_keep_alive工具的说明和示例内容过长,不适合放在这篇博客文章中,您可在此处查看详细信息。