我有两个使用共享密钥的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会话不会冻结了。