¿Cuál es el propósito de / etc / hosts?


21

Según tengo entendido, el hostsarchivo es una de varias instalaciones del sistema que ayuda a direccionar nodos de red en una red informática. Pero, ¿qué debería haber dentro? Cuando instalo Ubuntu por defecto

127.0.0.1 localhost 

estaré ahí. ¿Por qué?

  • ¿Cómo /etc/hostsfunciona en el caso de sistemas JVM como Cassandra?
  • ¿Cuándo es la alternativa DNS, supongo que no en una sola computadora?


Mi /etc/hostscontiene 127.0.0.2 mycouchdb bookmarkdb myothercouchappy 127.0.0.3 myapachi websiteuso estos para ayudarme con mi desarrollo que se ejecuta en mi máquina local. Tengo 3 servicios escuchando en el puerto 80. No quiero ponerlos en el DNS, ya que son solo locales.
ctrl-alt-delor

¿Lo has intentado man 5 hosts?
Restablece a Monica - M. Schröder

¿Linux no tiene una página de manual para esto donde se explica con algún detalle? Esta es la más fundamental de las preguntas.
Rob

Respuestas:


45

El archivo /etc/hostscomenzó en los viejos tiempos de DARPA como el archivo de resolución para todos los hosts conectados a Internet (antes de que existiera DNS). Tiene la máxima prioridad, lo que significa que este archivo es preferido antes que cualquier otro sistema de nombres. 1

Sin embargo, como archivo único, no se escala bien: el tamaño del archivo se vuelve demasiado grande muy pronto. Es por eso que se desarrolló el sistema DNS, un sistema jerárquico de nombres distribuidos. Permite que cualquier host encuentre la dirección numérica de algún otro host de manera eficiente.

El concepto muy antiguo del /etc/hostsarchivo es muy simple, solo una dirección y un nombre de host:

127.0.0.1      localhost

para cada línea Esa es una lista simple de pares de dirección-host. 2

Su uso principal actual es evitar la resolución de DNS. Se /etc/hostsutilizará una coincidencia encontrada en el archivo antes de cualquier entrada DNS. De hecho, si el nombre buscado (como localhost) se encuentra en el archivo, no se realizará ninguna resolución de DNS.


1 Bueno, el orden de resolución de nombres se define en realidad /etc/nsswitch.conf, que generalmente tiene esta entrada:

hosts:          files dns

lo que significa "probar archivos ( /etc/hosts); y si falla, intente DNS".

Pero ese orden podría ser cambiado o ampliado.


2 (en la actualidad) El archivo de hosts contiene líneas de texto que consisten en una dirección IP en el primer campo de texto seguido de uno o más nombres de host. Cada campo está separado por espacios en blanco: las pestañas a menudo se prefieren por razones históricas, pero también se usan espacios. Se pueden incluir líneas de comentarios; están indicados por un octothorpe (#) en la primera posición de tales líneas. Las líneas completamente en blanco en el archivo se ignoran. Por ejemplo, un archivo de hosts típico puede contener lo siguiente:

127.0.0.1   localhost loopback
::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
192.168.0.8 mycomputer.lan
10.0.0.27   mycomputer.lan

Este ejemplo contiene entradas para las direcciones de bucle invertido del sistema y sus nombres de host, la primera línea es un contenido predeterminado típico del archivo de hosts. La segunda línea tiene varios nombres adicionales (probablemente solo válidos en sistemas locales). El ejemplo ilustra que una dirección IP puede tener múltiples nombres de host (localhost y loopback), y que un nombre de host se puede asignar a las direcciones IP IPv4 e IPv6, como se muestra en la primera y segunda línea respectivamente. Un nombre ( mycomputer.lan) puede resolverse en varias direcciones ( 192.168.0.8 10.0.0.27). Sin embargo, en ese caso, cuál se usa depende de las rutas (y sus prioridades) establecidas para la computadora.

Algunos sistemas operativos más antiguos no tenían forma de informar una lista de direcciones para un nombre de pila.


5

Usar el archivo / etc / hosts para dar un nombre legible a un sistema local dentro de un entorno de escritorio es perfectamente razonable. El archivo hosts es ideal para usar en una red doméstica o incluso en un entorno de pequeña empresa. Esto no puede ser público como el direccionamiento de Internet, entonces necesita DNS. Si la red local es lo suficientemente grande, o simplemente corta en diferentes subredes, o cualquier otra razón útil, se prefiere DNS.

El archivo de hosts locales y DNS se administran con diferente prioridad, por lo que nunca hay conflictos.


44
No estaría de acuerdo sobre los conflictos, he tenido una serie de problemas difíciles de depurar porque host-provision-by-group-A dejó /etc/hostsentradas obsoletas que en el futuro causaron fallas en las operaciones por grupo B (mi grupo) , y terminamos configurando algo para desinfectar el contenido de/etc/hosts
thrig

los conflictos dentro del archivo pueden existir fuera de curso, pero es culpa del propietario de la máquina :)
francois P

