当查看各种 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 #
这里的最佳实践是什么?
答案1
您是否愿意接受环境中的 DNS 故障点。如果系统无法解析本地计算机的名称,某些服务/应用程序将在某些配置下失败。
如果您有一个绝对关键的服务,必须在所有情况下运行,那么在 hosts 文件中添加一个条目是很常见的,这样该服务就可以在 DNS 解析失败的情况下继续运行。
如果您可以接受 DNS 作为故障点,或者您的服务在解析中断的情况下不会失败,则可以避免 hosts 文件中的配置条目。
我强烈建议您尽可能地确保 DNS 服务器的稳定性,如果您必须配置 hosts 文件,请使用配置管理系统。您确实应该避免手动修改 hosts 文件。