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

T. *_*ter 20 networking

我正在设置 CentOS 节点的 VMWare 集群。在机器后包含域名是最佳做法吗?将其排除在外有哪些潜在问题?域是使配置复杂化还是简化了配置?

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

127.0.0.1 localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1
Run Code Online (Sandbox Code Playgroud)

或者

127.0.0.1 localhost
192.168.1.93 computenode1
Run Code Online (Sandbox Code Playgroud)

或者

#127.0.0.1 localhost
192.168.1.93 computenode1
Run Code Online (Sandbox Code Playgroud)

或者

192.168.1.93 localhost
192.168.1.93 computenode1
Run Code Online (Sandbox Code Playgroud)

phe*_*mer 31

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

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

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

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

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

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)

或者

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname
Run Code Online (Sandbox Code Playgroud)