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

为什么 /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 的话,它工作正常。但是当我访问dev.julianfernand.es使用 Google Chrome 或 Firefox,则不行。

现在,我重启几次后,它就可以正常工作了。但由于我在一家托管 WordPress 托管公司工作,所以我经常遇到需要编辑文件才能在我们的服务器上查看客户网站的情况。

我就是不能一直重启电脑。这根本没什么用。重启网络服务不管用,清除缓存(甚至是内部 Chrome DNS 缓存)也不管用。

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

附言:如果这很重要,我在这台机器上有一个运行 PHP-FPM 和 MySQL 的 NGINX 服务器。

提前致谢 :)

答案1

在 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

答案2

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns

到:

hosts:          dns files mdns4_minimal [NOTFOUND=return]

现在它已按预期运行!

答案3

以下对我有用:添加

addn-hosts=/etc/hosts

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

终止 dnsmasq 并

service NetworkManager restart

答案4

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

Ubuntu 12.04 桌面版的一个新“功能”是用作dnsmasqNetworkManager 的插件来处理本地 DNS。Dnsmasq 旨在加速 DNS 和 DHCP 服务,但它有一个令人不快的副作用:dnsmasq缓存本地 DNS 并忽略对 的更改/etc/hosts。我在网站上工作时经常更改 hosts 文件,因此这个“功能”非常烦人。

dnsmasq解决方案是在 Networkmanager 配置文件中禁用。打开/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

相关内容