如何测量 NAT 防火墙上的 TCP 超时限制以设置保持连接间隔?

如何测量 NAT 防火墙上的 TCP 超时限制以设置保持连接间隔?

最近在 $WORK 安装了一个新的 (NAT) 防火墙设备。从那时起,我遇到了很多网络超时和中断,尤其是对于需要服务器思考一段时间而没有响应的操作(svn update、rsync 等)。通过 VPN 进行的入站 SSH 会话也经常超时。

这清楚地表明我需要调整相关服务器上的 TCP(和 ssh)保持活动时间以减少这些错误。

但是我应该使用什么适当的值呢?

假设防火墙两侧都有机器,我可以在这些机器之间建立连接,有没有办法测量该防火墙的 TCP 连接的时间限制?

理论上,我会以逐渐增加的间隔发送数据包,直到连接断开。有什么工具可以提供帮助吗(免费或开源的最好,但我也愿意接受其他建议)?

该设备不在我的控制范围内,因此我无法直接获取其价值,尽管我试图询问它现在的价值是多少以及我是否可以增加它的价值。

答案1

我认为你只需要从一台机器连接到另一台机器,同时在其中一台机器上运行数据包捕获。创建一个 FTP、HTTP、SSH 等会话,然后让它停留在那里直到超时。

我不确定您说“理论上,我会以逐渐增加的间隔发送数据包,直到连接断开”是什么意思,但我认为您除了建立连接、捕获流量并让它停留直到超时之外不需要做任何事情。空闲会话会发生超时,如果您将数据发送到另一端,它可能会重置计时器,因为会话将不再空闲。

当超时时,查看从第一个数据包(三向握手的开始)到连接终止(您可能会或可能不会看到 RST)的捕获时间戳。

除非有任何应用层超时(取决于您建立的连接类型),这应该让您了解超时设置的配置。

答案2

也许了解正确超时值的最简单的方法就是让网络管理员告诉您新 NAT 设备的配置设置?

答案3

我尝试建立 ssh 出站连接,但我要做的不仅仅是让它闲置在那里。如果没有交互,它将无限期地显示有效,但它会在一定空闲时间后停止接受输入。

所以我尝试运行:

# for n in 60 90 120 180 240 300 600 900 1800 3600; do sleep $n && echo "仍然 r
取消 $n";完成
仍在运行 60
仍在运行 90
仍在运行 120
仍在奔跑 180
仍在运行 240

然后它闲置了 5 分钟多。这时,我按了一个键,得到了:

远程主机关闭与 XXX 的连接。
与 XXX 的连接已关闭。

我可能应该使用可能的间隔加上几秒钟,但我很确定超时时间在 240 到 300 秒之间。

网络管理员报告说超时设置为 60 分钟,但显然情况并非如此。远程端的连接关闭得更快,但出站连接只会挂在我这边。这对于出站连接来说非常令人沮丧,因为远程端在响应之前必须思考一段时间(svn 更新、具有大型远程目录的 ftp 等)。

相关内容