如何防止SSH通过openvpn客户端冻结到客户端连接

我有一个完全相同的问题,这里描述的,但我不能要求澄清作者, 因为我是一个新用户,我不能发表评论 ,所以我发布一个新的问题(我试图张贴这个作为同一个线程的参考答案,并且由于它不提供答案而被删除…)。

如何防止TCP连接通过OpenVPNnetworking冻结?

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

我的设置和原来的完全一样:CentOS服务器(拓扑子网)和两个客户端,一个CentOS和一个Ubuntu14.03。 当我从ubuntu-client到“centos-client”的“ssh cat abc.txt”时,centos档的vpn连接。 唯一的办法是重新启动openvpn服务器(在一个centos box上)和openvpn客户端在centos上 – 只要重启centos-client连接不会使其可用(它会在启动后启动tun0) 1-2分钟,但我不能ping或SSH通过VPN的盒子了)。 我也尝试了其他线程(tun-mtu 1300 / fragment 1100 / mssfix等)中find的所有MTU调整build议,并没有任何帮助。

更奇怪的是,如果我从Ubuntu上使用相同的ssh-cat,使用CentOS服务器vpn上网到centos-client的公共ip地址(这样绕过了centos-client < – > centos-server vpn腿),一切工作正常(没有摊位,永远)。

更新1 :我发现是一个解决方法来解决这个问题,但它是一个非常丑陋的。 张贴在这里,以防有些人提出任何其他的想法/提示。 当我在openvpn服务器(不是在客户端,仅在服务器上)上将详细级别设置为9时,问题再也不会出现。 动词9导致openvpn服务器logging大量数据,并占用运行的CPU的100%。 这样就限制了传输速度,并使scp成功完成,没有停顿; scp现在以40-50Kb / sec的速度复制,而在以100Kb / sec以上的速度停止之前。

更新2 :我相信这是一个缓冲问题。 传输的文件(通过scp或ssh猫)的大小很重要。 如果我scp一个700KB的文件(或更小),它总是会成功的 ,不pipe我尝试了多less次。 如果我尝试一个800KB的文件,它将永远失败/ 7xxKb +之后失速。

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

sysctl -w net.ipv4.tcp_window_scaling=0 

也许这会让你指出问题出现的方向。