[SOLUCIONADO] Fallo de DNS en Linux: 'Could not resolve host' / systemd-resolved
El fallo generalizado Temporary failure in name resolution, Could not resolve host: google.com o Failed to start Network Name Resolution en Linux ocurre cuando el subsistema de resolución DNS local (systemd-resolved o el archivo /etc/resolv.conf) pierde la configuración de servidores de nombres, bloqueando todas las conexiones a internet que utilicen nombres de dominio.
El Diagnóstico Rápido
/run/systemd/resolve/stub-resolv.conf o restaurar archivo estáticosudo systemctl restart systemd-resolved y configurar DNS públicosEl fallo generalizado Temporary failure in name resolution, Could not resolve host: google.com o Failed to start Network Name Resolution en Linux ocurre cuando el subsistema de resolución DNS local (systemd-resolved o el archivo /etc/resolv.conf) pierde la configuración de servidores de nombres, bloqueando todas las conexiones a internet que utilicen nombres de dominio.
La Solución Paso a Paso
-
1
Paso 1: Restablecer temporalmente la conectividad mediante nameservers estáticos
Si tu servidor no puede descargar paquetes por falta de DNS, añade manualmente un resolvedor temporal:
BASH# Configurar DNS públicos directos de Cloudflare y Google echo -e "nameserver 1.1.1.1\nnameserver 8.8.8.8" | sudo tee /etc/resolv.confComprueba de inmediato si puedes resolver dominios:
BASHping -c 3 google.com -
2
Paso 2: Reparar el enlace simbólico oficial de systemd-resolved
En Ubuntu y distribuciones modernas con systemd,
/etc/resolv.confdebe ser un enlace simbólico al stub del resolvedor:BASH# 1. Eliminar el archivo o enlace roto anterior sudo rm -f /etc/resolv.conf # 2. Crear el enlace simbólico correcto sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf # 3. Reiniciar y habilitar el servicio de resolución sudo systemctl restart systemd-resolved sudo systemctl enable systemd-resolved -
3
Paso 3: Configurar servidores DNS estables en resolved.conf
Abre el archivo de configuración principal de resolución (
/etc/systemd/resolved.conf):INI[Resolve] DNS=1.1.1.1 8.8.8.8 FallbackDNS=1.0.0.1 8.8.4.4 Domains=~. DNSSEC=allow-downgradeAplica los cambios reiniciando el servicio:
BASHsudo systemctl restart systemd-resolved -
4
Paso 4: Validar el estado con resolvectl
Comprueba que el resolvedor tiene asignados servidores DNS en cada interfaz de red activa:
BASH# Comprobar el estado global de DNS resolvectl status
❓ Preguntas Frecuentes (FAQ)
¿Por qué ping 8.8.8.8 funciona pero ping google.com falla?
Porque la conectividad IP a nivel de enrutamiento funciona correctamente, pero el subsistema de traducción de nombres (DNS) está caído.
¿Qué diferencia hay entre /run/systemd/resolve/stub-resolv.conf y resolv.conf normal?
El stub redirige las peticiones locales a la IP 127.0.0.53 gestionada por el daemon de systemd-resolved para permitir almacenamiento en caché y validación DNSSEC.
Consejo de Prevención
Prácticas de seguridad recomendadas:
- Evita que gestores de red sobreescriban /etc/resolv.conf: Si utilizas NetworkManager, asegúrate de que esté configurado para colaborar con systemd-resolved (
dns=systemd-resolveden/etc/NetworkManager/NetworkManager.conf). - Bloquea el archivo si experimentas sobreescrituras no deseadas: Puedes aplicar el atributo inmutable en caso de emergencia:
sudo chattr +i /etc/resolv.conf.