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

Jul*_*des 36 networking dns hosts 12.04

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

我所做的任何编辑/etc/hosts都不起作用。

例子:

julian@ifrit:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   ifrit
192.168.1.100   dev.julianfernand.es
Run Code Online (Sandbox Code Playgroud)

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

如果我ping,它工作得很好。但是,当我dev.julianfernand.es使用 Google Chrome 或 Firefox访问时,却没有。

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

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

有人在这里有想法吗?这发生在elementaryOS(基于Ubuntu 12.04)和Ubuntu 13.10(每日)上。其他版本还没试过。

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

提前致谢 :)

小智 14

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

nscd使用以下命令安装:

sudo apt-get install nscd
Run Code Online (Sandbox Code Playgroud)

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

sudo service nscd restart
Run Code Online (Sandbox Code Playgroud)

或者

sudo service dns-clean start
Run Code Online (Sandbox Code Playgroud)

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


jma*_*eli 7

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

hosts:          files mdns4_minimal [NOTFOUND=return] dns
Run Code Online (Sandbox Code Playgroud)

到:

hosts:          dns files mdns4_minimal [NOTFOUND=return]
Run Code Online (Sandbox Code Playgroud)

现在它按预期工作了!

  • 如果你希望 `/etc/hosts` 优先于来自 DNS 服务器的结果,你可能希望 `files` 作为第一个条目。 (2认同)

小智 6

以下对我有用:添加

addn-hosts=/etc/hosts
Run Code Online (Sandbox Code Playgroud)

/etc/NetworkManager/dnsmasq.d/hosts.conf
Run Code Online (Sandbox Code Playgroud)

杀死 dnsmasq 和

service NetworkManager restart
Run Code Online (Sandbox Code Playgroud)