Nombres de host: ¿de qué se tratan?

54

Recientemente me han "obligado" a realizar algunos trabajos de administrador de sistemas, aunque esto no es algo que me encanta hacer, he estado leyendo, experimentando y aprendiendo mucho.

Hay un aspecto fundamental de la configuración del servidor que no he podido comprender: los nombres de host .

En Ubuntu, por ejemplo, uno debe configurar el nombre de host de esta manera (según la Biblioteca Linode ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

Archivo: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Supongo que platoes un nombre arbitrario y ese plato.example.comes el FQDN.

Ahora mis preguntas son:

  • ¿Es obligatorio?
  • ¿Con que propósito?
  • ¿Dónde se necesita / usa?
  • ¿Por qué no puedo definir "localhost" como el nombre de host para cada máquina?
  • ¿Tengo que configurar una entrada DNS para el plato.example.comFQDN?
  • ¿Debería plato.example.comusarse como la entrada DNS inversa para mi IP?

Además, ¿hay alguna "mejor práctica" para elegir nombres de host? He visto personas que usan letras griegas, nombres de planetas e incluso figuras mitológicas ... ¿Qué sucede cuando nos quedamos sin letras / planetas?

Lo siento si esta es una pregunta tonta, pero nunca he estado demasiado entusiasmado con las configuraciones de red.

Alix Axel
fuente
3
Creo que Chris S está fuera de la base aquí. La pregunta, ¿qué es un nombre de host del sistema y cómo se relaciona con DNS? Es válida.
larsks
@ Chris S: Lo entiendo, créeme. Intenté leerlo una vez, pero todo me pareció muy confuso. No aspiro a ser una SA, solo trato de entender un poco mejor los conceptos básicos.
Alix Axel
Esto debería ir al wiki de la comunidad
lynxman
1
@lynxman: No me importa eso, pero ¿por qué?
Alix Axel
1
Porque es muy interesante :)
lynxman

Respuestas:

29

En estos días, un sistema puede tener múltiples interfaces, cada una con múltiples direcciones, y cada dirección puede incluso tener múltiples entradas de DNS asociadas. Entonces, ¿qué significa un "nombre de host del sistema"?

Muchas aplicaciones usarán el nombre de host del sistema como identificador predeterminado cuando se comuniquen en otro lugar. Por ejemplo, si está recopilando mensajes de syslog en un servidor central, todos los mensajes se etiquetarán con el nombre de host del sistema de origen. En un mundo ideal, probablemente ignoraría esto (porque no necesariamente quiere confiar en el cliente), pero el comportamiento predeterminado, si nombra a todos sus sistemas como "localhost", daría lugar a un montón de mensajes de registro que usted no podría asociarse con un sistema específico.

Como han señalado otras personas, el nombre de host del sistema también es un identificador útil si te encuentras accediendo de forma remota a varios sistemas. Si tiene cinco ventanas conectadas a un sistema llamado "localhost", entonces tendrá dificultades para mantenerlas en orden.

De manera similar, tratamos de hacer que el nombre de host del sistema coincida con el nombre de host que utilizamos para el acceso administrativo a un sistema. Esto ayuda a evitar confusiones al referirse al sistema (en correo electrónico, conversaciones, documentación, etc.).

En cuanto a DNS:

Desea tener entradas DNS correctas hacia adelante y hacia atrás para sus aplicaciones a fin de evitar confusiones. Necesita alguna entrada directa (nombre -> dirección IP) para que las personas puedan acceder a su aplicación de manera conveniente. Tener la coincidencia de entrada inversa es útil por varias razones, por ejemplo, le ayuda a identificar correctamente la aplicación si encuentra la dirección IP correspondiente en un registro.

Tenga en cuenta que aquí estoy hablando de "aplicaciones" y no de "sistemas", porque, particularmente con servidores web, es común tener múltiples direcciones IP en un sistema, asociadas con diferentes nombres de host y servicios.

Intentar mantener las asignaciones de nombre a ip en su /etc/hostsarchivo rápidamente se vuelve difícil a medida que administra un número creciente de sistemas. Es muy fácil que el archivo de hosts locales no esté sincronizado con respecto al DNS, lo que puede generar confusión y, en algunos casos, un mal funcionamiento (porque algo intenta vincularse a una dirección IP que ya no existe en el sistema, por ejemplo).

larsks
fuente
Gracias por su respuesta, todavía estoy confundido si debo (o necesito) mantener el archivo / etc / hosts en lugar de solo confiar en las entradas de DNS.
Alix Axel
8
Generalmente ignoro /etc/hostsa favor de DNS. Esto reduce la cantidad de lugares que necesito para mantener información sobre el mapeo de nombre -> dirección. En la mayoría de los sistemas que mantengo, /etc/hostscontiene solo la entrada única para localhost.
larsks
Cuando se trata de clústeres, como ganeti o un clúster Linux-HA / Corosync, / etc / hosts se usa para hablar entre los miembros del clúster. Es malo que confíe únicamente en DNS porque su servicio DNS puede estar en esos clústeres y ser migrado o desconectado durante un cambio de nodo, por lo que / etc / hosts y un nombre de host correcto lo ayudarán a pasar un buen rato.
coredump
entonces, con respecto a "único", estamos más bien "intentando" ser "único" que "debe" ser único, ¿correcto? Debido a que hay tantos servidores por ahí y todos están en el mismo ámbito, ser real "único" es imposible. ¿Es correcto este entendimiento?
shenkwen
10

