El hostname es el nombre corto de un servidor (web01) y el FQDN (nombre de dominio completo) es ese nombre dentro de un dominio (web01.example.com). Muchos servicios lo usan: Postfix lo anuncia al enviar correo, los certificados y los registros de log lo muestran, y algunas herramientas fallan si hostname -f no devuelve un nombre válido. En este tutorial configurarás el hostname y el FQDN de un servidor Ubuntu 24.04, harás que el cambio sobreviva a los reinicios y crearás los registros DNS correspondientes.

Al final encontrarás las diferencias para Rocky Linux 9 y AlmaLinux 9.

Requisitos previos

  • Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath.
  • Un usuario no root con privilegios sudo.
  • Un dominio cuyo DNS puedas gestionar, si quieres que el FQDN resuelva desde Internet.
  • La IP pública del servidor. En esta guía se usa 203.0.113.10 como ejemplo.

En los ejemplos, el hostname es web01 y el dominio example.com. Sustitúyelos por tu hostname y tu dominio.

Paso 1: Comprobar la configuración actual

Consulta el hostname y el FQDN actuales:

hostname
hostname -f
ubuntu-server
ubuntu-server

Si hostname -f devuelve solo el nombre corto, o un error como hostname: Name or service not known, el FQDN no está configurado.

hostnamectl muestra más detalles, incluidos el hostname estático y el transitorio:

hostnamectl
 Static hostname: ubuntu-server
       Icon name: computer-vm
         Chassis: vm
      Machine ID: 3f9c...
         Boot ID: 81a2...
  Virtualization: kvm
Operating System: Ubuntu 24.04.3 LTS
          Kernel: Linux 6.8.0-79-generic
    Architecture: x86-64

Revisa también los dos archivos que intervienen:

cat /etc/hostname
cat /etc/hosts

/etc/hostname guarda el hostname estático que se aplica al arrancar. /etc/hosts asocia nombres con direcciones IP, y es de donde hostname -f obtiene el FQDN.

Paso 2: Elegir un nombre válido

Un hostname válido sigue estas reglas (RFC 1123):

  • Solo letras minúsculas a-z, dígitos 0-9 y guiones -.
  • No empieza ni termina por guion.
  • Cada parte entre puntos tiene como máximo 63 caracteres, y el FQDN completo como máximo 253.
  • Sin guiones bajos, espacios ni acentos.

Usa nombres que describan la función y permitan crecer, como web01, db01 o mail. Si el servidor enviará correo, el FQDN debe ser un nombre que controles y que tenga registro DNS, por ejemplo mail.example.com.

Paso 3: Establecer el hostname

Cambia el hostname con hostnamectl. Este comando actualiza /etc/hostname y aplica el nombre al sistema en ejecución sin reiniciar:

sudo hostnamectl set-hostname web01

Comprueba el cambio:

hostnamectl hostname
cat /etc/hostname
web01
web01

En Ubuntu y Debian la convención es guardar el nombre corto en /etc/hostname y definir el FQDN en /etc/hosts, que es lo que harás en el siguiente paso.

Paso 4: Definir el FQDN en /etc/hosts

Abre /etc/hosts:

sudo nano /etc/hosts

Deja las primeras líneas así, con el FQDN primero y el nombre corto después:

127.0.0.1       localhost
127.0.1.1       web01.example.com web01

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Algunos detalles importantes:

  • El orden importa: el primer nombre tras la IP es el nombre canónico, y es el que devuelve hostname -f.
  • La dirección 127.0.1.1 es la convención de Debian y Ubuntu para el propio nombre del equipo cuando no se quiere ligar a la IP pública. Si prefieres que el nombre resuelva a la IP pública (algunos programas de clúster lo requieren), usa 203.0.113.10 en su lugar, pero no pongas el nombre en ambas líneas.
  • No añadas web01 a la línea de 127.0.0.1 localhost.

Guarda el archivo y verifica:

hostname -f
hostname -s
hostname -d
web01.example.com
web01
example.com

Comprueba también que el nombre se resuelve mediante el sistema de resolución de nombres:

getent hosts web01.example.com
127.0.1.1       web01.example.com web01

Paso 5: Evitar que cloud-init sobrescriba el hostname

La mayoría de VPS arrancan con cloud-init, que puede volver a poner el hostname original y regenerar /etc/hosts en cada arranque. Comprueba si está instalado:

cloud-init status
status: done

Si el comando existe, crea un archivo de configuración propio para que cloud-init respete tus cambios:

