我在用着主机块和...一起域名系统在 Arch Linux 上屏蔽一些网站,其中之一是facebook.com
和www.facebook.com
。
我知道一切都正常,因为简单 ping facebook.com
(或www.facebook.com
)会返回 127.0.0.1。此外,如果我从 Midori 访问这些网站,则会返回一个空白页(这是预期的行为,因为我使用算法夸克德守护进程在本地主机上返回空白页)。
只有 Chromium 似乎可以绕过我的阻止列表。通过它访问 facebook.com 会让我直接进入 facebook 主页。
清理自始至终的所有内容(Ctrl+Shift+Delete)并重新启动 Chromium 后,我得到了所需的行为(=无法访问 Facebook)。
然而,过了一段时间(我不太清楚是什么原因导致的),Chromium 再次忽略了我的本地 dnsmasq DNS 并成功访问了 facebook 主页。
我读了一些关于 Chromium 的 DNS 查询的缓存和预取的内容,但我不确定如何禁用它。
问题是:为什么 Chromium 会绕过我的本地 DNS,我该怎么做才能阻止它?
答案1
关于此主题的大多数参考资料都是旧的。如果你有旧版本的 Chromium,请按照edvinas.me回答。
对于当前版本的 Chromium(撰写本文时为第 33 版),您应该执行以下操作:
- 去
chrome://settings
- 点击“显示高级设置...”
- 取消标记预测网络行为以提高页面加载性能盒子。
- 检查 DNS 预取是否真的被禁用,请访问
chrome://dns
。您应该会看到类似DNS 预解析和 TCP 预连接已禁用。如果未禁用预取,您将在那里看到一些表。
更新
对于较新版本的 Chrome(本次更新时为:第 55 版),第三项的措辞如下:使用预测服务来更快地加载页面。
参考
答案2
更新答案
确保清理 Chrome 的缓存。在地址栏中输入以下内容:
chrome://net-internals/#dns
然后点击Clear host cache
按钮。
旧答案
Chromium 默认使用 Google 的内部 DNS(8.8.8.8 和 8.8.4.4)
要禁用它:
单击工具菜单(一个小扳手图标),然后转到选项。
单击“Under the Hood”选项卡。
3. 在“隐私”部分下,取消勾选使用 DNS 预取来提高页面加载性能的复选框。
4.单击“关闭”按钮。
5.刷新以重新加载网页。
答案3
另一个不太明显的可能性是,您的系统设置为使用自动代理 *.pac 文件。如果您在公司环境中使用计算机,并且 *.pac 文件告诉您的浏览器通过代理来解析 URL,通常就会出现这种情况。这优先于您的 /etc/hosts 文件,并且如果 *.pac 文件中有一条规则,即如果没有匹配项则返回 PROXY,那么 Chrome 似乎没有遵守 /etc/hosts。如果您的命令行按预期工作,例如 dig、ping 等,通常就会出现这种情况。
如果您尝试了其他解决方案但它们不起作用,请检查您是否没有使用 Chrome 正在使用的自动代理设置。
答案4
如果你正在使用任何VPN 代理扩展对于 Google Chrome(例如更好的网络),您可能会遇到此问题。禁用扩展程序可解决问题。