如何使OSX Mavericks注意到`/ etc / hosts`中的DNS更改?


24

“阻止”网站(例如,将其作为一种干扰而消除)的常见方法是编辑/etc/hosts域并将其指向回送地址。例如:

# Stop goofing off
127.0.0.1 youtube.com

在Mavericks上,我发现操作系统似乎忽略了这样的更改。编辑文件(使用sudo)并保存后,仍应加载被阻止的站点。

我尝试过如下重置DNS缓存:

dscacheutil -flushcache
sudo killall -HUP mDNSResponder

但是该站点仍在加载。

如何使OSX Mavericks注意到对的更改/etc/hosts


1
可能是浏览器DNS缓存未刷新吗?ping youtube.com使用什么IP ?
Leonid Shevtsov 2014年

旁注:如果您使用DNS暂时阻止网站,则OSX的selfcontrolapp.com可以正常运行。它修改了主机文件,似乎自动刷新了浏览器缓存。他们还提到了适用于其他平台的类似应用:github.com/SelfControlApp/selfcontrol/wiki/FAQ
Nathan Long

Answers:


19

根据hosts(5)手册页,该/etc/hosts文件由使用mDNSResponder。您的尝试正确地刷新了计算机范围的缓存,但是您还需要刷新浏览器的专用缓存。

在使用本Apple技术说明进行的每次/etc/hosts重置mDNSResponder缓存的编辑后,OS X:如何重置DNS缓存

sudo dscacheutil -flushcache

完成此操作后,重置浏览器缓存

  • Safari:使用菜单项Safari > 重置Safari
  • Chrome:使用菜单项Chrome > 清除浏览数据

1
这样就解决了。在Chrome的“清除浏览数据”下,有数据类型的复选框。“清空缓存”是相关的内容。
内森·朗

5

删除浏览器缓存并添加127.0.0.1 www.youtube.com到主机文件。

youtube.com决定解决www.youtube.com。您的浏览器正在缓存该信息,并将您重定向到www页。


0

在OS X 10.9 Mavericks中,尝试在/ etc / hosts的同一行上列出多个主机名存在问题。我尝试了这篇文章和相关文章中所有其他与DNS相关的技巧,但都没有成功,直到我偶然发现了上面的“问题”链接。

我曾经有过这样的事情:

127.0.0.1 localhost host1 host2 host3 ...

但是我发现,对这些主机的解析将永远花费或者根本无法工作。尝试通过浏览器访问站点通常是可以的(尽管有时解决起来很慢),但是尝试从命令行ping不会起作用。

将其更改为以下格式对我来说一切正常,并且现在在ping,浏览器以及其他任何地方都可以正常工作:

127.0.0.1 localhost
127.0.0.1 host1
127.0.0.1 host2
127.0.0.1 host3

更多细节


0

在Graham的答案之上,请尝试chrome:// net-internals /#dns(适用于Google Chrome)查看已缓存的内容。然后单击清除主机缓存将其全部清除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.