Introducción al error Temporary failure in name resolution en Linux
Uno de los problemas más frustrantes a los que se enfrentan los administradores de sistemas y usuarios habituales de distribuciones basadas en Debian y Ubuntu es el mensaje Temporary failure in name resolution al intentar ejecutar comandos como apt update, ping o curl. Este fallo indica que tu máquina Linux no puede traducir nombres de dominio legibles por humanos (como google.com) a direcciones IP numéricas debido a un problema con el servicio de DNS.
Causas principales del fallo de resolución DNS
- Configuración incorrecta o corrupta en el archivo
/etc/resolv.conf. - Servicio systemd-resolved detenido o con fallos en su ejecución.
- Problemas con la pasarela de red predeterminada (Gateway).
- Cortafuegos o reglas de iptables bloqueando el tráfico hacia los servidores DNS externos (como 8.8.8.8 o 1.1.1.1).
Método 1: Configurar manualmente los servidores DNS de Google o Cloudflare
El primer método y el más directo consiste en modificar el archivo de configuración del sistema para apuntar directamente a servidores DNS públicos y estables.
- Abre tu terminal de comandos con privilegios de superusuario.
- Edita el archivo de configuración de resolución DNS utilizando tu editor favorito, por ejemplo nano:
sudo nano /etc/resolv.conf - Añade las siguientes líneas al principio del archivo para establecer los servidores DNS de Google y Cloudflare:
- Guarda los cambios presionando
Ctrl + O, luegoEnter, y sal conCtrl + X. - Prueba nuevamente tu conexión ejecutando:
ping -c 3 google.com
nameserver 8.8.8.8
nameserver 1.1.1.1
Método 2: Reiniciar y habilitar el servicio systemd-resolved
En las versiones modernas de Ubuntu y Debian, la gestión de nombres de red se realiza a través de systemd-resolved. Si este demonio se congela, genera errores de resolución.
- Comprueba el estado actual del servicio ejecutando:
sudo systemctl status systemd-resolved - Si se encuentra detenido o con errores, reinícalo forzando su arranque con el comando:
sudo systemctl restart systemd-resolved - Asegúrate de que el servicio esté habilitado para iniciar automáticamente con el sistema operativo:
sudo systemctl enable systemd-resolved - Crea un enlace simbólico si el archivo resolv.conf perdió su referencia original:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Método 3: Verificar la conexión de red y la interfaz activa
A veces el problema no es el DNS en sí, sino que la interfaz de red ha perdido su configuración IP o la puerta de enlace.
- Identifica el nombre de tu interfaz de red ejecutando:
ip a - Comprueba que tienes salida hacia tu router o puerta de enlace con:
ip route show - Si usas NetworkManager, puedes reiniciar el servicio de red completo ejecutando:
sudo systemctl restart NetworkManager