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 resolverservidorcomoservidor.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