gpt4 book ai didi

linux - TCP keepalive 是否发送数据包以防止防火墙超时和连接关闭?

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:17 31 4
gpt4 key购买 nike

我设置了客户端和服务器之间有防火墙的设置。我连接到两个不同的服务器,即 A 和 B,数据可以在任何时间点从 A 或 B 流动,但一次只能流动一个。似乎我与服务器的连接每 2 小时 11 分 15 秒后就会终止。我已经在我的应用程序中设置了 tcp keepAlive 并正在使用 poco 库。

我看到下面是我机器上的 tcp keepalive 内核级参数}

  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_time 
7200
[XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75
[XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

7200 ( 2 小时) + 9*75 = ( 11 分 15 秒 ) ,上面的一些参数和断开连接的时间表明由于我的盒子上的上述设置而发生了这种情况。服务器和客户端之间的大多数连接在大多数时间(小时)内都是理想的,但数据预计会在任何时间(不固定)到来。假设如果防火墙上的理想时间设置为(30 分钟),那么我是否应该将 tcp_keepalive_time 减少到少于 20 分钟,以便客户端和服务器之间存在探测,从而防止防火墙将其视为理想连接并实际终止连接?

我的理解是,即使连接是理想的,参数 tcp_keepalive_time 也会阻止防火墙在此时间段之前关闭连接,或者理想情况下它应该小于防火墙理想超时,以便防火墙看到两个服务器之间的数据包传输(客户端完成的保活探测和从服务器收到的确认)并且不会尝试关闭连接?

谢谢

最佳答案

我尝试将 tcp_keepalive_time 从 7200 秒减少到 900 秒(15 分钟)。这确保了 900 秒后发送 TCP 保持事件探测。由于在防火墙上设置了 30 分钟的理想连接超时,因此无法关闭连接。这解决了我的问题。我在下面的解决方案部分的链接中读到了这一点。

https://www.veritas.com/support/en_US/article.100028680

  [XYZ@ABC /home]$ cat /proc/sys/net/ipv4/tcp_keepalive_time 
900

关于linux - TCP keepalive 是否发送数据包以防止防火墙超时和连接关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50268049/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com