我尝试从 Linux Ubuntu 客户端计算机通过 SSH 访问 Linux Ubuntu 服务器。
当客户端和服务器在同一个网络中时,一切都运行正常,当我尝试通过 VPN - openVPN 远程访问服务器时,全屏应用程序(如 mc- midnight commander)无法正常显示,这意味着我只能看到所呈现屏幕的右上角字符,而且显然键盘交互不起作用。
此外,针对简单文本文件发出的 cat 命令会挂起终端而不显示任何输出。
奇怪的是,当我使用 Android OpenVPN 客户端和 Android SSH 客户端从我的 Android 手机通过 VPN 访问同一台服务器时,一切正常。
在我的 Ubuntu 客户端计算机上,TERM 环境变量设置为“xterm-256color”,在我的 Android 手机上,它设置为“linux”。在启动 SSH 会话之前尝试在我的 Ubuntu 客户端上将其设置为“linux”,这意味着在 SSH 会话中我看到终端实际上设置为“linux”,但没有效果。
在 Ubuntu 客户端上我也尝试通过 Putty 连接,但结果是一样的。
对发生这种情况的原因有任何线索吗?
提前致谢!
答案1
好吧,我最终通过阅读 OpenVPN 手册找到了解决方案,网址为:
https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/
该问题显然与路径 MTU 发现无法正常工作有关。
“--fragment 和 --mssfix 都是为解决 OpenVPN 对等体之间的网络路径上的路径 MTU 发现中断的情况而设计的。
这种故障的常见症状是 OpenVPN 连接成功启动,但在使用过程中停滞。如果 --fragment 和 --mssfix 一起使用,--mssfix 将从 --fragment max 选项中获取其默认的 max 参数。
因此,可以使用以下选项将最大 UDP 数据包大小降低到 1300(解决与 MTU 相关的连接问题的良好首次尝试):
--tun-mtu 1500 --fragment 1300 --mssfix "
在服务器和客户端添加这两个选项解决了我的问题。
我希望这有帮助。