当前位置: 首页>>技术教程>>正文


为什么/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通,就可以了。但是,当我使用Google Chrome或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

次佳思路

以下对我有用:添加

addn-hosts=/etc/hosts

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

杀死dnsmasq和

service NetworkManager restart

第三种思路

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns

至:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

现在它正在按预期工作!

第四种思路

通过禁用dnsmasq,可接受的答案在12.04到13.04之间有效,但在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桌面版中的新”feature”将使用dnsmasq作为NetworkManager的本地DNS插件。 Dnsmasq旨在加快DNS和DHCP服务的速度,但是有一个不幸的副作用:dnsmasq缓存本地DNS,而忽略对/etc/hosts的更改。在网站上工作时,我经常对主机文件进行更改,因此此”feature”非常令人讨厌。

解决方案是在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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8133.html,未经允许,请勿转载。