今天, 我们前往London Gatwick机场搭乘CA848航班前往上海浦东机场。
飞机上有WiFi, 一开始连接和使用都正常, 但是一段时间后, 认证网页和其他网站都打不开了, 而微信和QQ等应用还可以使用。经研究, 我发现是飞机上的路由器的DNS递归解析服务器损坏了, 抓包显示目标端口不可达(Destination Port Unreachable)。Soha指出, 微信和QQ等应用还可以使用, 是因为它们有一些不依赖于DNS服务器的回退措施。经过进一步测试, 我发现路由器会劫持所有UDP 53端口的IP分组到自己的(损坏的)DNS服务器, 同时基于TCP的DNS协议似乎也无法正常使用。和清华大学校园网差不多。因此, 手动修改DNS服务器地址应该也无法上网, 但是使用DNS over HTTPS (使用TCP 443端口)或许可以, 不过我没有测试。后来, 我修改hosts文件、添加自己服务器的本地解析记录, 然后通过自主可控代理成功恢复正常上网。不过, 认证网页无法从外部访问, 通过代理打不开, 同时我也没有记录认证网页的正确IP地址。也就是说, 目前无法认证新的设备上网, 只有一开始通过了认证的设备可以上网, 不过可以修改MAC地址来伪造成已有的曾经通过了认证的设备来上网。其间, 我注意到WiFi信号中断过几次, 应该是乘务员在重启机上WiFi服务, 但是重启之后DNS服务还是没能恢复。我猜测, 是一开始DNS服务器缓存的记录较少, 工作正常, 然后乘客用了一段时间后, 缓存的记录较多, 出现了内存泄漏等问题, 服务进程被杀死, 然后重启机上WiFi服务时, 又没有重启DNS服务。现在, 我感觉上网速度比一开始快, 不知道是不是只有我在上网的原因。Soha指出, 也可能是飞机离卫星更近了。
其间, 一位乘务员在帮一位老太太联网, 但是怎么也打不开认证网页, 然后注意到我正在上网, 就问: “先生, 您是在使用WiFi吗?”我回答: “嗯嗯。”哈哈。

发表评论