Introducción al Problema del Archivo Resolv.conf Inmutable
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux al configurar redes es intentar modificar el archivo /etc/resolv.conf para cambiar los servidores DNS y recibir un frustrante mensaje de error indicando que el archivo es de solo lectura o inmutable, incluso utilizando privilegios de superusuario (sudo). Esto suele ocurrir porque NetworkManager, systemd-resolved o un atributo especial del sistema de ficheros bloquean su edición.
Causas Principales del Error en Linux
Existen principalmente dos motivos por los cuales no puedes editar o guardar cambios en tu archivo de resolución de nombres:
- Atributo Inmutable del Sistema de Archivos: El comando
chattr +ifue aplicado previamente al archivo para evitar modificaciones accidentales o maliciosas. - Gestores de Red Automáticos: Servicios como NetworkManager o resolvconf sobrescriben dinámicamente este archivo cada vez que la interfaz de red se reinicia.
Método 1: Desactivar el Atributo de Inmutabilidad con Chattr
Si al intentar guardar el archivo obtienes un error de operación no permitida a pesar de usar sudo, lo más probable es que tenga el atributo inmutable activo. Sigue estos pasos para solucionarlo:
- Abre tu terminal de Linux.
- Verifica si el archivo tiene atributos especiales ejecutando el siguiente comando:
lsattr /etc/resolv.conf - Si observas una letra 'i' en la salida (por ejemplo,
----i--------- /etc/resolv.conf), significa que es inmutable. - Remueve el atributo inmutable escribiendo:
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 que Sobrescriba el Archivo
A menudo, tras modificar el archivo, al reiniciar el servicio de red tus cambios se pierden. Para solucionar esto de forma permanente en distribuciones basadas en Ubuntu o Debian que usan NetworkManager, debes configurar el cliente DHCP:
- Abre el archivo de configuración de NetworkManager:
sudo nano /etc/NetworkManager/NetworkManager.conf - Dentro de la sección
[main], añade la siguiente línea si no está presente:dns=none - Guarda los cambios y cierra el editor de texto.
- Reinicia el servicio de NetworkManager para aplicar los cambios con el comando:
sudo systemctl restart NetworkManager