/ etc / hosts是否应该包含“127.0.0.1 localhost myhost.example.org myhost”这样的条目?

在查看各种Linux和FreeBSD系统时,我注意到在某些系统上, /etc/hosts包含一个用于主机的公用主机名的条目,但不包含其他系统上的主机名。

这里最好的做法是什么? 我的/ etc / hosts文件是否应该包含主机FQDN(例如myhost.example.org)和短主机名(例如myhost)的条目? FQDN的logging应该指向本地主机还是指向该主机的外部IP?

例如,许多RHEL / EL盒子上的默认configuration不会将公共主机名放在/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。 我被告知,这是一个古老的做法,在这些日子里皱起了眉头,但许多pipe理员仍然这样做。

 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地址。 这第三个variables对我来说似乎是最优的,因为它减less了对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的故障点? 如果系统无法parsing本地计算机的名称,某些服务/应用程序将在某些configuration中失败。

如果您有绝对关键的服务必须在所有情况下运行,那么在hosts文件中添加一个条目并不常见,以便在DNSparsing失败的情况下服务可以继续运行。

如果您可以接受您的DNS作为失败点,或者如果您的服务在parsing失败的情况下不失败,则可以避免hosts文件中的configuration条目。

我强烈build议你尽可能使你的DNS服务器坚如磐石,如果你必须configuration你的主机文件,使用configurationpipe理系统来做到这一点。 你真的应该避免手动避免接触主机文件。