2
También estoy en desacuerdo con nunca tener ningún conflicto. Tuve que depurar errores muy extraños debido a entradas de host obsoletas en conflicto con los cambios de DNS.
Rui F Ribeiro

@thrig: Quizás el problema es que sus grupos son demasiado grandes para usar / etc / hosts de manera efectiva. Funciona perfectamente bien para las 5 máquinas (en este momento) en mi red doméstica.
jamesqf

Bueno, el sistema no cree que haya un conflicto, tiene instrucciones claras sobre la prioridad de las cosas: p
StarWeaver

3

En Linux, me atrevo a decir que siempre debe haber al menos 127.0.0.1 localhostdentro del archivo /etc/hosts , así como la dirección IPv6 correspondiente para localhost .

Es simplemente una resolución de nombre de host a una dirección IPv4 o IPv6 numérica. Cuando intenta conectarse a (a) unix.stackexchange.com en algún lugar de la tierra que probablemente no esté cerca de usted, o (b) myotherpc en la red de área local de su hogar, es uno /etc/hostso algún servidor de nombres de dominio (DNS) que está haciendo la resolución del host, por lo que cuando escribe unix.stackexchage.com, que como ser humano es lo que le importa, no tiene que recordar 185.53.179.7 , que es lo que la computadora realmente necesita saber.

Como se señaló, en Linux /etc/nsswitchgeneralmente hay un orden de resolución de nombre de host, lo que significa verificar primero el DNS antes de verificar NIS y luego verificar el archivo; de lo /etc/hostscontrario, el host no se encuentra

La forma en que administra la verificación de pedidos y qué / dónde / quién administra el servicio DNS o NIS depende de usted, o puede anular todo modificando / etc / nsswitch para que solo se registre /etc/hostsy nunca verifique con DNS o NIS o ...

Para una red doméstica simple de pocas computadoras, digamos 2 a N, un administrador simplemente editaría /etc/hostsen cada computadora para ser correcta, sería más fácil, más rápido, más barato que configurar un Servidor de Nombres de Dominio u otro servicio para tener una ubicación maestra o autoridad para hacer la resolución del nombre del host a la dirección IP.

para linux web busque el historial y la razón detrás localhost. Muchas cosas en Linux dependen de que el nombre localhost se resuelva en 127.0.0.1 y si eso no sucede, causará problemas, y esta definición localhost debería / debería ocurrir en un archivo de sistema local como / etc / hosts.

/etc/hostsPor defecto, suele ser la última palabra y la última cosa para que el sistema operativo Linux recurra a la resolución de nombres de host. en Windows XP y 7, el archivo correspondiente es C:\Windows\System32\drivers\etc\lmhosts No sé sobre Windows 8 o 10.


Un uso típico del archivo hosts, particularmente en Windows, es desviar el intento de un programa de 'llamar a casa' a un dispositivo nulo. Lejos de mi parte sugerir que esto podría ser para frustrar un control de legalidad.
Laurence Payne

Todavía no he encontrado el editor en mi iPhone que me permite editar / etc / hosts ... así que ejecuto DNS en mi lan
ivanivan
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.