如何防止 SSH 在 openvpn 客户端到客户端连接上冻结

Ato*_*omo 7 ssh openvpn scp mtu

我有与这里描述的完全相同的问题,但我不能要求作者澄清,因为我是一个新用户,我不能对此发表评论,所以我发布了一个新问题(我尝试在该问题下发布作为在同一线程上参考的答案,它被删除,因为它没有提供答案......)。

如何防止 OpenVPN 网络上的 TCP 连接冻结?

问题:是否有人对如何排除故障和/或确定该线程中描述的 TCP 问题的根本原因有任何建议?就好像远程端不接受 VPN 客户端发送的 ACK 消息一样。

我的设置和原问题一模一样:CentOS服务器(拓扑子网),两台客户端,一台CentOS,一台Ubuntu14.03。当我从 ubuntu-client 到 centos-client 执行 'ssh cat abc.txt' 时,centos 的 vpn 连接停止。恢复它的唯一方法是重新启动 openvpn 服务器(在 centos 机器上)和 centos 上的 openvpn 客户端 - 只是重新启动 centos 客户端连接并不能使其运行(它会在 ~ 1-2 分钟,但我无法再通过 vpn ping 或 ssh 盒子)。我还尝试了在其他线程(tun-mtu 1300 / fragment 1100 / mssfix 等)中找到的所有 MTU 调整建议,但没有一个有帮助。

更奇怪的是,如果我从 Ubuntu 执行相同的 ssh-cat,使用 CentOS 服务器 vpn 连接到 centos-client 的公共 IP 地址(从而绕过 centos-client<->centos-server vpn 腿),一切正常(永远没有摊位)。

更新 1:我发现有一种解决方法可以解决此问题,但它非常难看。在这里发布,以防万一有人提出任何其他想法/提示。当我在 openvpn 服务器(不是在客户端,仅在服务器上)上将详细级别设置为 9 时,问题再也不会发生。动词 9 导致 openvpn 服务器记录大量数据,并使用它运行的 CPU 的 100%。这会限制传输速度并使 scp 成功完成而没有停顿;scp 现在以 40-50Kb/秒的速度复制,而在达到 100Kb/秒以上后它会停止。

更新 2:我相信这是一个缓冲问题。传输的文件大小(通过 scp 或 ssh cat)很重要。如果我 scp 一个700KB 的文件(或更小),它总是会成功,无论我尝试多少次。如果我尝试使用 800KB 的文件,它在 7xxKb+ 之后总是会失败/停止。

chu*_*utz 0

我见过类似的问题,并且能够通过禁用 TCP 窗口缩放来解决它们。

sysctl -w net.ipv4.tcp_window_scaling=0
Run Code Online (Sandbox Code Playgroud)

也许这会为您指明问题所在的正确方向。