问题描述
我已经遇到了一段时间的问题,并尝试了我所知道的一切,所以我认为现在是时候寻求帮助了。
我对/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