linux – TCP Keepalive和防火墙杀死空闲会话

前端之家收集整理的这篇文章主要介绍了linux – TCP Keepalive和防火墙杀死空闲会话前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在客户站点中,网络团队在客户端和服务器之间添加了防火墙.这导致空闲连接在大约40分钟的空闲时间后断开连接.网络人员说防火墙没有任何空闲连接超时,但事实是空闲连接被破坏了.

为了解决这个问题,我们首先使用tcp_keepalive_time = 300,tcp_keepalive_intvl = 300和tcp_keepalive_probes = 30000来配置启用TCP keepalive的服务器(Linux机器).这有效,并且连接可以存活数天或更长时间.但是,我们还希望服务器检测死客户端并终止连接,因此我们将设置更改为time = 300,intvl = 180,probes = 10,认为如果客户端确实存在,则服务器将每隔300秒进行一次探测(5分钟),客户端将使用ACK进行响应,这将阻止防火墙将其视为空闲连接并将其终止.如果客户端已经死了,经过10次探测后,服务器将中止连接.令我们惊讶的是,闲置但活着的连接在大约40分钟之后就像以前一样被杀死.

在客户端运行的Wireshark在服务器和客户端之间根本没有显示keepalive,即使在服务器上启用了keepalive也是如此.

这可能会发生什么?

如果服务器上的keepalive设置是time = 300,我希望如果客户端处于活动状态但空闲,服务器将每隔300秒发送一次keepalive探测并保持连接,如果客户端已经死了,它将在300秒后发送一个,然后每180秒发送9个探测器,然后终止连接.我对吗?

一种可能性是防火墙以某种方式拦截来自服务器的keepalive探测器并且未能将它们传递给客户端,并且它获得探测的事实使得它认为连接是活动的.这是防火墙的常见行为吗?我们不知道涉及哪种防火墙.

服务器是Teradata节点,连接是从Teradata客户端实用程序到数据库服务器,服务器端的端口1025,但是我们看到SSH连接存在同样的问题,所以我们认为它会影响所有TCP连接.

解决方法

状态防火墙检查数据包并确认连接是否处于活动状态.
我相信防火墙也应该像计算机一样对设置进行微调.
默认情况下,许多防火墙仅保持空闲连接打开60分钟,但这一时间可能会因供应商而异.

一些供应商将具有TCP拦截,TCP状态旁路和死连接检测等功能,可以处理像您这样的特殊情况.

其他选项是使用与服务器上相同的参数配置防火墙本身,以确保一切都是一致的.

在cisco防火墙上,您可以使用以下命令进行配置.

hostname(config)# timeout feature time

timeout conn hh:mm:ss—The idle time after which a connection closes,
between 0:5:0 and 1193:0:0. The default is 1 hour (1:0:0).

你有多个参数根据你的需要.

我建议与管理防火墙的团队交谈,根据您的需要调整时间或检查功能.

猜你在找的Linux相关文章