Est-ce que / etc / hosts doit contenir une entrée comme '127.0.0.1 localhost myhost.example.org myhost'?

16

En regardant une variété de systèmes Linux et FreeBSD, j'ai remarqué que sur certains systèmes /etc/hostscontient une entrée pour le nom d'hôte public de l'hôte, mais pas sur d'autres systèmes.

Quelle est la meilleure pratique ici? Mon fichier / etc / hosts doit-il contenir une entrée pour le nom de domaine complet des hôtes (par exemple myhost.example.org) et pour le nom d'hôte court (par exemple myhost)? L'enregistrement du nom de domaine complet doit-il pointer vers l'hôte local ou doit-il pointer vers l'IP externe de la boîte?

Par exemple, la configuration par défaut sur de nombreuses boîtes RHEL / EL ne place pas le nom d'hôte public dans /etc/hosts:

myhost # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
myhost #

L'autre variante est que le nom d'hôte court et le nom de domaine complet de l'hôte pointent également vers 127.0.0.1. On m'a dit que c'est une pratique plus ancienne qui est désapprouvée ces jours-ci, mais de nombreux administrateurs le font toujours.

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 #    

La troisième variante est que le nom de domaine complet et le nom d'hôte court des hôtes reçoivent l'adresse IP externe de l'hôte. Cette troisième variante me semble optimale car elle réduit les recherches sur les serveurs 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 #  

Quelle est la meilleure pratique ici?

Stefan Lasiewski
la source
2
il se résume à quels alias les programmes utilisent (par exemple, Mysql aime / doit avoir un alias 'localhost'), 127.0.0.1 localhost myhostdevrait être suffisant et, 74.125.239.xxx myhost myhost.example.orgcomme vous l'avez dit, enregistre les recherches DNS. "Meilleure pratique" à moins qu'il n'y ait une norme, c'est "ce que les gens bien informés utilisent".
LinuxDevOps

Réponses:

12

Êtes-vous prêt à accepter ou non le fonctionnement du DNS comme un point de défaillance dans votre environnement? Certains services / applications échoueront dans certaines configurations si un système ne peut pas résoudre le nom de la machine locale.

Si vous disposez d'un service absolument essentiel qui doit être exécuté dans toutes les situations, il n'est pas rare d'ajouter une entrée dans le fichier hosts afin que le service puisse continuer à fonctionner dans la situation où la résolution DNS échoue.

Si vous pouvez accepter votre DNS comme point de défaillance, ou si vos services n'échouent pas en cas de résolution défectueuse, les entrées de configuration dans le fichier hosts peuvent être évitées.

Je vous suggère fortement de rendre vos serveurs DNS aussi solides que possible, et si vous devez configurer votre fichier d'hôtes, utilisez un système de gestion de configuration pour le faire. Vous devez vraiment éviter manuellement d'éviter de toucher un fichier d'hôtes.

Zoredache
la source
13
Juste pour ajouter à cela, dans la plupart des cas /etc/hosts, remplacera DNS, ne sera pas utilisé comme solution de rechange en cas de défaillance DNS. C'est une distinction qui, je pense, devrait être faite. (N'essayant pas de choisir.) Tout dépend de l'ordre défini dans /etc/nsswitch.conf.
Aaron Copley
4
L'autre problème est que l'interrogation des serveurs DNS est beaucoup plus lente que la consultation du /etc/hostsfichier. De nombreuses applications interrogent leur nom d'hôte à plusieurs reprises, plusieurs fois par seconde. L'ajout du nom d'hôte à /etc/hostsréduira la latence et devrait accélérer l'application.
Stefan Lasiewski