/etc/hosts 文件中的条目被忽略:
$ cat /etc/hosts
127.0.0.1 localhost
127.0.0.1 google.com
$ ping google.com
PING google.com (216.58.213.142) 56(84) bytes of data.
64 bytes from par21s03-in-f142.1e100.net (216.58.213.142): icmp_seq=1 ttl=50 time=10.3 ms
我已经尝试了12.04 线程但没有骰子。
- 安装
nscd
只是为了重新启动它 编辑
/etc/nsswitch.conf
:目前看起来像:$ cat /etc/nsswitch.conf # /etc/nsswitch.conf # passwd: compat group: compat shadow: compat gshadow: files hosts: dns files networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
注意:此
hosts
行是files dns
在我开始故障排除之前,我按照 12.04 线程的建议将其更改为dns files
。对于 /etc/hosts 而言,这两种顺序都不会对我的系统行为产生任何影响。编辑
/etc/default/dnsmasq
(没有此文件)- 禁用
dnsmasq
(/etc/NetworkManager/NetworkManager.conf
也没有这样的文件) - 创建一个
/etc/NetworkManager/dnsmasq.d/hosts.conf
文件并向其中添加地址解析行,终止 dnsmasq(没有这样的进程)并执行service network-manager restart
(没有这样的服务) - 设置 Squid 代理服务器(呃,这对我的情况不起作用,并且是一种超出问题范围的黑客行为!)
sudo chmod 644 hosts
(权限事先已经是644)
我本来想在该主题中以评论的形式提出这个问题,但我的声誉不够(需要 50 点)。
根据要求,输出如下systemctl list-units '[Nn]etwork*' --all
:
$ systemctl list-units '[Nn]etwork*' --all
UNIT LOAD ACTIVE SUB DESCRIPTION
networking.service loaded active exited Raise network interfaces
● NetworkManager.service not-found inactive dead NetworkManager.service
network-online.target loaded active active Network is Online
network-pre.target loaded active active Network (Pre)
network.target loaded active active Network
有任何想法吗?
答案1
hosts: dns files
应该:
hosts: files dns
这允许系统 NS 首先查询文件。即/etc/hosts
。nsswitch.conf
中的顺序很重要 - 重新启动或网络重启也很重要。
答案2
尝试了以上所有方法后,包括steeldriver 在评论中的建议我终于解决了它...
...通过重新启动机器。
现在 /etc/hosts 可以正常工作。
我不知道哪种解决方案有效,但应用所有解决方案,然后重新启动……显然有效。