修改/ etc / hosts无效


17

我试图阻止自己进入那些浪费时间的网站,但对/ etc / hosts进行了更改。例如:

127.0.0.1   localhost
127.0.1.1   ross-laptop

127.0.0.1   bing.com

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

我可以在刚打开的Chrome或Firefox中访问bing.com-为什么这不起作用?

Answers:


17

您将找到浏览器,系统将为您缓存内容。为了使它立即生效,您应该确保清除缓存并重新启动浏览器。为了对此进行测试,请尝试从以下终端执行dns检查:

ping bing.com

您应该让它从127.0.0.1回复。如果这行得通,则您的主机文件更改很好,但仅缓存在浏览器中。


但是缓存真的可以在重启浏览器后继续生存吗?我也遇到了这个。如果有一种方法可以使缓存无效,那就太好了。
loevborg

1
好吧,我不是100%确定dns缓存能否在浏览器重载后继续存在。我知道文件缓存确实如此。问题是,利用当今的Web开发的Ajax /多请求模型,您不想在加载页面时对每个请求执行dns点击。每个浏览器都会采取自己的技巧来帮助加快速度,因此您必须根据每个浏览器/浏览器版本检查其dns缓存机制。
里克(Rick)2010年

如果至少在大多数浏览器(可能是所有主要浏览器)中,DNS高速缓存不能通过浏览器重启而持续存在,我会感到惊讶。
David Z


0

打开终端(ALT+ F2)。

键入sudo -i在输入字段。选中在终端中运行选项。最后单击“运行”按钮。

如有必要,请输入密码,然后按Enter。然后输入以下命令。

gedit /etc/hosts

您将获得Gedit文本编辑器窗口。

例如,如果我们需要阻止Facebook,则在后面添加以下几行127.0.0.1 localhost

0.0.0.1 facebook.com    
0.0.0.1 www.facebook.com

这样,它将在所有浏览器(包括Google Chrome,Chromium和Mozilla)中阻止该网站。

而已。现在打开www.facebook.comfacebook.com时,您将无法访问它。要启用Facebook,请从文件中删除添加的行/etc/hosts

来源-Subin的博客


-1

除了CragM的解决方案之外,请记住您可以为此目的使用所有127.xxx地址,请勿重复相同的地址。

127.0.0.1   localhost
127.0.0.2   ross-laptop
127.0.0.3   bing.com
127.0.0.4   foo.com
127.0.0.5   bar.com
......

1
您能解释为什么不重复相同的地址吗?
8128年

@fluteflute,我不确定,但是我曾经这样做,它一直对我有用。
grokus 2010年

-1

修改/ etc / hosts看起来像是全球黑客。我建议改为设置一个本地http代理(squid,privoxy等),然后指向您的浏览器以使用它。这样,您将获得在代理级别管理黑名单的更灵活的方法。


2
与向?添加几行相比,听起来这会花费很多精力/etc/hosts。您能解释一下为什么这是一个更好的解决方案吗?
8128年

“听起来”是因为您没有进行假设就做出了假设。发出apt-get install,编辑配置文件和/或黑名单并将浏览器指向本地代理并不复杂。最好这样做是因为您不对系统进行任何全局更改,而只是设置了阻止某些站点的另一种方法。如果您需要撤消操作,则无需再次编辑/ etc / hosts,只需将浏览器设置为直接访问站点即可,而无需通过代理。
vh1 2010年
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.