Evitar que resolv.conf sea modificado por aplicaciones externas
Este apunte documenta cómo evitar que /etc/resolv.conf sea modificado o destruido por herramientas como Netbird o Tailscale, asegurando una configuración DNS estable y bajo control.
Por qué este archivo se vuelve problemático
En versiones recientes, tanto Tailscale como Netbird tienden a modificar o incluso eliminar y recrear /etc/resolv.conf para introducir sus propios resolvers.
Esto rompe configuraciones personalizadas y, en algunos casos, deja al sistema sin resolución DNS funcional.
Caso real: configuración inmutable en Ubuntu 24.04
Sistema: Ubuntu 24.04
systemd-resolvedestá desactivado completamente.- El archivo
/etc/resolv.confha sido creado a mano y congelado.
1. Desactivar systemd-resolved
sudo systemctl disable --now systemd-resolved
Esto lo detiene y evita que arranque de nuevo.
2. Eliminar el symlink dinámico
sudo rm -f /etc/resolv.conf
Esto borra el enlace simbólico que apunta a los archivos de resolved.
3. Crear resolv.conf manual
sudo tee /etc/resolv.conf > /dev/null <<EOF
nameserver 192.168.1.5
nameserver 192.168.1.155
search nb.net
options trust-ad edns0 timeout:1 attempts:2 rotate
EOF
4. Hacerlo inmutable
sudo chattr +i /etc/resolv.conf
Esto evita que cualquier programa lo modifique.
Evitar que Tailscale lo modifique
Al iniciar Tailscale, usar:
tailscale up --accept-dns=false
Esto evita que inyecte sus propios DNS.
Evitar que Netbird lo destruya
En versiones anteriores a la 0.52.2, Netbird eliminaba directamente el archivo y lo recreaba.
Opciones:
-
Actualizar a
v0.52.2o superior (corrige el problema) -
Si aún ocurre:
- En el dashboard, desactivar DNS Management
- O configurar manualmente los DNS en la sección correspondiente
Restaurar el sistema si algo falla
- Quitar la inmutabilidad:
sudo chattr -i /etc/resolv.conf
- Borrar el archivo:
sudo rm -f /etc/resolv.conf
- Restaurar el symlink original:
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
- Rehabilitar
systemd-resolved:
sudo systemctl enable --now systemd-resolved
- Verificar:
resolvectl status
Resumen breve
/etc/resolv.confes un punto de conflicto si usas Netbird o Tailscale.- Desactiva
systemd-resolvedsi no lo usas. - Crea tu resolv.conf manualmente.
- Usa
chattr +ipara congelarlo. - Con Tailscale:
--accept-dns=false - Con Netbird: actualizar a
v0.52.2o desactivar DNS Management desde el dashboard.
Notas personales
Este sistema evita conflictos incluso tras reinicios y actualizaciones. Hasta ahora, ni Tailscale ni Netbird han vuelto a tocar el archivo tras aplicar todo esto.
Enlaces de interés
Error DNS al usar Tailscale con Headscale (tras aplicar los cambios en resolv.conf, tailscale status mostraba un error de conexión; se solucionó siguiendo ese artículo)