Archivo de hosts: ¿es incorrecto tener la misma dirección IP en varias líneas?

28

Por un tiempo he estado formateando mi archivo de hosts de esta manera. Observe la misma ip en dos líneas:

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

Leí recientemente que se supone que los alias se consolidan en una línea:

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

Sin embargo, no me gusta este método porque no puede comentar fácilmente ciertos alias o agregar comentarios a alias particulares, como este:

  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

Hasta ahora esto ha estado funcionando bien; ¿Hay algún problema con esto?

AlexMA
fuente

Respuestas:

28

Encontré este hilo que habla de hacer algo en este sentido. El hilo es bastante inflexible acerca de no tener varias líneas en el /etc/hostsarchivo.

extracto - Re: / etc / hosts: ¿Dos líneas con la misma dirección IP?

No, no lo hará. Los resolutores se detienen en la primera resolución. Tener algo como:

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

No hará lo que estás hablando. PERO teniendo:

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

Causará todo tipo de estragos. Incluyendo reenvío.

Generalmente no haría lo que estás intentando. Si necesita más evidencia, la página del manual incluso dice que no haga esto:

extracto man hosts

Esta página del manual describe el formato del archivo / etc / hosts. Este archivo es un archivo de texto simple que asocia direcciones IP con nombres de host, una línea por dirección IP. Para cada host, debe estar presente una sola línea con la siguiente información:

         IP_address canonical_hostname [aliases...]

Dicho todo esto, si sus nombres de host son FQDN y no se superponen, entonces probablemente sea seguro hacer lo que está haciendo. Solo tenga en cuenta que si hay una superposición como lo que se mencionó en el hilo anterior, entonces puede encontrarse con la resolución de problemas.

slm
fuente
1
No observo los efectos notados por ninguna de las partes en ese hilo. Por ejemplo, varias líneas para 127.0.0.1 no afectan la salida de hostname(contra el OP), y todas ellas se resuelven correctamente (contra el encuestado).
Ricitos de oro
1
Pero gethostbyaddr()lo que plantean es significativo. +1
Ricitos de Oro
¡Muy interesante! No me di cuenta de que un archivo de hosts se usaba bidireccionalmente (obtener el nombre de host de ip, obtener ip del nombre de host). Eso definitivamente trae algunos problemas. Tal vez debería buscar en un proceso de compilación de archivos de hosts que tome una versión legible por humanos y luego la "corrija" concatenando alias de host en una línea. Debería ser un guión muy fácil.
AlexMA
1
@AlexMA: si descubre que le /etc/hostsestá causando dolor, siempre puede configurar DNS. Ejecuto BIND por este motivo exacto, (1) b / c es más fácil de administrar de forma centralizada, y (2) obtengo la resolución que quiero desde allí sin muchos dolores de cabeza. Hay opciones más ligeras como DNSMasq para hacer esto también. ¡Estos sistemas también se pueden usar en una sola caja!
slm
@slm Eso suena como una muy buena opción para un entorno de producción. Probablemente un proyecto de aprendizaje valioso también.
AlexMA
5

Creo que el tercer método ha estado funcionando bien; ¿Hay algún problema con esto?

Siempre lo he hecho un poco, pero existe un problema potencial ya que de acuerdo con man gethostbyaddrese sistema, la llamada puede usar /etc/hostspara asociar una dirección IP con un nombre. Aunque el caso mucho más común es al revés (obtenga la dirección del nombre), tenga en cuenta esto en caso de que ocurra algo gracioso.

encerrada dorada
fuente
Como sospechaba, pero quería estar seguro de que no parece haber una gran documentación al respecto. Tampoco estaba seguro de si podría haber más problemas con algunas distribuciones de Unix extra-estrictas. Le daré crédito de respuesta pronto si nadie más interviene con una postura diferente.
AlexMA
Bueno, slmvale la pena considerar el punto ; quizás el sistema no estaba destinado a ser usado de esta manera después de todo. Voy a seguir haciéndolo (nb, solo uso esto para 127.0.0.1 para poder trasplantar y probar cosas localmente sin modificar una configuración de host virtual), pero he agregado una advertencia al último párrafo.
Ricitos de oro
De hecho he editado este a tener en cuenta "un problema potencial" ...
GOLDILOCKS
0

Apache 2.4 se negó a iniciar en mi sistema Unix. La causa raíz fueron las líneas duplicadas en / etc / hosts. Después de eliminar la línea duplicada pude iniciar el servidor web.

usuario275926
fuente
44
Esta es información útil, pero probablemente debería ser un comentario en lugar de una respuesta de acuerdo con las pautas de este sitio.
AlexMA