Configuración de DNS en Netplan y systemd-resolved (Ubuntu)

Introducción

En Ubuntu, la resolución DNS está gestionada por systemd-resolved, que actúa como resolver local en 127.0.0.53. Los servidores DNS se declaran en el archivo Netplan y systemd-resolved los recibe automáticamente. El archivo /etc/resolv.conf es un enlace simbólico gestionado por el sistema, no se edita manualmente.

Declarar DNS en Netplan

Los servidores DNS se configuran dentro del bloque nameservers de cada interfaz en el archivo YAML de Netplan:


network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: false
      addresses:
        - 192.168.1.10/24
      routes:
        - to: default
          via: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 1.1.1.1
        search:
          - ejemplo.local
          
  • nameservers.addresses → servidores DNS primario y secundario
  • nameservers.search → dominios de búsqueda: permite resolver servidor como servidor.ejemplo.local

Aplicar los cambios:


# netplan apply
          

systemd-resolved — El resolver local de Ubuntu

systemd-resolved es el servicio que gestiona la resolución DNS en Ubuntu. Escucha en 127.0.0.53:53 y actúa como caché local de DNS, acelerando las consultas repetidas.

Verificar el estado del servicio:


$ systemctl status systemd-resolved
          

Ver los servidores DNS activos:


$ resolvectl status                     # estado completo por interfaz
$ resolvectl status enp0s3              # solo para una interfaz
$ resolvectl dns                        # servidores DNS configurados
$ resolvectl domain                     # dominios de búsqueda activos
          

Hacer una consulta DNS manualmente:


$ resolvectl query google.com           # resolver un nombre
$ resolvectl query 8.8.8.8              # resolución inversa (IP a nombre)
          

Ver estadísticas de caché:


$ resolvectl statistics
# resolvectl flush-caches               # vaciar la caché DNS
          

/etc/resolv.conf en Ubuntu

En Ubuntu, /etc/resolv.conf es un enlace simbólico a un archivo gestionado por systemd-resolved. No se debe editar manualmente: los cambios se perderían al reiniciar o aplicar Netplan.


$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root ... /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

$ cat /etc/resolv.conf
nameserver 127.0.0.53       ← apunta al resolver local de systemd-resolved
options edns0 trust-ad
search ejemplo.local
          

El archivo real con los servidores DNS upstream está en /run/systemd/resolve/resolv.conf (solo lectura, generado automáticamente):


$ cat /run/systemd/resolve/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1
          

Configuración directa de systemd-resolved

Si no se usa Netplan (o se quiere un DNS global independiente de la interfaz), se puede configurar directamente en /etc/systemd/resolved.conf:


[Resolve]
DNS=8.8.8.8 1.1.1.1
FallbackDNS=9.9.9.9
Domains=ejemplo.local
DNSSEC=no
          

# systemctl restart systemd-resolved
          

En Ubuntu, Netplan + systemd-resolved forman el stack de red estándar. Los DNS se declaran en Netplan y systemd-resolved los aplica, cachea y expone al sistema.

Firewall básico con UFW y firewalld

Índice de la sección

Índice del curso