Chrome 自 v73 起不再使用 hosts 文件来获取 IPv6 地址

Chrome 自 v73 起不再使用 hosts 文件来获取 IPv6 地址

在最近将 Chrome 更新至 v73 后,Chrome 不再使用我的 hosts 文件获取 IPv6 地址。我有一个类似这样的条目:

::1    some-project.test

尝试转到https://some-project.test会导致ERR_NAME_NOT_RESOLVED。如果我将条目更改为127.0.0.1,则主机名将解析。

我的 hosts 文件条目没有问题。它在以前的 Chrome 版本上已经运行了几个月。我可以 ping some-project.test。Firefox 运行正常。我甚至可以运行像 Fiddler 这样的代理,Chrome 可以通过这种方式访问​​它。我只是不能直接使用 Chrome。

有什么建议可以解决这个问题吗?

更新:这似乎取决于我所连接的网络。从公共 WiFi 网络移回家中后,它又可以正常工作了。我不确定这是怎么可能的……主机文件不应该覆盖 DNS 中的任何内容吗?而且,Chrome 无论如何都不应该使用系统解析器吗?系统上的其他一切都正常并且运行良好。

更新 2:回到家里的有线以太网……又坏了。这个问题是间歇性的。

答案1

Chrome 中有一个已知错误,可能是导致您遇到的问题的原因:
问题 530482:无法访问没有全局 IPv6 连接的网络上的私有 IPv6 主机

错误报告中的讨论澄清了 Chrome 会启动 IPv6 探测,通过检查远程地址来确定是否支持 IPv6。如果该 IPv6 探测失败,Chrome 将屏蔽任何其他 IPv6 结果,实际上是禁用 IPv6 并永久忽略它。

解释是,如果网络上的 IPv6 支持不稳定,导致 Chrome 进行的这次初始 IPv6 探测失败,Chrome 将完全禁用 IPv6 解析,包括从文件进行本地 IPv6 解析hosts

提到的解决方法是:

向 添加网络路由2001:4860:4860::8888。不必真正发挥作用(只需放弃对它的请求即可)。只要 Chrome 可以将 UDP 套接字连接到该地址,它就会通过启发式检查 IPv6 连接并允许 AAAA DNS 查询和 IPv6 解析结果。

在错误报告的末尾提到了其他更有限的解决方法。

该错误报告可追溯到 2015 年,但至 2019 年 5 月仍然存在,因此可能正在处理中。

答案2

您的hosts文件应该是一致的,例如;localhost127.0.01。然后some-project.test应该可用127.0.0.1,并且由于 IPv6 地址::1 通常, 和传统上 指向localhost,以及 IPv4 地址127.0.0.1。由于并非所有系统都一定支持 IPv6 -是的, 即使在天,和年龄。:)

问题localhost是,这test是一个 TLD(就像 .com)。

我建议的hosts文件:

# following 2 entries are *optional*
::1    localhost
127.0.0.1    localhost

::1    test project.test
127.0.0.1    test project.test

明白我在说什么了吗?一些应用程序(和操作系统)认为“主机localhost”。因此,您可能会发现您需要一个条目来表示它——请参见;选修的在上面的例子中。

最后。确保您的解析器刷新其 DNS 缓存。至于您的系统。它应该立即看到更改。但您应该先检查一下。

相关内容