调试不稳定的 SSH 隧道

调试不稳定的 SSH 隧道

我们有一个专用的 SSH 隧道服务器,它支持几十个远程主机。每个主机都使用分配的端口号创建一个到服务器的反向隧道,使用 autossh 保持连接持久。这使我们能够通过服务器访问远程主机。直到最近,这一切都运行良好...

Comcast 要求我们从一个连接切换到另一个连接。新旧调制解调器的型号相同,但电缆连接不同,当然,新连接有新的 IP 地址。我们也借此机会更换了服务器硬件,但新服务器机箱运行的操作系统 (Ubuntu 10.04 LTS) 和 OpenSSH (5.3p1) 与旧机箱相同。生成了新的主机密钥并将其分发给远程主机。

自从发生这种变化以来,所有隧道连接都变得不稳定,通常最多只能维持 10 或 15 分钟。Autossh 会检测并重新连接,但这会使交互式会话的使用变得非常令人沮丧。我不知道问题出在哪里。

查看服务器上的日志,我看到:“收到来自 xxxx: 11 的断开连接:用户断开连接”,然后隧道被重新建立。即使在日志级别 DEBUG3 下,在服务器端断开连接之前我也没有看到任何事情发生,只有预期的保持活动消息。

无论是否正在使用,连接都会定期断开,并且它们会在使用过程中和数据传输过程中断开(例如在大型 sftp 中间)。连接不会同时断开 - 似乎分布相当随机。

在服务器端,我们有 ClientAliveInterval = 30、ClientAliveCountMax = 6 和 TCPKeepAlive = yes。

远程站点正在运行 OpenSSH 5.6p1。

我已经束手无策了...有什么想法我应该去哪里寻找吗?

答案1

这里有一个有用的工具(用于调试网络连接)是 mtr,它是 traceroute 和 ping 的组合。假设您在工作站上,您可以执行“mtr {remote-server-ip}”。输出是矩阵形式(行和列),将显示您的机器和远程服务器之间每次跳跃的延迟和数据包丢失。我上周用它向 ISP 证明他们在我们的 T1 上丢弃了约 40% 的数据包(这导致无法建立 VPN 连接)。

相关内容