Si y no. Hay dos cosas distintas llamadas nombres de host.
El nombre de host "interno" es básicamente una cadena mantenida por el núcleo. Este es el que devuelve el hostname
comando (o la gethostname()
llamada) y es único dentro de un sistema (*) .
Se usa principalmente cuando un programa quiere generar algún identificador para el sistema en el que se está ejecutando. Por ejemplo, \h
en Bash se PS1
expande al nombre de host. Del mismo modo, los archivos de registro de estilo syslog también incluyen el nombre de host en las entradas de registro.
(* Aunque, como comenta Stephen Kitt, los espacios de nombres se pueden usar para mostrar diferentes nombres de host a los procesos en el mismo sistema. Eso se usa principalmente para contenedores, que intentan actuar como si fueran sistemas distintos).
Luego también hay nombres DNS que son utilizados por otros sistemas para buscar la dirección IP de otro. Puede haber más de un nombre DNS que apunte a la misma dirección IP y, por lo tanto, al mismo host.
El nombre de host interno y los nombres DNS no necesitan ser los mismos. Supongamos que alguien tiene un servidor web al que decidió llamar orange
(*) , con la dirección IP 192.0.2.9
. Podría servir dos dominios diferentes y el DNS se configuraría para tener www.example.org
y www.example.com
ambos apuntan 192.0.2.9
, mientras que el nombre de host interno del sistema podría ser orange.example.org
o simplemente orange
. En ese caso, la configuración de DNS generalmente también tendría una búsqueda inversa en el 192.0.2.9
punto de regreso al nombre orange.example.org
, pero no hay nada que lo obligue.
(* porque les gusta nombrar sus servidores después de la fruta. Alguien podría usar webserver1
o algo así, pero el punto es que no necesita ser nombrado después de uno de los dominios reales).
Además de eso, el alojamiento virtual requiere que el navegador le diga al servidor web el nombre del sitio al que intentó acceder. De lo contrario, el servidor no sabría a qué sitio virtual intentó acceder el cliente. HTTP tiene el Host
encabezado para eso.
Lo que enturbia la distinción entre un nombre DNS y el nombre de host interno es el protocolo mDNS
(implementado, por ejemplo, por el avahi daemon ) y otros protocolos de descubrimiento. mDNS hace posible que los hosts consulten a todos los demás hosts en la misma red para obtener información de nombre, y que sus propios nombres de host sean visibles en otros hosts sin configurarlos explícitamente en DNS.