sudo nano /etc/cloud/cloud.cfg.d/99-hostname.cfg
preserve_hostname: true
manage_etc_hosts: false

preserve_hostname: true impide que cloud-init cambie el hostname, y manage_etc_hosts: false evita que regenere /etc/hosts desde su plantilla.

Reinicia para confirmar que todo persiste:

sudo reboot

Tras volver a conectar:

hostname -f
web01.example.com

Paso 6: Crear los registros DNS

/etc/hosts solo afecta al propio servidor. Para que otros equipos resuelvan el FQDN, crea estos registros:

RegistroNombreValorDónde se configura
Aweb01.example.com203.0.113.10Proveedor DNS de tu dominio
AAAAweb01.example.comIPv6 del servidorProveedor DNS de tu dominio (si usas IPv6)
PTR203.0.113.10web01.example.comQuien gestiona la IP (el proveedor del servidor)

El registro PTR (DNS inverso) es imprescindible si el servidor envía correo: muchos servidores rechazan mensajes de IP cuyo PTR no coincide con el nombre que se anuncia. El PTR lo configura quien administra la IP, no tu proveedor de dominio.

Cuando los registros se hayan propagado, verifica desde el servidor o desde tu equipo con dig (en Ubuntu viene en el paquete bind9-dnsutils):

dig +short A web01.example.com
dig +short -x 203.0.113.10
203.0.113.10
web01.example.com.

Si la resolución directa e inversa coinciden, el servidor tiene lo que se llama FCrDNS (DNS inverso confirmado), que es lo que comprueban los servidores de correo.

Paso 7: Comprobar las aplicaciones que usan el hostname

Algunos servicios leen el hostname al instalarse o al arrancar y no se actualizan solos.

Postfix guarda el nombre en /etc/mailname y en el parámetro myhostname. Comprueba su valor:

postconf myhostname
cat /etc/mailname

Si muestran el nombre antiguo, actualízalos:

sudo postconf -e "myhostname = web01.example.com"
echo "web01.example.com" | sudo tee /etc/mailname
sudo systemctl restart postfix

rsyslog y journald usan el hostname del sistema en cada línea de log. Los mensajes nuevos llevan el nombre nuevo sin hacer nada; las líneas antiguas conservan el anterior.

Nginx y Apache no dependen del hostname del sistema: el nombre que sirven es el de server_name o ServerName en su configuración. En Apache, si ves el aviso Could not reliably determine the server's fully qualified domain name, añade ServerName web01.example.com en /etc/apache2/conf-available/servername.conf y actívalo con sudo a2enconf servername.

Diferencias en Rocky Linux 9 y AlmaLinux 9

El procedimiento es el mismo con dos diferencias:

  • En la familia Red Hat se suele guardar el FQDN completo como hostname estático:

    sudo hostnamectl set-hostname web01.example.com
    

    Así hostname devuelve el FQDN y hostname -s el nombre corto.

  • En /etc/hosts no se usa la convención 127.0.1.1. Añade una línea con la IP pública del servidor:

    127.0.0.1   localhost localhost.localdomain
    ::1         localhost localhost.localdomain
    203.0.113.10 web01.example.com web01
    

La configuración de cloud-init del paso 5 es igual.

Solución de problemas

hostname -f devuelve Name or service not known. El hostname no aparece en /etc/hosts ni en DNS. Revisa que la línea del paso 4 contiene exactamente el mismo nombre que hostnamectl hostname.

sudo tarda varios segundos o avisa unable to resolve host web01. Ocurre cuando cambias el hostname sin añadirlo a /etc/hosts. Añade la línea del paso 4.

El hostname vuelve al nombre antiguo tras reiniciar. cloud-init lo está restableciendo. Aplica el paso 5 y comprueba que no hay otro archivo en /etc/cloud/cloud.cfg.d/ que fije preserve_hostname: false más tarde en orden alfabético.

Los correos llegan a spam o se rechazan. Comprueba que el PTR de la IP apunta al mismo FQDN que usa Postfix en myhostname y que ese FQDN tiene un registro A hacia la misma IP.

Conclusión

Tu servidor tiene ahora un hostname válido, un FQDN que resuelve localmente y desde Internet, y una configuración que cloud-init no sobrescribe. Este es un requisito previo para servicios como el correo, los certificados y la monitorización.

Como siguientes pasos, puedes configurar el DNS inverso de tu IP si todavía no lo tiene, instalar Postfix con el FQDN que acabas de definir o ajustar la zona horaria y la configuración regional del servidor.