当我尝试在运行 Ubuntu 16.04 LAMP 的远程 Linux 服务器上编辑网页时,我的浏览器(Chrome、Firefox 或 Edge 在不同的机器上运行,Windows 10 1709)中出现了随机的 ERR_CONNECTION_RESET 错误。这很难确定,但它似乎主要发生在通过 SSL 连接提交大型表单时,这让我发疯,因为我一直在失去工作。
错误日志中没有任何内容,机器之间的 ping 或 tracert 没有问题,两端都禁用了防火墙。它具有网络问题的所有症状,但我不能确定,因为它是如此断断续续。
我怀疑它与 MTU 有关,但我被大喊大叫并告诉现代操作系统和路由器应该处理任何数据包大小,而当我去年提出这个问题时,问题肯定出在其他地方。
我今天启动了 Wireshark,我看到这样的重复行,我认为这与问题一致:
694 47.224124 192.168.1.90 149.210.138.83 TCP 1514 [TCP 重传] 53732 → 443 [ACK] Seq=3867 Ack=33955 Win=64512 Len=1460
192.168.1.90 是 Windows 机器(浏览器),149.210.138.83 是 Linux 服务器。数据包大小为 1514,我知道这比我的路由器(BT homehub 3)可以通过的要大。“请勿分段”位已设置。我希望看到 ICMP 数据包协商碎片,但我没有。然而,ping 正常,防火墙已关闭。
成功和不成功的表单提交和 ping 的wireshark pcap 在这里(您不需要 OneDrive 帐户,只需以访客身份下载)。 https://1drv.ms/u/s!AvycuEtEj-isleIZMh8w_SHuoqYcoQ
回答我自己的问题 - 我修改了我的客户端(PC、笔记本电脑、手机)的 MTU 大小,这可靠地解决了问题。我还确认如果 MTU 重置为默认值 1500,问题会再次出现。
一个更新的“智能集线器”现在已经到来,使用它时问题不再存在(即使 MTU 重置),所以我很确定我的诊断是正确的,原来的 Home Hub 3 有故障。我怀疑这是由于 ICMP 数据包被抑制,因为我知道它不会响应 ping(恕我直言不明智)。这个问题一定造成了很多痛苦,因为那是一个非常受欢迎的枢纽。