为什么/ etc / hosts文件不起作用?

我已经有一段时间遇到了这个问题并尝试了我所知道的一切,所以我觉得终于有时间寻求帮助了。

我对/etc/hosts进行的任何编辑都不起作用。

例:

 julian@ifrit:~$ cat /etc/hosts 127.0.0.1 localhost 127.0.1.1 ifrit 192.168.1.100 dev.julianfernand.es 

在上面的示例中,当我访问dev.julianfernand.es (这不存在)时,它应该从192.168.1.100加载。

如果我ping,它可以正常工作。 但是,当我使用谷歌浏览器或Firefox访问dev.julianfernand.es时,却没有。

现在,在我重新启动几次后,它可以工作。 但是,由于我在一家托管的WordPress托管公司工作,我处理许多情况,我必须编辑我的文件,以便在我们的服务器上查看客户的网站。

我无法继续重启我的电脑。 它根本没有生产力。 重新启动网络服务不起作用,清除缓存(甚至是内部Chrome DNS缓存)也是如此。

有人有想法吗? 这种情况发生在elementaryOS(基于Ubuntu 12.04)和Ubuntu 13.10(每日)。 尚未尝试过任何其他版本。

PS:如果这件事,我有一台运行在PHP-FPM和MySQL机器上的NGINX服务器。

提前致谢 :)

在Ubuntu中,如果要刷新DNS缓存,则需要重新启动nscd守护程序。

使用以下命令安装nscd

 sudo apt-get install nscd 

在Ubuntu中刷新DNS缓存使用以下命令:

 sudo service nscd restart 

要么

 sudo service dns-clean start 

参考: http : //www.upubuntu.com/2012/05/how-to-flush-clear-dns-cache-under.html

对我来说,解决方案是编辑/etc/nsswitch.conf文件(您可以使用命令sudo vim /etc/nsswitch.conf )。 我换线了:

 hosts: files mdns4_minimal [NOTFOUND=return] dns 

至:

 hosts: dns files mdns4_minimal [NOTFOUND=return] 

现在它按预期工作了!

以下为我工作:添加

 addn-hosts=/etc/hosts 

 /etc/NetworkManager/dnsmasq.d/hosts.conf 

杀死dnsmasq和

 service NetworkManager restart 

接受的答案在12.04到13.04通过禁用dnsmasq ,但它在13.10中停止了为我工作。 我找到了13.10的以下新解决方案。

编辑/ etc / default / dnsmasq并将ENABLED=1更改为ENABLED=0并重新启动。

来自: http : //blog.calebthorne.com/2012/08/broken-etchosts-in-ubuntu-1204.html

Ubuntu 12.04桌面版中的一个新“function”是使用dnsmasq作为NetworkManager的插件用于本地DNS。 Dnsmasq旨在加速DNS和DHCP服务,但带来一个不幸的副作用: dnsmasq缓存本地DNS并忽略对/etc/hosts更改。 我在网站上工作时频繁更改主机文件,因此这个“function”非常烦人。

解决方案是在Networkmanager配置文件中禁用dnsmasq 。 打开/etc/NetworkManager/NetworkManager.conf并注释掉该行:

 dns=dnsmasq 

我的NetworkManager.conf文件包含以下内容:

 [main] plugins=ifupdown,keyfile # dns=dnsmasq [ifupdown] managed=false 

另见https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/993298

简单和更新

  1. 创建/etc/NetworkManager/dnsmasq.d/hosts.conf
  2. address=/whatever/1.2.3.4放入其中。 查看文档 (查找--address )。 通配符是可能的: address/.whatever./1.2.3.4
  3. 杀死dnsmasq ( bug )。
  4. 重启它: $ service network-manager restart

听起来你的设置很像我的设置。 我有一个运行Ubuntu的盒子作为我的办公室服务器和开发主机。 在那个盒子里,我运行Nginx,Apache,Tomcat,Rails应用程序和我需要的任何其他东西。

从我的Mac,我可以简单地添加一个主机条目,并加载服务器与我需要的任何名称,但从ElementaryOS客户端,这是行不通的。

我尝试了上面的修复,没有成功。

我所做的是运行Squid Proxy Server并将主机名添加到服务器上的/ etc / hosts。 (编辑需要重启鱿鱼。)

之后,在浏览器或操作系统的控制面板中进行适当的代理设置。

检查/etc/hosts文件的权限。

克隆服务器后,在我的云服务上,hosts文件的权限从644更改为600因此apache( www-data )无法读取该文件。 我从/etc运行sudo chmod 644 hosts并修复它。

问题始于:

 MongoConnectionException Failed to connect to: localhost:27017: Previous connection attempts failed, server blacklisted. 

我将它跟踪到MongoClient中指向localhost的服务器变量。 我无法ping localhost或主机名。