在查看各种 Linux 和 FreeBSD 系统时,我注意到在某些系统上/etc/hosts
包含主机的公共主机名条目,但在其他系统上则没有。
这里的最佳做法是什么?我的 /etc/hosts 文件是否应该包含主机 FQDN(例如 myhost.example.org)和短主机名(例如 myhost)的条目?FQDN 的记录应该指向本地主机还是应该指向盒子的外部 IP?
例如,许多 RHEL/EL 机器上的默认配置不会将公共主机名放入/etc/hosts
:
myhost # cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #
另一个变体是主机的短主机名和 FQDN 也指向 127.0.0.1。有人告诉我,这是一种较旧的做法,如今已不受欢迎,但很多管理员仍然这样做。
myhost # cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 myhost myhost.example.org
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #
第三种变体是主机的 FQDN 和短主机名被赋予主机的外部 IP 地址。这第三种变体对我来说似乎是最优的,因为它减少了对 DNS 服务器的查找。
myhost # cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
74.125.239.xxx myhost myhost.example.org
myhost #
这里的最佳做法是什么?
您是否愿意接受工作 DNS 成为您环境中的故障点。如果系统无法解析本地机器的名称,某些服务/应用程序将在某些配置中失败。
如果您有一个绝对关键的服务必须在所有情况下都运行,那么在 hosts 文件中添加一个条目以便服务可以在 DNS 解析失败的情况下继续运行是很正常的。
如果您可以接受您的 DNS 作为故障点,或者如果您的服务在解析中断的情况下不会失败,则可以避免 hosts 文件中的配置条目。
我强烈建议您使 DNS 服务器尽可能坚固,如果您必须配置主机文件,请使用配置管理系统来完成。您确实应该避免手动避免触摸主机文件。