![当命令输出较长的文本时,通过 IPSec VPN 隧道的 SSH 会话会冻结](https://linux22.com/image/798744/%E5%BD%93%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E8%BE%83%E9%95%BF%E7%9A%84%E6%96%87%E6%9C%AC%E6%97%B6%EF%BC%8C%E9%80%9A%E8%BF%87%20IPSec%20VPN%20%E9%9A%A7%E9%81%93%E7%9A%84%20SSH%20%E4%BC%9A%E8%AF%9D%E4%BC%9A%E5%86%BB%E7%BB%93.png)
我通过两个 pfSense 防火墙之间建立的 IPSec 隧道连接到办公室中的 QNap NAS(Ubuntu 4.1.2)。几个月来,这一直运行良好。我最近用较新的型号替换了 NAS,并将固件升级到最新版本。从那时起,当我通过 SSH 连接并运行任何返回超过几行文本的程序时,SSH 连接就会中断。
这意味着它不再响应输入,终端永远不会超时。 Enter-~-. 序列也不会将其恢复。例如,在根文件夹中运行 ls 可以正常工作,在 /etc/config 文件夹中运行 ls 将冻结控制台。运行 top 将在大约 20 行后冻结控制台。
我尝试了不同的客户端,但使用 SecureCRT 和 Putty 时发生了这种情况。当我通过 RDP 进入办公室的 Windows 机器并从那里通过 SSH 连接到 NAS(在同一个子网中)时,这种情况不会发生,并且相同的命令运行正常。
我发现一些迹象表明这可能与 MTU 有关(例如这个帖子),但没有确定适用于我的设置的结论。尽管如此,我还是会尝试 MTU 设置,但与此同时,我想也许有人可以提供具体的建议。
答案1
我遇到了类似的问题。连接到 cisco VPN,通过 ssh 登录到远程计算机并简单运行ps aux
就会完全冻结我的会话。
解决方案确实是调整 MTU。
在CentOS您必须运行ip addr
才能找出不同网络适配器的当前 MTU。您可以通过以下方式更改它们sudo ip link set eth0 mtu 1300
(这会将接口eth0
MTU 设置为 1300,在我的情况下,这是神奇的数字)
答案2
哈,这很简单。我在 NAS 的两个接口上将 MTU 设置为 9000。一旦我将接口 2 的 MTU 大小设置为 1500,问题就消失了。