在最近将 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
文件应该是一致的,例如;localhost
是127.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 缓存。至于您的系统。它应该立即看到更改。但您应该先检查一下。