/etc/hosts 在 16.04 上被忽略,之前的解决方案均无效

/etc/hosts 在 16.04 上被忽略,之前的解决方案均无效

/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 可以正常工作。

我不知道哪种解决方案有效,但应用所有解决方案,然后重新启动……显然有效。

相关内容