# 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`

```bash
sudo systemctl disable --now systemd-resolved
```

Esto lo detiene y evita que arranque de nuevo.

#### 2. Eliminar el symlink dinámico

```bash
sudo rm -f /etc/resolv.conf
```

Esto borra el enlace simbólico que apunta a los archivos de `resolved`.

#### 3. Crear resolv.conf manual

```bash
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

```bash
sudo chattr +i /etc/resolv.conf
```

Esto evita que cualquier programa lo modifique.

---

### Evitar que Tailscale lo modifique

Al iniciar Tailscale, usar:

```bash
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:

```bash
sudo chattr -i /etc/resolv.conf
```

2. Borrar el archivo:

```bash
sudo rm -f /etc/resolv.conf
```

3. Restaurar el symlink original:

```bash
sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
```

4. Rehabilitar `systemd-resolved`:

```bash
sudo systemctl enable --now systemd-resolved
```

5. Verificar:

```bash
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](https://wiki.jtrapero.eu.org/books/headscale/page/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)