当我 cat 文件时,OpenVPN 连接上的 SSH 流量冻结

当我 cat 文件时,OpenVPN 连接上的 SSH 流量冻结

我在两个 gentoo 机器之间使用共享密钥建立了一个 openvpn(两端均为 2.1_rc15 版本)连接。大部分情况下,它工作正常。我通过 vpn 使用 mysql、http、ftp、scp,没有任何问题。但是当我通过 vpn 从客户端 ssh 到服务器时,发生了奇怪的事情。我可以登录,可以执行一些命令。但是,如果我尝试运行 ncurses 应用程序(如 top),或者尝试 cat 文件,连接就会停止,我必须切断 ssh 会话。

例如,我可以执行“echo blah; echo .; echo blah”,它会在 ssh 会话中正常输出三行文本。但如果我执行“cat /etc/motd”,会话会在我按下回车键时冻结。

我在 Mac 上编译了 openvpn 2.1.1,并从我的 gentoo 客户端复制了我的配置目录。Mac 已连接,ssh 会话运行正常,没有冻结。

然后我在我较旧的 gentoo 机器(2.6.26 内核)上对其进行了编译(由于硬盘坏了,我打算将其淘汰),并且通过它进行 ssh 也运行良好。

为什么在我的全新 gentoo 盒子上会失败?为了防止出现这种情况,我尝试编译了三个不同的内核,但除此之外,我认为我的新旧 gentoo 盒子之间应该没有区别。

对于哪里出了问题有什么建议吗?

答案1

感觉像是 mtu 问题。尝试按照以下说明降低它官方手册或者在这个博客邮政。

答案2

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

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

您可以使用以下方式验证 tun0 设置

$ ip a s

干杯!

答案3

是的,这全都与 MTU 有关。

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

我尝试在 ADSL 调制解调器上更改它,但没有成功。我在办公室使用电缆调制解调器和其他 ISP。

将 Windows TAP 适配器的 MTU 更改为 1200 后,它工作正常。如果高于此值,我会卡死。

在此处输入图片描述

答案4

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

ifconfig utun0 mtu 576

此后,我的 ssh 会话不再冻结。

相关内容