Fichier hôtes: est-il incorrect d'avoir la même adresse IP sur plusieurs lignes?

28

Pendant un certain temps, j'ai formaté mon fichier d'hôtes comme ceci. Remarquez la même IP sur deux lignes:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

J'ai lu récemment que les alias sont censés être consolidés sur une seule ligne:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

Cependant, je n'aime pas cette méthode car vous ne pouvez pas facilement commenter certains alias ou ajouter des commentaires à des alias particuliers, comme ceci:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

Jusqu'à présent, cela a bien fonctionné; Y a-t-il un probleme avec ca?

AlexMA
la source

Réponses:

28

J'ai trouvé ce fil qui discute de faire quelque chose dans ce sens. Le fil est assez catégorique pour ne pas avoir plusieurs lignes dans le /etc/hostsfichier.

extrait - Re: / etc / hosts: Deux lignes avec la même adresse IP?

Non, ce ne sera pas le cas. Les résolveurs s'arrêtent à la première résolution. Avoir quelque chose comme:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

Ne fera pas ce dont vous parlez. MAIS ayant:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

Provoquera toutes sortes de ravages. Y compris l'expédition.

Je ne ferais généralement pas ce que vous essayez. Si vous avez besoin de plus de preuves, la page de manuel dit même de ne pas le faire:

extrait man hosts

Cette page de manuel décrit le format du fichier / etc / hosts. Ce fichier est un simple fichier texte qui associe les adresses IP aux noms d'hôte, une ligne par adresse IP. Pour chaque hôte, une seule ligne doit être présente avec les informations suivantes:

         IP_address canonical_hostname [aliases...]

Cela étant dit, si vos noms d'hôtes sont FQDN et qu'ils ne se chevauchent pas, vous êtes probablement en sécurité pour faire ce que vous faites. Gardez à l'esprit que s'il y a un chevauchement tel que ce qui a été mentionné dans le fil ci-dessus, vous pouvez rencontrer des problèmes.

slm
la source
1
Je n'observe pas les effets notés par l'une ou l'autre des parties dans ce fil. Par exemple, plusieurs lignes pour 127.0.0.1 n'affectent pas la sortie de hostname(contre l'OP), et toutes résolvent correctement (contre le répondant).
goldilocks
1
Mais gethostbyaddr()ce qu'ils soulèvent est significatif. +1
goldilocks
Très intéressant! Je ne savais pas qu'un fichier d'hôtes était utilisé dans les deux sens (obtenir le nom d'hôte de l'ip, obtenir l'ip du nom d'hôte). Cela soulève certainement certains problèmes. Peut-être que je devrais regarder dans un processus de construction de fichier d'hôtes qui saisit une version lisible par l'homme puis la "corrige" en concaténant les alias d'hôte sur une ligne. Devrait être un script très facile.
AlexMA
1
@AlexMA - si vous trouvez que cela /etc/hostsvous cause des ennuis, vous pouvez toujours configurer DNS. J'exécute BIND pour cette raison exacte, (1) b / c, il est plus facile à gérer de manière centralisée, et (2) j'obtiens la résolution comme je le souhaite à partir de là sans beaucoup de maux de tête. Il existe également des options plus légères telles que DNSMasq. Ces systèmes peuvent également être utilisés sur une seule boîte!
slm
@slm Cela semble être une très bonne option pour un environnement de production. Probablement aussi un projet d'apprentissage précieux.
AlexMA
5

Je crois que la troisième méthode a bien fonctionné; Y a-t-il un probleme avec ca?

Je l'ai toujours fait un peu, mais il y a un problème potentiel car, selon man gethostbyaddrce système, l'appel peut utiliser /etc/hostspour associer une adresse IP à un nom. Bien que le cas le plus courant soit l'inverse (obtenir l'adresse à partir du nom), sachez-le au cas où quelque chose de drôle se produirait.

boucle d'or
la source
Comme je le soupçonnais, mais je voulais être sûr qu'il ne semble pas y avoir une grande documentation à ce sujet. Je ne savais pas non plus s'il pourrait y avoir plus de problèmes avec certaines distributions Unix extra-strictes. Je vous donnerai bientôt un crédit de réponse si personne d'autre ne se met d'accord avec une position différente.
AlexMA
Eh bien, ce point slmmérite d'être considéré; peut-être que le système n'était pas censé être utilisé de cette façon après tout. Je vais continuer à le faire (nb je l'utilise principalement pour 127.0.0.1 afin de pouvoir transplanter et tester des choses localement sans modifier une configuration d'hôte virtuel), mais j'ai ajouté une mise en garde au dernier paragraphe.
goldilocks
En fait j'ai édité ceci pour prendre en compte "un problème potentiel" ...
goldilocks
0

Apache 2.4 a refusé de démarrer sur mon système Unix. La cause principale était des lignes en double dans / etc / hosts. Après avoir supprimé la ligne en double, j'ai pu démarrer le serveur Web.

user275926
la source
4
Cette information est utile, mais devrait probablement être un commentaire plutôt qu'une réponse selon les directives de ce site.
AlexMA