Introducción al Problema del Archivo Resolv.conf Inmutable en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux al configurar redes es encontrarse con que el archivo /etc/resolv.conf no se puede editar, o los cambios aplicados en los servidores DNS se revierten automáticamente tras reiniciar el servicio de red o el equipo. Esto suele ocurrir porque el archivo tiene un atributo especial de inmutabilidad asignado por el sistema o por gestores de red como NetworkManager.
Causas Principales del Error
- El archivo posee el atributo extendido
+i(inmutable), lo que impide cualquier modificación, incluso por parte del usuario root. - Servicios de gestión de red, como NetworkManager o
resolvconf, sobrescriben dinámicamente el archivo de configuración cada vez que se establece una conexión. - Permisos de archivo incorrectos o falta de privilegios administrativos al intentar guardar los cambios.
Método 1: Desactivar el Atributo Inmutable con Chattr
Si el sistema arroja un error de permiso denegado incluso al usar sudo, es muy probable que el archivo tenga activado el bit inmutable.
- Abre tu terminal con privilegios de superusuario o utiliza
sudo. - Verifica los atributos actuales del archivo ejecutando el siguiente comando:
lsattr /etc/resolv.conf - Si en la salida visualizas una letra
i(por ejemplo,----i--------), significa que es inmutable. - Remueve el atributo inmutable ejecutando:
sudo chattr -i /etc/resolv.conf - Ahora ya puedes editar el archivo con tu editor de texto favorito, por ejemplo:
sudo nano /etc/resolv.conf
Método 2: Configurar NetworkManager para Evitar Sobrescrituras
En muchas distribuciones modernas de Linux, NetworkManager sobrescribe /etc/resolv.conf de forma predeterminada. Para solucionarlo de manera definitiva, debes configurar el cliente DNS.
- Abre el archivo de configuración principal de NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf - Dentro de la sección
[main], añade la siguiente línea para deshabilitar la actualización automática del archivo resolv.conf:dns=none - Guarda los cambios y sal del editor.
- Reinicia el servicio de NetworkManager para aplicar los cambios:
sudo systemctl restart NetworkManager
Método 3: Crear un Enlace Simbólico Correcto
En sistemas basados en systemd-resolved, lo ideal es que /etc/resolv.conf apunte al archivo de configuración generado por systemd y no sea un archivo estático.
- Elimina o respalda el archivo actual:
sudo mv /etc/resolv.conf /etc/resolv.conf.bak - Crea un enlace simbólico hacia el resolvedor de systemd:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf - Verifica el estado de la resolución de nombres ejecutando:
resolvectl status