为什么/ 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
简单和更新
- 创建
/etc/NetworkManager/dnsmasq.d/hosts.conf
。 - 将
address=/whatever/1.2.3.4
放入其中。 查看文档 (查找--address
)。 通配符是可能的:address/.whatever./1.2.3.4
。 - 杀死
dnsmasq
( bug )。 - 重启它:
$ 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或主机名。