hostname
se utiliza para mostrar el nombre DNS del sistema y para mostrar o configurar su nombre de host o nombre de dominio NIS.
¿Un sistema informático (Linux) solo tiene un nombre de host?
En el alojamiento virtual, se pueden resolver varios nombres de host en diferentes directorios raíz en un servidor web. Si un sistema informático (Linux) solo puede tener un nombre de host, ¿cómo es posible el alojamiento virtual?
Gracias.
hostname
utiliza alguna vez la salida para resolver el nombre de host a la dirección IP? (2) A significa dirección IPv4, AAAA IPv6. ¿Qué es AAA?avahi
dependen del nombre de host de la máquina. En ese caso,hostname.local
se resolvería a la dirección IP local de la máquina. Veo que alguien escribió una respuesta que es una expansión de mi primer comentario ... demasiado simultáneo para las notificaciones de mi navegador.Respuestas:
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 lagethostname()
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 sePS1
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 IP192.0.2.9
. Podría servir dos dominios diferentes y el DNS se configuraría para tenerwww.example.org
ywww.example.com
ambos apuntan192.0.2.9
, mientras que el nombre de host interno del sistema podría serorange.example.org
o simplementeorange
. En ese caso, la configuración de DNS generalmente también tendría una búsqueda inversa en el192.0.2.9
punto de regreso al nombreorange.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.
fuente
hostname
utiliza alguna vez la salida para resolver el nombre de host a la dirección IP?hostname
comandos, ¿correcto? ¿El enrutador actúa como un DNS para resolver las salidashostname
a direcciones IP privadas en la red?mDNS
. Para bien o para mal, permite a los propietarios de sistemas elegir sus propios nombres de host, a los que pueden acceder otros sistemas en la red local, sin la necesidad de registrarse en un servidor DNS.No.
[Ignoraré por completo que cualquiera puede darle a su host el nombre que desee al tener un registro DNS apuntando a su dirección, o que puede tener más de un alias
/etc/hosts
o cualquier consideración filosófica sobre lo que realmente es un nombre ]En un sistema Linux, el nombre de host es simplemente un recurso por proceso (el "espacio de nombres UTS") que sus hijos heredan de manera predeterminada, pero que puede separarse de con
unshare(2)
oclone(2)
mediante el uso delCLONE_NEWUTS
indicador. Deberías mirar en la página delnamespaces(7)
manual.Al igual que los pids, los números de puerto, los puntos de montaje, etc., el nombre de host ya no es un identificador global, y podría virtualizarse igual que el espacio de direcciones (memoria virtual) o la tabla de descriptores de archivo de un proceso.
El alojamiento virtual es algo completamente diferente, y generalmente se realiza mediante la configuración de un registro DNS comodín (por ejemplo,
*.foo.com
=>13.13.13.13
) con un servidor web que se ejecuta13.13.13.13
y sirve diferentes directorios / recursos en función del valor delHost:
encabezado http [1] (que es altamente configurable ; la mayoría de los servidores web pueden servir diferentes recursos en función de cualquier encabezado http, no soloHost:
). En todo esto, el sistema operativo del sistema en el que se ejecuta el servidor web no juega ningún papel.[1] o en el valor de la indicación del nombre del servidor en el caso de https, que permite que el mismo servidor web utilice diferentes certificados para diferentes hosts virtuales.
fuente
Por lo general, establece un único nombre de host en / etc / hostname. Y configura muchos nombres de dominio en / etc / hosts.
Los espacios de nombres UTS permiten que un solo sistema parezca tener diferentes nombres de host y dominio para diferentes procesos. Para más información: https://en.wikipedia.org/wiki/Linux_namespaces . Por lo tanto, es absolutamente posible tener múltiples nombres de host y nombres de dominio para el mismo sistema. Por ejemplo, el contenedor de Docker dentro del mismo host tiene un nombre de host diferente que el sistema host.
fuente