为什么 Chromium 绕过 /etc/hosts 和 dnsmasq?

thi*_*wfx 53 google-chrome chromium dnsmasq hosts-file

我在 Arch Linux 上使用hostsblockdnsmasq来阻止一些网站,其中之一是facebook.comwww.facebook.com

我知道一切正常,因为对facebook.com(或www.facebook.com)的简单 ping返回 127.0.0.1。此外,如果我从 Midori 访问这些网站,则会返回一个空白页面(这是预期的行为,因为我正在使用kwakd守护程序在本地主机上返回空白页面)。

只有 Chromium 似乎绕过了我的阻止列表。从它访问 facebook.com 让我直接进入 facebook 主页。

自时间开始清理所有内容(Ctrl+Shift+Delete)并重新启动 Chromium 后,我得到了所需的行为(= 无法访问 Facebook)。

尽管过了一段时间(我不确定是什么原因造成的),Chromium 再次忽略了我的本地 dnsmasq DNS 并成功访问了 facebook 主页。

我阅读了一些关于 Chromium 的 DNS 查询的缓存和预取的内容,但我不确定如何禁用它。

问题是:为什么 Chromium 会绕过我的本地 DNS,我该怎么做才能阻止它?

thi*_*wfx 43

大多数关于这个主题的参考文献都是旧的。如果您有旧版本的 Chromium,请关注edvinas.me 的回答。

对于当前版本的 Chromium(撰写本文时:33 日),您应该执行以下操作:

  1. chrome://settings
  2. 单击“显示高级设置...”
  3. 取消标记预测网络操作以提高页面加载性能框。
  4. 转到 检查 DNS 预取是否真的被禁用chrome://dns。您应该会看到类似DNS 预解析和 TCP 预连接被禁用的内容。如果未禁用预取,您将在那里看到一些表。

更新

对于较新版本的 Chrome(在此更新时:55 日),第三项的措辞是:使用预测服务更快地加载页面

参考

  • `chrome://dns` 不再存在。 (2认同)

pho*_*ops 28

更新答案

确保清理 Chrome 的缓存。在地址栏中输入:

chrome://net-internals/#dns
Run Code Online (Sandbox Code Playgroud)

然后点击Clear host cache按钮。

旧答案

Chromium 默认使用 Google 的内部 DNS(8.8.8.8 和 8.8.4.4)

要禁用它:

  1. 单击工具菜单(一个小扳手图标),然后转到选项。

  2. ? 单击引擎盖下选项卡。

    ?3. ?在“隐私”部分,取消勾选使用 DNS 预取来提高页面加载性能的复选框。

    ?4. ? 单击关闭按钮。

    ?5. ?刷新以重新加载网页。

  • "chrome://net-internals/#dns" -> 清除,不起作用。 (2认同)