Configurar hostname en RHEL 8 (y CentOS 8)

En un sistema GNU/Linux, el hostname se utiliza para identificar un sistema a través de un nombre único, que puede ser utilizado a su vez para identificar al equipo en servicios de resolución de nombres de dominio como DNS ó NIS.

En Red Hat Enterprise Linux y CentOS hay varias formas de establecer esta valor, ya sea de forma persistente o temporal. Vamos a explicar las formas más sencillas y rápidas de hacerlo en RHEL 8 y derivados (CentOS 8, por ejemplo).

Antes de ver la forma de modificarlo, sabed que para ver el valor asignado en cada momento podéis ejecutar el comando hostname ó hostnamectl:

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostnamectl
   Static hostname: localhost.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 258450bd01004dacbbad7a28140890c1
           Boot ID: cb749b5365a14216bab1772029a63062
    Virtualization: oracle
  Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA
            Kernel: Linux 4.18.0-80.el8.x86_64
      Architecture: x86-64

Como podéis observar, con el segundo método obtenemos mucha más información.

Configurar hostname en /etc/hostname

Este primer método es sin duda el más rudimentario, ya que requiere reinicio del sistema operativo para ser efectivo. Consiste simplemente en especificar el hostname en el archivo de configuración /etc/hostname y reiniciar el sistema para aplicar los cambios:

[root@localhost ~]# cat /etc/hostname
localhost.localdomain
[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# cat /etc/hostname
foo.localdomain
[root@localhost ~]# reboot

Tras el reinicio, ya aparece aplicado el nuevo hostname:

[root@foo ~]# uptime
 18:52:32 up 0 min,  1 user,  load average: 0.79, 0.19, 0.06
[root@foo ~]# hostname
foo.localdomain

Cambiar hostname utilizando nmtui (ncurses)

RHEL cuenta con una herramienta llamada Network Manager Text User Interface (NMTUI) basada en Ncurses que permite configurar de forma gráfica diferentes aspectos de la red, entre ellos, el hostname:

# nmtui

Una vez ejecutado el comando, simplemente se trata de acceder a la sección de configuración de hostname y especificarlo:

Hostname configuration RHEL

Hostname configuration RHEL CentOS

Después, basta con reiniciar la shell o abrir una nueva sesión para visualizar el nuevo hostname:

[root@foo ~]# bash
[root@bar ~]#
[root@bar ~]# hostnamectl
   Static hostname: bar.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 258450bd01004dacbbad7a28140890c1
           Boot ID: 2fac2a8c7cdc4abc90f6e3026f1b378a
    Virtualization: oracle
  Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA
            Kernel: Linux 4.18.0-80.el8.x86_64
      Architecture: x86-64

¿Qué pasaría si ahora modificáramos a mano el hostname en /etc/hostname? Tendríamos como hostname estático lo especificado en el fichero y como temporal el que hemos configurado con nmtui:

[root@bar ~]# hostnamectl
   Static hostname: estatico.localdomain
Transient hostname: bar.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 258450bd01004dacbbad7a28140890c1
           Boot ID: 2fac2a8c7cdc4abc90f6e3026f1b378a
    Virtualization: oracle
  Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA
            Kernel: Linux 4.18.0-80.el8.x86_64
      Architecture: x86-64

Si volviéramos a cambiarlo con nmtui, volvería a quedar como estático el ese valor, ya que al ejecutar nmtui, cambia el valor del archivo de configuración y también la configuración dinámica del sistema. Simplemente para que tengáis en cuenta que puede haber configuraciones temporales y estáticas funcionando a la vez.

Cambiar hostname con hostnamectl set-hostname

RHEL 8 etá basado en systemd, así que podemos utilizar el comando hostnamectl para modificarlo sin necesidad de reinicio:

[root@bar ~]# hostnamectl set-hostname foobar.localdomain
[root@bar ~]# hostnamectl
   Static hostname: foobar.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 258450bd01004dacbbad7a28140890c1
           Boot ID: 2fac2a8c7cdc4abc90f6e3026f1b378a
    Virtualization: oracle
  Operating System: Red Hat Enterprise Linux 8.0 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8.0:GA
            Kernel: Linux 4.18.0-80.el8.x86_64
      Architecture: x86-64

Como podéis observar, hay varios métodos para llegar a la misma solución, algunos más engorrosos que otros (alguno ni lo he indicado en esta entrada). Simplemente utilizad el método más adecuado según vuestra metodología de trabajo.