systemd-resolved: configuración y diagnóstico

Introducción

En sistemas modernos con systemd (Ubuntu 18.04+, Debian 10+, Fedora, RHEL 9...), la resolución DNS la gestiona systemd-resolved, un demonio que actúa como stub resolver local. Escucha en 127.0.0.53:53, mantiene su propia caché DNS y puede gestionar diferentes servidores DNS por interfaz de red. Entender cómo interactúa con /etc/resolv.conf es clave para diagnosticar problemas en estos sistemas.

Arquitectura: el stub resolver

Cuando systemd-resolved está activo, /etc/resolv.conf suele ser un enlace simbólico que apunta a uno de estos ficheros:


# Comprobar el enlace actual
ls -la /etc/resolv.conf

# Modos posibles:
/run/systemd/resolve/stub-resolv.conf   # apunta al stub (127.0.0.53) → lo normal
/run/systemd/resolve/resolv.conf        # apunta directo a los DNS configurados
          

En el modo stub (el habitual en Ubuntu), todas las consultas van a 127.0.0.53 y systemd-resolved las gestiona, cachea y reenvía a los DNS reales. Esto explica por qué cat /etc/resolv.conf muestra 127.0.0.53 como nameserver.

resolvectl — la herramienta de diagnóstico


# Ver el estado completo: DNS por interfaz, dominios de búsqueda, protocolo
resolvectl status

# Resolver un nombre (usa el resolver del sistema, con caché)
resolvectl query google.com
resolvectl query -t MX google.com

# Resolución inversa
resolvectl query 8.8.8.8

# Ver estadísticas de caché
resolvectl statistics

# Limpiar la caché DNS
resolvectl flush-caches

# Ver los servidores DNS activos para una interfaz
resolvectl dns eth0
resolvectl domain eth0
          

Configuración: /etc/systemd/resolved.conf

Configuración global del demonio. Los DNS por interfaz se configuran normalmente vía Netplan o NetworkManager.


# /etc/systemd/resolved.conf
[Resolve]
# Servidores DNS globales (fallback si la interfaz no tiene DNS propio)
DNS=8.8.8.8 1.1.1.1

# Servidores DNS de respaldo
FallbackDNS=9.9.9.9

# Dominios de búsqueda globales
Domains=empresa.com

# Activar DNSSEC (validación criptográfica de respuestas DNS)
# DNSSEC=yes   # puede dar problemas en redes con DNS internos sin DNSSEC

# Caché DNS (yes/no/no-negative)
Cache=yes

# DNS sobre TLS (no/opportunistic/yes)
DNSOverTLS=no
          

# Aplicar cambios
systemctl restart systemd-resolved

# Ver el estado del servicio
systemctl status systemd-resolved
          

Interacción con Netplan y NetworkManager

En Ubuntu con Netplan, los servidores DNS se configuran en el fichero de Netplan y se pasan automáticamente a systemd-resolved al hacer netplan apply:


# /etc/netplan/00-installer-config.yaml (fragmento)
network:
  ethernets:
    eth0:
      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: [empresa.com, local]
          

# Aplicar y verificar
netplan apply
resolvectl status eth0
          

Para el examen LPIC-1 (objetivo 109.3): saber que en sistemas modernos el resolver es systemd-resolved, que escucha en 127.0.0.53, y cómo usar resolvectl para consultar y diagnosticar.

Diagnóstico y resolución de fallos DNS

Índice de la sección

Índice del curso