/etc/hosts 中是否包含域名?

/etc/hosts 中是否包含域名?

我正在设置 CentOS 节点的 VMWare 集群。在机器后面添加域名是最佳做法吗?忽略它会带来哪些潜在问题?域会使配置复杂化还是简化配置?

例如,如果我的节点位于192.168.1.93,我应该/etc/hosts

127.0.0.1 localhost.localdomain localhost

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

或者

127.0.0.1 localhost
192.168.1.93 computenode1

或者

#127.0.0.1 localhost
192.168.1.93 computenode1

或者

192.168.1.93 localhost
192.168.1.93 computenode1

答案1

输入域名/etc/hosts是可选的,您可以运行系统而不会产生任何不良影响。

忽略它的唯一缺点是系统的完全限定主机名将无法正确显示。例如,hostname -f

完全限定主机名检测的工作方式:

  1. 它首先获取主机名或“短名称”。这是uname -nor的输出hostname
  2. /etc/hosts然后,它通过咨询(或者您在 中找到的任何内容/etc/resolv.conf,如果在 中找不到,则返回到后面的源)来获取该主机名的 IP 地址/etc/hosts
  3. 一旦获得 IP,它就会通过再次咨询来进行反向查找/etc/hosts
  4. 一旦在 中有记录/etc/hosts,第一个条目将用作完全限定的主机名。

简而言之,如果您希望完全限定的主机名起作用,您应该执行以下任一操作:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

或者

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname

答案2

只要您的主机同意您的域名,指定或不指定/etc/hosts都不会改变任何内容。另一种做法是将其指定为domain中的参数/etc/resolv.conf。如果有一天您的网络管理员更改了它,则不指定它可以简化您的生活。据我所知,指定它不会改变任何东西。

你绝对应该离开127.0.0.1 localhost127.0.0.1 localhost localhost.localdomain进入/etc/hosts。某些应用程序可能会开始出现非常奇怪的行为,即localhost绑定到环回地址以外的任何内容,因为这是一个非常非常意外的设置。

答案3

您必须在 IP 地址之后的第一个位置指定完全限定的域名。

正如我们读到的man 5 hosts

对于每个主机,应在一行中包含以下信息:

IP_地址 canonical_hostname [别名...]

如果不遵守规则,某些软件可能会崩溃。例如,Puppet 配置管理系统可能会在每次运行时开始来回更改您的主机名,只是因为您没有指定域部分,或者因为您在 FQDN 之前放置了没有域的别名。

答案4

我不确定这是否真的是“可选”(正如帕特里克上面指出的)。我终于找到了 nfs 权限恢复为无人的问题:无人。看起来为了使权限能够正确地使用 nfs 挂载(使用 idmapd),服务器的域名必须与客户端的域名完全匹配。从我发现的一些文档中,hostname -f减去客户端和服务器之间的实际主机名必须相同,或者您必须在 中为客户端指定一个域名/etc/idmapd.conf,这意味着每个客户端。

是否有关于在何处指定域名的官方规则?该domainname命令似乎没有从 /etc/hosts 中提取它。所以放入 /etc/hosts 很困扰我,因为这意味着它存储在文件系统上的多个位置。

相关内容