Introducción al Problema del Archivo /etc/resolv.conf Inmutable
Uno de los dolores de cabeza más comunes para los administradores de sistemas y usuarios avanzados de Linux ocurre al intentar configurar servidores DNS estáticos editando el archivo /etc/resolv.conf. A menudo, al guardar los cambios, el sistema devuelve un error de permisos o, peor aún, los cambios se borran automáticamente tras reiniciar el servicio de red. Esto suele deberse a que el archivo ha sido marcado como inmutable por el sistema o gestionado por un servicio externo como NetworkManager o resolvconf.
Causas Principales del Error
Existen dos razones principales por las cuales no puedes modificar o persistir los cambios en tu archivo de resolución de nombres:
- Atributo de inmutabilidad activo: El comando
chattrfue utilizado previamente para proteger el archivo contra modificaciones accidentales o maliciosas. - Gestores de red automáticos: Servicios como
NetworkManagerosystemd-resolvedsobrescriben el archivo/etc/resolv.confcada vez que se establece una nueva conexión de red.
Método 1: Desactivar el Atributo de Inmutabilidad con chattr
Si al intentar editar o eliminar el archivo recibes un mensaje de error indicando que la operación no está permitida (Operation not permitted), lo más probable es que tenga el atributo de inmutabilidad habilitado. Sigue estos pasos para solucionarlo:
- Abre tu terminal con privilegios de superusuario o utiliza
sudo. - Comprueba los atributos actuales del archivo ejecutando el siguiente comando:
lsattr /etc/resolv.conf. Si ves una letra 'i' en la salida (por ejemplo,----i---------), significa que es inmutable. - Remueve el atributo inmutable ejecutando:
sudo chattr -i /etc/resolv.conf. - Ahora puedes editar el archivo con tu editor de texto favorito, por ejemplo:
sudo nano /etc/resolv.conf, y añadir tus servidores DNS (comonameserver 8.8.8.8).
Método 2: Configurar NetworkManager para Evitar Sobrescrituras
Si el archivo vuelve a su estado original tras reiniciar la red, NetworkManager es el responsable. Para solucionarlo de forma permanente, debes configurar el cliente DHCP para que no modifique el archivo de configuración de DNS.
- Abre el archivo de configuración global de NetworkManager con tu editor:
sudo nano /etc/NetworkManager/NetworkManager.conf. - Busca la sección
[main]y añade la siguiente línea para desactivar la gestión automática de DNS:dns=none. - Guarda los cambios y cierra el editor.
- Reinicia el servicio de NetworkManager para aplicar los cambios con el comando:
sudo systemctl restart NetworkManager.