Puede configurar cada nombre de host en "localhost", pero es muy útil tenerlo alix@plato ~ $en el símbolo del sistema cuando administra máquinas a través de ssh. Administrar servidores de forma remota podría ser muy confuso si no lo hace.

Tener un FQDN correcto es importante para cuando aloja un servidor web o un servidor de correo. Este tipo de aplicaciones de servidor les gusta saber "en quién" se están ejecutando.

Para elegir un buen esquema de nombres, lo remito a esta pregunta muy popular .

Un FQDN se vuelve útil solo cuando es significativo para otra computadora. Hay tres niveles para esto:

  • Una computadora en su red local tiene una entrada en su archivo de hosts que apunta a esa máquina
  • Tiene un servidor DNS ejecutándose en su red local y cada computadora local que lo utiliza como servidor DNS ahora conoce a plato por su nombre.
  • Usted registra un nombre de dominio y ahora todo el mundo sabe a qué máquina apunta el nombre plato.alixaxel.com.

Al enviar correos electrónicos o servir páginas web al mundo exterior, el tercero es el que desea tener. Para la mayoría de los otros casos, puede arreglárselas con un DNS local o incluso editar archivos de host.

En ese caso, puede inventar un nombre de dominio (plato.alixnetwork podría estar bien como un FQDN) para usar dentro de su red local. El único valor agregado de tener la parte "alixnetwork" (el nombre de dominio) es la comodidad cuando tiene otra red local de la que desea distinguirla.

Kenny Rasschaert
fuente
Gracias Kenny, creo que mi principal duda es por qué es importante que un servidor web / de correo tenga un FQDN adecuado. Además, ¿qué constituye un FQDN "adecuado"? ¿Debería anteponer el nombre de host al dominio y señalarlo a la dirección IP pública? Tengo la impresión de que tengo que crear entradas DNS A / AAAA con el nombre de host, ¿no?
Alix Axel
Depende de lo que quieras lograr. Si no envía correos electrónicos o sirve páginas web al mundo con plato, realmente no hay necesidad de crear un registro DNS global para esa máquina.
Kenny Rasschaert
"Usted registra un nombre de dominio y ahora todo el mundo sabe a qué máquina apunta el nombre plato.alixaxel.com". - No entiendo esto. ¿No sabe todo el mundo a qué máquina apunta el nombre plato.alixaxel.com al verificar la resolución DNS de "alixaxel.com"? ¿Qué tiene que ver con configurar un FQDN en una máquina aleatoria?
shenkwen
9

Una descripción básica. El nombre de host son solo punteros; puede asignar uno específico para que sea el nombre de host al que hace referencia la máquina, pero podría tener varios. Algunos servicios, correo notable y HTTP dependen de nombres de dominio para saber dónde deben ubicarse los servicios y cómo llegar a ellos.

Hace mucho tiempo, todos estos nombres (que nuevamente son solo punteros a direcciones IP) se registraron en un archivo llamado hosts. A medida que el sistema creció, no pudieron mantener el archivo sincronizado en todas las computadoras relevantes que participaban en las diversas redes interconectadas. Entonces se inventó el sistema DNS. Cuando realiza una búsqueda de nombre, todavía verifica primero el archivo de hosts y luego el sistema DNS. Windows también puede verificar otros sistemas como WINS o NetBIOS.

Cuando coloca una entrada en un hostsarchivo, no la está asignando a la computadora. La asignación de un nombre de host como el que usa la computadora se realiza en los archivos de configuración (en los sistemas * nix) y en las Propiedades del sistema en los sistemas Windows (el sistema Windows también puede tener sufijos específicos de NIC).

Las entradas en el hostsarchivo, como el sistema DNS, son solo una asignación de un nombre de host a una dirección IP. Para usar el nombre de host 'localhost' (no tiene nada de especial, es un nombre de host como todos los demás) debe asignarse a la interfaz de bucle invertido (por lo que siempre apuntará a la computadora local). Para garantizar que esto funcione, todas las computadoras vienen con esta asignación predeterminada en su hostsarchivo, pero podría eliminarse si no desea utilizar ese nombre de host.

Además, como otros han señalado, es muy útil asignar un nombre de host a una computadora. Cuando está conectado a la computadora, puede hacer que muestre su nombre de host cuando inicie sesión, o como su solicitud, o cualquier otro número de lugares. Esto facilita la identificación de la computadora a la que está conectado. Si configura ese nombre de host en DNS o lo coloca en todos los hostsarchivos, podrá conectarse a la computadora haciendo referencia a su nombre de host en lugar de tener que conocer su dirección IP todo el tiempo. (Aún más útil si la computadora está usando DHCP, ya que la dirección podría cambiar. Si la computadora actualiza DNS, entonces el registro DNS apuntaría a la nueva dirección IP; aún podría conectarse sin conocer la nueva dirección IP porque conoce el nombre DNS )

