Hosts

為什麼我的 /etc/hosts 文件沒有被讀取?

  • February 7, 2016

我的/etc/hosts文件如下所示:

# Your system has configured 'manage_etc_hosts' as True.
# As a result, if you wish for changes to this file to persist
# then you will need to either
# a.) make changes to the master file in /etc/cloud/templates/hosts.tmpl
# b.) change or remove the value of 'manage_etc_hosts' in
#     /etc/cloud/cloud.cfg or cloud-config from user-data
127.0.1.1 ansible-server ansible-server
127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

node1 0.0.0.0
node2 0.0.0.0

我已經添加了node1並且node2自然地IP0.0.0.0被節點的IP替換了。

我認為這工作得很好,但事實並非如此。我認為 SSH 只是忽略了該hosts文件:

root@ansible-server:~# ssh root@node1
ssh: Could not resolve hostname node1: Name or service not known
root@ansible-server:~# ssh root@node2
ssh: Could not resolve hostname node2: Name or service not known

但是,我也無法通過它們的名稱 ping 這些伺服器:

root@ansible-server:~# ping node1
ping: unknown host node1
root@ansible-server:~# ping node2
ping: unknown host node2

很明顯我在這裡做了一些非常愚蠢的事情……但是什麼?

附加資訊:此伺服器執行 Ubuntu 14.04.2 LTS 並託管在 DigitalOcean 上。這發生在 Ansible 伺服器上的伺服器。

由於@William 仍然弄錯了(!),我們開始:

行的格式/etc/hosts是地址第一和名稱第二

0.0.0.0 node1 
0.0.0.0 node2 
192.168.1.1 myroutermaybe
8.8.8.8 googledns # in case DNS doesn't work for DNS???
127.0.0.1 localhost 

或多個名稱映射到同一個地址

0.0.0.0 node1 node2 node3 stitch626 

添加,感謝 fpmurphy1 的提醒:

第一個名稱(如果有多個)用作gethostbyaddretc 的規範或“官方”名稱,因此如果您有一個分配給此機器/地址的域名,通常最清晰和最有用的是放置完全合格的域名 ( FQDN) 作為名字。

引用自:https://unix.stackexchange.com/questions/220501