¿Qué determina el nombre de host de Linux?

¿Qué determina el nombre de host de Linux?

En los pocos años que he estado usando Linux como mi sistema principal, específicamente Fedora, siempre he visto mi nombre de host configurado simplemente como "localhost", con la excepción de cuando me conecto a algunas redes y se convierte en mi IP. Hoy experimenté el siguiente comportamiento que, sin embargo, tengo problemas para comprender.

Configuré una instalación de Ubuntu en otra partición de mi computadora portátil, configurando un nombre de computadora/nombre de host durante la instalación de Ubuntu. Sin embargo, cuando reinicié Fedora, Fedora actualizó mi nombre de host al nombre que configuré en la instalación de Ubuntu.

Siempre pensé que el nombre de host estaba configurado y almacenado en la partición de la instalación de la distribución y, de hecho, el contenido de /etc/hostname en Fedora todavía decía "localhost.localdomain", pero al ejecutar el hostnamecomando se muestra el nuevo nombre de host. Ambas instalaciones comparten una partición de arranque efi, pero por lo demás son discretas. Me pregunto desde dónde y por qué la instalación de Fedora lee el nuevo nombre de host.

Respuesta1

El hostnameprograma realiza una llamada al sistema uname, como se puede ver al ejecutar:

strace hostname
...

e="Linux", nodename="my.hostname.com", ...}) = 0 ... Desde la página del manual de uname syscall, dice que syscall recupera la siguiente estructura del kernel:

  struct utsname {
               char sysname[];    /* Operating system name (e. */
               char nodename[];   /* Name within "some implementation-defined
                                     network" */
               char release[ystem release (e.g., "2.6.28") */
               char version[];    /* Operating system version */
               char machine[];    /* Hardware identifier */
           #ifdef _GNU_SOURCE
               char domainname[]; /* NIS or YP domain name */
           #endif
           };

Entonces, el nombre de dominio proviene de NISystem, si creemos en el comentario. Entonces, lo más probable es que haya un servicio / YP en su nhat que le esté devolviendo el nombre establecido por el sistema operativo Ubuntu.

Respuesta2

Hay dos conceptos independientes (!) de nombre de host en un sistema Linux.

Existe lo que el kernel considera el nombre de host local (como lo manejan las llamadas al sistema gethostname/uname y sethostname) independiente de cualquier conectividad de red; esta mecánica aún existiría si construyera un kernel sin capacidad para redes TCP/IP.

Hay uno o más nombres de host que en realidad están conectados a las direcciones TCP/IP (u otra pila de red; ¡no todas las redes en el mundo son IP!) que tiene el host, y estas son manejadas en el espacio de usuario por las funciones de la biblioteca de resolución (parte de libc), que determinará dicho nombre interpretando las fuentes (archivo local /etc/hosts, DNS, NIS....) de acuerdo con las reglas que les proporcione en los archivos de configuración apropiados (/etc/nsswitch.conf, /etc /host.conf, etc...).

Respuesta3

Probablemente Ubuntu se conectó a Internet a través del enrutador de su hogar durante la instalación. Para hacer esto, informó su nombre de host al enrutador y obtuvo una IP local temporal.

Cuando reinicies Fedora, se conectará al mismo enrutador para obtener su dirección IP, pero el antiguo contrato de arrendamiento creado para Ubuntu sigue siendo válido. Como es la misma máquina con la misma tarjeta de red y la misma dirección MAC de hardware, reutilizará el mismo contrato de arrendamiento.

Supongo que el enrutador envía el nombre de host en el que se registró la concesión de IP y Fedora lo recoge.

Lamentablemente, no tengo pruebas ni citas que respalden mi respuesta, solo puedo hablar de la experiencia personal de instalar Ubuntu en arranque dual con Windows. En aquel entonces, Ubuntu se negó a establecer el mismo nombre de host durante la instalación que el que usé en Windows, porque afirmaba que el nombre ya estaba presente en la red. Probablemente tengamos algo similar sucediendo aquí.

Para verificar si lo que supongo se aplica también a su situación, intente revocar su arrendamiento de IP en la interfaz de configuración de su enrutador y luego reinicie Fedora. Si ya no toma el nombre de host de Ubuntu, debería tener razón.

información relacionada