Inclure le nom de domaine ou non dans / etc / hosts?

15

J'installe un cluster VMWare de nœuds CentOS. Est-il recommandé d'inclure un nom de domaine après la machine? Quels sont les problèmes potentiels liés à son omission? Un domaine complique-t-il la configuration ou la simplifie-t-il?

Par exemple, si mon nœud est à 192.168.1.93, dois-je changer /etc/hostsde

127.0.0.1 localhost.localdomain localhost

à

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

ou

127.0.0.1 localhost
192.168.1.93 computenode1

ou

#127.0.0.1 localhost
192.168.1.93 computenode1

ou

192.168.1.93 localhost
192.168.1.93 computenode1
T. Webster
la source

Réponses:

24

La mise du nom de domaine /etc/hostsest facultative, et vous pouvez exécuter un système sans aucun effet néfaste.

Le seul inconvénient de le laisser de côté est que le nom d'hôte complet du système ne s'affichera pas correctement. Par exemple hostname -f,.

Fonctionnement de la détection du nom d'hôte complet:

  1. Il obtient d'abord le nom d'hôte, ou «shortname». Il s'agit de la sortie de uname -nou hostname.
  2. Il obtient ensuite l'adresse IP de ce nom d'hôte en consultant /etc/hosts(ou tout ce que vous avez /etc/resolv.conf, et en retombant sur ces dernières sources s'il ne se trouve pas dans /etc/hosts).
  3. Une fois qu'il a l'IP, il effectue une recherche inversée en consultant à nouveau /etc/hosts.
  4. Une fois qu'il a un enregistrement /etc/hosts, la première entrée est utilisée comme nom d'hôte complet.

En un mot, si vous voulez que le nom d'hôte pleinement qualifié fonctionne, vous devez faire soit:

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

ou

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname
Patrick
la source
1
Je n'ai pas considéré ce point. Avoir un nom d'hôte complet est inutile pour un PC de bureau et peut être problématique pour un ordinateur portable (car un ordinateur portable est susceptible d'être amené sur différents réseaux) mais il est utile pour un serveur. Apache2, par exemple, se plaint quand il ne peut pas déterminer son nom de domaine complet.
lgeorget
@lgeorget Vous pouvez également simplement utiliser libnss-myhostnamece qui prend en charge la résolution de votre nom de domaine complet, mais n'a pas besoin d'une entrée dans/etc/hsots
Ulrich Dangel
La configuration ci-dessus peut causer des problèmes, voir cette discussion sur la pratique actuelle de Debian de configurer le hostsfichier, et celle- ci sur l'utilisation (ou son absence) de l' localhost.localdomainentrée.
Joó Ádám
1
sudose plaint également si le nom d'hôte n'est pas en /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri
3

Tant que votre hôte est d'accord avec votre nom de domaine, le spécifier ou non /etc/hostsne changera rien. Une autre pratique consiste à le spécifier comme domainparamètre dans /etc/resolv.conf. Ne pas le spécifier pourrait vous simplifier la vie si, un jour, votre administrateur réseau le changeait. Le préciser ne change rien, pour autant que je sache.

Vous devez absolument partir 127.0.0.1 localhostou 127.0.0.1 localhost localhost.localdomainentrer /etc/hosts. Certaines applications peuvent commencer à avoir un comportement vraiment étrange qui se localhostlie à autre chose qu'à votre adresse de bouclage car il s'agit d'un paramètre vraiment, vraiment inattendu.

lgeorget
la source
2

Vous devez spécifier le nom de domaine complet en première position après l'adresse IP.

Comme nous le lisons dans man 5 hosts:

Pour chaque hôte, une seule ligne doit être présente avec les informations suivantes:

IP_address canonical_hostname [alias ...]

Si vous ne respectez pas la règle, certains logiciels peuvent se casser. Par exemple, le système de gestion de la configuration de Puppet peut commencer à changer votre nom d'hôte dans les deux sens à chaque exécution simplement parce que vous n'avez pas spécifié de partie de domaine ou parce que vous mettez l'alias sans domaine sur la ligne avant le FQDN.

synapse
la source
0

Je ne suis pas sûr que ce soit vraiment "facultatif" (comme Patrick l'a indiqué ci-dessus). Je viens enfin de retrouver un problème avec les autorisations nfs revenant à personne: personne. Il semble que les autorisations fonctionnent correctement avec les montages nfs (en utilisant idmapd), le nom de domaine du serveur doit correspondre exactement au nom de domaine du client. D'après certains documents que j'ai trouvés - hostname -fmoins le nom d'hôte réel doit être identique entre le client et le serveur OU vous devez spécifier un nom de domaine pour le client dans /etc/idmapd.conf, ce qui signifie chaque client.

Existe-t-il une règle officielle sur l'endroit où spécifier le nom de domaine? La domainnamecommande ne semble pas la récupérer dans / etc / hosts .. donc l'insertion de / etc / hosts me dérange, car cela signifie qu'elle est stockée à plusieurs emplacements sur le système de fichiers ..

tyto
la source