当我捕捉一个文件时,通过openvpn连接的SSHstream量会冻结

我有两个使用共享密钥的gentoo框之间的openvpn(两端版本2.1_rc15)连接设置。 它大部分工作正常。 我使用mysql,http,ftp,scp覆盖了vpn,没有任何问题。 但是当我通过VPN从客户端到服务器ssh,奇怪的事情发生。 我可以login,我可以执行一些命令。 但是,如果我尝试运行一个像上面的ncurses应用程序,或者我尝试捕获一个文件,连接将停止,我将不得不切断ssh会话。

例如,我可以执行“echo blah; echo。; echo blah”,它将在ssh会话中输出三行文本。 但是,如果我执行“猫/ etc / motd”会话将冻结我按下input的时刻。

我在我的Mac上编译openvpn 2.1.1,并从我的gentoo客户端复制到我的configuration目录。 Mac连接和SSH会话正常工作,没有冻结。

然后我把它编译到我旧的gentoo盒子(2.6.26内核)上,由于一个正在死亡的硬盘,我正在退休,而且ssh也是完美的。

为什么它在我的全新Gentoo盒子上失败? 我已经试过编译三个不同的内核,但除此之外,我可以想到,旧的和新的gentoo盒之间应该没有区别。

有什么不对的build议吗?

闻起来像mtu问题。 尝试降低它在官方手册或在这篇博客文章中所述。

这个命令为我解决了这个问题:

 $ sudo ip link set dev tun0 mtu 1350 && echo ":)" 

您可以使用validationtun0设置

 $ ip as 

干杯!

当OpenVPN连接超过3g,覆盖不好,丢失丢包时,我遇到了同样的问题。 切换到TCP而不是UDP解决了之后我所有的问题。 希望这可以帮助你。

是的,这都是关于MTU的。

但就我而言,我遇到了一个更奇怪的问题。 在家里,使用OpenVPN Windows客户端冻结。 但在我的办公室,它工作正常。

我试图改变它在我的ADSL调制解调器没有成功。 在我的办公室我使用电缆调制解调器和其他ISP。

将Windows TAP适配器的MTU更改为1200后,工作正常。 比这更高的东西,会冻结我。

在这里输入图像描述

我使用了tunnelblick而不是OpenVPN,并且找不到MTU值的configuration。 相反,我在ifconfig的输出中find了VPN的接口(在我的情况下是utun0 ),并手动为它设置MTU,如下所示:

 ifconfig utun0 mtu 576 

之后,我的SSH会话不会冻结了。