Introducción al Problema del Archivo Resolv.conf en Linux
Uno de los problemas más frustrantes a los que nos enfrentamos los administradores de sistemas y usuarios avanzados en Linux es la pérdida repentina de conexión a Internet, a pesar de estar conectados a la red local. A menudo, el diagnóstico apunta a un culpable silencioso: el archivo /etc/resolv.conf aparece vacío o sin los servidores DNS configurados correctamente. Esto impide que el sistema traduzca nombres de dominios (como google.com) en direcciones IP válidas.
Causas Principales del Error DNS en Linux
El archivo /etc/resolv.conf puede quedar vacío o corromperse debido a varios factores comunes en entornos basados en Ubuntu, Debian o CentOS:
- Gestores de red como
NetworkManagerosystemd-resolvedsobrescriben el archivo automáticamente al reiniciar el servicio de red. - Enlaces simbólicos rotos que apuntan a configuraciones inexistentes de resolvconf.
- Intervención de herramientas VPN de terceros que modifican la configuración de red y no restauran los valores originales al desconectarse.
Método 1: Configurar DNS Estáticos Desactivando NetworkManager
Si necesitas una solución rápida y permanente para evitar que tu sistema borre los servidores DNS, puedes editar la configuración de NetworkManager para que gestione el archivo de forma estática.
- Abre tu terminal y edita el archivo de configuración de NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf - Busca la sección
[main]y añade la siguiente línea si no existe:dns=default - Guarda el archivo presionando
Ctrl + Oy sal conCtrl + X. - Reinicia el servicio de red ejecutando:
sudo systemctl restart NetworkManager
Método 2: Reconstruir el Enlace Simbólico de systemd-resolved
En distribuciones modernas que utilizan systemd-resolved, el archivo tradicional /etc/resolv.conf debe ser un enlace simbólico que apunte a un archivo generado por el sistema.
- Elimina el archivo actual si está corrupto o vacío:
sudo rm /etc/resolv.conf - Crea un nuevo enlace simbólico apuntando al archivo de systemd:
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - Reinicia el servicio de resolución de nombres:
sudo systemctl restart systemd-resolved
Método 3: Hacer el Archivo Inmutable (Solución de Emergencia)
Si ninguna de las opciones anteriores evita que el sistema sobrescriba tu configuración, puedes aplicar atributos especiales a nivel de sistema de ficheros para proteger el archivo.
- Edita manualmente tu archivo añadiendo tus servidores DNS preferidos (por ejemplo, los de Cloudflare o Google):
sudo nano /etc/resolv.conf - Añade las siguientes líneas:
nameserver 1.1.1.1nameserver 8.8.8.8 - Guarda los cambios y bloquea el archivo para que ningún proceso pueda modificarlo o vaciarlo:
sudo chattr +i /etc/resolv.conf
Nota: Si en el futuro necesitas actualizar tus DNS, deberás quitar el atributo de inmutabilidad ejecutando sudo chattr -i /etc/resolv.conf antes de volver a editarlo.