¿Un sistema informático (Linux) solo tiene un nombre de host?


15

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.


Los registros DNS A o AAA apuntan a la misma dirección IP para múltiples dominios. El nombre de host de la máquina no es necesariamente importante.
RubberStamp

(1) ¿Se hostnameutiliza 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?
StackExchange para todos

Los servicios mDNS, como avahidependen del nombre de host de la máquina. En ese caso, hostname.localse 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.
Sello de goma

AAA es un error tipográfico 'A'
RubberStamp

Virtual Host no tiene nada que ver con el nombre de host. Depende únicamente del comportamiento del servidor web. El servidor responde de manera diferente a diferentes campos del host del encabezado de solicitud HTTP. No creo que un servidor web típico haga algo relacionado con DNS o nombre de host para ofrecer la funcionalidad de host virtual.
炸鱼 薯条 德里克

Respuestas:


26

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 hostnamecomando (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, \hen Bash se PS1expande 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.orgy www.example.comambos apuntan 192.0.2.9, mientras que el nombre de host interno del sistema podría ser orange.example.orgo simplemente orange. En ese caso, la configuración de DNS generalmente también tendría una búsqueda inversa en el 192.0.2.9punto 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 webserver1o 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 Hostencabezado 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.


Gracias. (1) "la configuración de DNS normalmente tendría 192.0.2.9 puntos de regreso al nombre orange.example.org" No se resuelve obtener la dirección IP para un nombre de host dado, ¿por qué lo contrario? (2) ¿Se hostnameutiliza alguna vez la salida para resolver el nombre de host a la dirección IP?
StackExchange para todos

(2) ... Cuando configura una red wifi local en su hogar desde un ISP utilizando un enrutador y un módem, las máquinas de la red pueden identificarse mediante las salidas de sus hostnamecomandos, ¿correcto? ¿El enrutador actúa como un DNS para resolver las salidas hostnamea direcciones IP privadas en la red?
StackExchange para todos

2
En cuanto a (1), también hay búsquedas inversas que toman la dirección IP y devuelven un nombre. (Para un sistema con un solo nombre y una sola dirección, querrá que ambos se resuelvan el uno al otro, solo por razones de claridad)
ilkkachu

3
Las redes pequeñas pueden estar usando 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.
Mark Plotnick

2
En muchas redes domésticas, el enrutador local actúa como un solucionador de DNS. Los hosts envían su nombre de host cuando solicitan una dirección utilizando DHCP, y el enrutador recuerda ese nombre y lo resuelve para todos los hosts en la red. Como mencionan Mark y RubberStamp, también está Bonjour (implementado en Avahi) que permite el descubrimiento de servicios en la LAN (impresoras en particular). Tenga en cuenta también que los hosts pueden tener múltiples direcciones IP, y los nombres de host ahora tienen espacios de nombres para que los procesos puedan ver diferentes nombres de host en el mismo host.
Stephen Kitt

7

¿Un sistema informático (Linux) solo tiene un nombre de host?

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/hostso 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)o clone(2)mediante el uso del CLONE_NEWUTSindicador. Deberías mirar en la página del namespaces(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.

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?

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 ejecuta 13.13.13.13y sirve diferentes directorios / recursos en función del valor del Host: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 solo Host:). 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.


Tengo que estar en desacuerdo contigo en esto. Para el alojamiento virtual, generalmente tenemos un conjunto específico de registros de cname que apuntan al host único. No utilizamos un registro DNS comodín ya que tenemos muchos sistemas dentro del dominio que necesitan hosts virtuales. Excluyendo los espacios de nombres UTS (¿qué tan ampliamente utilizado es esto de todos modos?), Tiene hostnamectl que informa un solo nombre de host para un servidor determinado. DNS y hostnamectl son ortogonales y tienen poco que ver entre sí.
doneal24

1
@ DougO'Neal ¿Con qué no estás de acuerdo? ¿Que los registros DNS comodín se usan en la forma en que lo describo? Se usan mucho así (perdón por el juego de palabras), te guste o no. ¿Que la información de uts está virtualizada por proceso en Linux? Así es simplemente. En cuanto a la idea de que los espacios de nombres solo se usan / deben usarse en soluciones de virtualización / contenedorización en lata (como se sugiere en la otra respuesta), lo siento, pero eso es "solo las niñas juegan con muñecas" o "las transmisiones manuales solo se usan en camiones pesados" calidad ;-)
Tío Billy

1

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.

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.