如何修复 SSH 发送碎片数据包

Nei*_*eik 5 networking ssh ip

我的 ISP 有时会丢弃 IP 片段。这在 SSH 中表现出来,因此:我可以正常登录并运行输出短字符串的命令,但是运行诸如“ps fax”之类的东西会导致链接锁定。

PMTU 是 1500。所以看来 SSH 正在尝试传输比这更大的数据包,然后这些数据包会变得碎片化并因此丢失。我不能轻易减少远程 MTU,我也不愿意这样做,因为 MTU 是正确的(1500)。

这里发生了什么?我认为 TCP 将其 MSS 设置为正确的值以避免碎片。我怎么得到碎片?

编辑:远程机器是 Centos 6.4。“有时”我的意思是 ISP 有糟糕的日子,他们的网络中断了,它确实只丢掉了碎片。嗅探链路的两端,我看到来自大 ping 的数据包和片段离开了我的系统,但只有“主”数据包到达目标。

问题如上所示,并且在登录 RDP 会话时出现黑屏。现在问题已解决,因此在再次发生之前我无法再进行任何测试。

在另一个系统上进行的更多测试表明 SSH 设置了 DF 位。所以现在我真的不明白发生了什么。

我无法测试是否出现 Fragmentation 需要 ICMP 消息(它们不应该出现),因为网络接受最大以太网大小 (1500) 的数据包,因此我自己的路由器会发出需要碎片的消息。

我向 ISP 投诉,但他们试图说服我这是设计使然,他们的网络永远不会允许像“ping -s 5000”这样的 ping。当然不是。特别是考虑到他们修复了它。

Nei*_*eik 1

在这种情况下,我忽略了 SSH 和 RDP 会话通过 IPSEC VPN 的事实。PMTU 处或附近的大型 SSH 数据包导致 IPSEC 数据包大于 MTU,从而产生碎片。这些片段丢失并且会话挂起。

我认为会话最终会超时并恢复,但人类超时的速度更快。