我遇到的问题是,突然间,一些网站停止工作了(例如,我无法登录 HipChat 或 Docker Hub)。
我进行了很多挖掘,以下是我发现的:
- DNS 解析工作正常。
- 问题似乎与某些 https POST 连接有关。
- 连接可以打开,并且我从另一端收到“100 继续”代码,但没有其他事情发生:连接保持打开状态而没有任何响应。
我观察到了几件事:
我捕获了其中一个失败的请求(我可以看到它们挂在 Chrome 开发人员工具上)并将其卷曲。
- 如果我从我的机器上执行此操作,经过长时间的等待后我会收到 502 错误。
- 如果我从不同网络中的机器执行此操作,它就可以工作。
- 如果我从我的机器上执行此操作,并连接到 VPN,它就可以工作。
- 如果我从同一局域网中的另一台机器执行此操作,它就可以工作。
在上述所有情况下,我都使用“-v”标志运行 curl,TSL 协商看起来与最后一个字符相同。它仅在“100 Continue”代码后发生变化:在好的代码中我得到 200,而在坏的代码中我等待大约一分钟后直接得到 502。此外,所有机器的 openssl 版本都相同。
我跟踪了 IP,唯一奇怪的是,当我从我的机器上执行此操作时,跳数比从我位于不同网络中的机器上执行时多得多。但是,如果我将其连接到 VPN 进行跟踪,跳数会有所不同,但数量相似。
如果我在 ubuntu 桌面上启动 Windows 7 虚拟机,它会以与主机相同的方式失败。
我的规格是:
- Ubuntu 14.04.3,完全最新。
- 我使用 Wifi 连接的 ADSL(PPPoE)路由器。
我还可以看到什么或怀疑到什么?
更新
在解决问题时,问题就消失了!
我使用 wireshark 嗅探了网络,发现了一些“TCP ACKed unseen fragment”错误,这让我对 wifi 产生了怀疑。
为了解决这个问题,我用一根线连接了我的笔记本电脑,然后断开了 Wifi,问题果然消失了。但是,当我断开线并再次打开 Wifi 时,问题并没有再次出现!
所以,我对此不太确定,但我怀疑只需禁用 wifi 适配器并再次启用它可能会解决问题。
请注意,我之前已经重新启动过几次笔记本电脑,但问题仍然存在,因此我猜测从操作系统禁用适配器可能会重置某些东西,而这正是问题的根源。
无论如何,我保留这个问题,以便有人愿意建议其他值得考虑的故障排除措施。
答案1
正如我在更新中解释的那样,从操作系统禁用并再次启用 Wifi 适配器已使问题消失。
如果您遇到类似的问题,请尝试一下!