Hay muchos otros usos de ambos hostsy DNS, pero sospecho que tienes más preguntas que respuestas si lees todo esto.

Chris S
fuente
44
+1 por tomarse el tiempo para escribir una buena respuesta a pesar de su sentimiento inicial de frustración con la pregunta.
Kenny Rasschaert
Impresionante explicación! Si mi comprensión es correcta, /etc/hostsno es necesario colocar el FQDN en el , tener el nombre de host en una entrada DNS lograría el mismo resultado, ¿verdad?
Alix Axel
2
@Alix, correcto, si la entrada está en DNS (y DNS funciona correctamente), entonces tenerla en el hostsarchivo sería redundante. Además, la entrada en el hostsarchivo anularía el DNS (útil para probar a veces, aunque molesto cuando se olvida). Tenga en cuenta que todo esto se refiere a los registros A y AAAA, hay otros tipos de registros para nombres de host, pero los dejé por claridad.
Chris S
Gracias Chris, esto hace que todo sea mucho más claro.
Alix Axel
5

Cada host debe recibir un nombre significativo. El nombre de host puede servir para múltiples propósitos:

1- Te ayuda a reconocer en qué estás trabajando actualmente.

2- Usar nombres configurados en /etc/hostsy / o registros DNS es más fácil que memorizar muchas direcciones IP.

3- Localhost es un nombre reservado para referirse a la máquina actual (dirección 127.0.0.1).

4- Los registros DNS son útiles para hacer que sus servidores sean accesibles públicamente.

Elegir un nombre adecuado para cada servidor le ayuda mucho en su administración. Además, ayuda a sus clientes a acceder a sus servidores.

Khaled
fuente
2

Solo como una nota al margen: trabajar adecuadamente hacia adelante y hacia atrás la resolución DNS es la piedra angular absoluta de cada instalación de TI en este planeta. ¡Nunca subestimes la necesidad de un DNS bien mantenido y una resolución de nombre de host adecuada!

pfo
fuente
No puedo entender por qué es importante. Tengo un servidor linode que aloja muchos sitios web. Sin entender el propósito de configurar el nombre de host, simplemente lo dejo como está, que es "ubuntu". Este servidor ha estado funcionando durante un par de años y nunca siento ningún inconveniente. No estoy cuestionando su respuesta, solo estoy tratando de entender por qué el nombre de host es importante. En mi caso, ¿cuándo desearía haber configurado correctamente un nombre de host?
shenkwen
1
@shenkwen: si honestamente solo tiene un servidor, puede nombrarlo como desee, y obviamente no importará. Tan pronto como el número de servidores sea mayor que 1, tendrá nuevos problemas para administrar, y la asignación adecuada de nombres es una herramienta importante.
mfinni
1

Descargo de responsabilidad: la pregunta principal es sobre los sistemas Linux, así que no dude en ignorar esta respuesta si no está interesado en el lado de Windows del problema.

De todos modos, en los sistemas Windows, aparte de todos los puntos mencionados en otras respuestas, el nombre de host es realmente utilizado por el propio sistema operativo, para fines de redes y autenticación; específicamente:

  • Se requiere que cada sistema, sea o no miembro del dominio, tenga un nombre único en la misma red (es decir, en la misma subred IP), de lo contrario se producirá un conflicto de nombres y varios servicios de red (principalmente el intercambio de archivos e impresiones) no trabajo.
  • Todos los sistemas que son miembros del mismo dominio de Active Directory deben tener un nombre único, independientemente de los límites de la red.
  • En un entorno de dominio, el nombre de host de un sistema actúa como un principal de seguridad y puede usarse para autenticación remota (solo piense en ello como una cuenta de usuario para la máquina); se le pueden asignar permisos y derechos de acceso y se pueden colocar en grupos por motivos de seguridad. Esto afecta todos los procesos que se ejecutan en el sistema utilizando las cuentas integradas LocalSystemy de NetworkServiceusuario, que pueden autenticarse en otros sistemas utilizando las credenciales del sistema en el que se ejecutan; esto permite que un proceso que se ejecuta como NetworkServiceen SystemA acceda a una carpeta compartida en SystemB al otorgar permisos en la carpeta a la cuenta de usuario de SystemA.
Massimo
fuente
-1

Muchos sitios y / o supuestos 'administradores' ahora afirman que el atributo 'hostname' contiene el FQDN de la instancia del sistema operativo, lo que 'rompe' cualquier resolución que le agregue el 'nombre de dominio':

nombre de host
system1.domain1.org

ping hostname
: no se puede resolver system1.domain1.org.domain1.org

zantar
fuente
¿Puede proporcionar una fuente de referencia para su estado de cuenta?
Dave M