Skip to main content

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-resolved está desactivado completamente.
  • El archivo /etc/resolv.conf ha 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.2 o 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

  1. Quitar la inmutabilidad:
sudo chattr -i /etc/resolv.conf
  1. Borrar el archivo:
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
  1. Rehabilitar systemd-resolved:
sudo systemctl enable --now systemd-resolved
  1. Verificar:
resolvectl status

Resumen breve

  • /etc/resolv.conf es un punto de conflicto si usas Netbird o Tailscale.
  • Desactiva systemd-resolved si no lo usas.
  • Crea tu resolv.conf manualmente.
  • Usa chattr +i para congelarlo.
  • Con Tailscale: --accept-dns=false
  • Con Netbird: actualizar a v0.52.2 o 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)