Ir al contenido

Unbound + AdGuard: Tu propio DNS sin publicidades sin volverte loco

Autor
Alvaro Vargas
Desarrollador de bases de datos de día, entusiasta del aprendizaje kinestésico de noche.
Tabla de contenido

El otro día mi sobrino me preguntó por qué en su tablet siempre le salían anuncios de juguetes justo después de buscarlos en Google. Le expliqué brevemente cómo funciona el rastreo en línea y me miró como si le hubiera contado que Santa Claus no existe. Esa misma noche decidí que era hora de configurar algo que llevaba meses postergando en mi servidor casero: un DNS propio con bloqueo de anuncios para toda la red. Sin instalar extensiones en cada dispositivo, sin depender de terceros, sin publicidades de juguetes persiguiendo a nadie.

¿Por qué controlar tu propio DNS? El problema que nadie te explica
#

Cómo funciona el DNS (sin aburrirte)
#

El DNS (Domain Name System) es básicamente la agenda telefónica de internet. Cuando escribes nitrotech.cloud en tu navegador, tu dispositivo no sabe a qué dirección IP conectarse, así que le pregunta a un servidor DNS: “oye, ¿cuál es el número de este dominio?”. Ese servidor responde con algo como 192.168.1.100 y tu navegador ya sabe a dónde ir.

El problema es que esa consulta pasa por algún servidor antes de llegar a su destino. Y ese servidor está viendo cada dominio que visitas.

Por qué los proveedores de internet y Google saben dónde vas
#

Por defecto, tu router usa el DNS de tu proveedor de internet. Eso significa que Telmex, Totalplay, o quien sea tu ISP, tiene un registro bastante completo de cada sitio que visitas. Si cambiaste al DNS de Google (8.8.8.8) para que “fuera más rápido”, felicidades: ahora Google también lo sabe.

Controlar tu propio DNS tiene dos beneficios principales: privacidad (tus consultas no salen a servidores de terceros) y bloqueo de anuncios a nivel de red (cualquier dispositivo conectado queda protegido automáticamente, incluyendo smart TVs, consolas y el tablet de tu sobrino).

Unbound vs AdGuard: ¿Cuál es la diferencia y por qué necesitas ambos?
#

Qué es Unbound y por qué es importante
#

Unbound es un resolver DNS recursivo. En lugar de preguntarle a Google o a tu ISP cuál es la IP de un dominio, Unbound va directamente a los servidores raíz de internet y resuelve la consulta por su cuenta. Es como hacer la llamada tú mismo en lugar de pedirle a un intermediario que la haga por ti.

Esto significa que tus consultas DNS nunca llegan a Google, Cloudflare ni a tu proveedor. Son completamente privadas.

Qué es AdGuard Home y cómo bloquea anuncios
#

AdGuard Home es un servidor DNS con interfaz web que permite bloquear dominios completos usando listas negras. Cuando tu dispositivo pregunta “¿cuál es la IP de ads.doubleclick.net?”, AdGuard simplemente responde “no existe” y el anuncio nunca llega a cargarse.

La ventaja sobre extensiones como uBlock Origin es que opera a nivel de red. No importa el dispositivo, el navegador ni la aplicación: si el dominio está bloqueado, está bloqueado para todos.

La combinación perfecta: Unbound + AdGuard
#

La idea es usar AdGuard como el punto de entrada DNS de tu red (tus dispositivos le preguntan a él), y configurarlo para que reenvíe las consultas que no están bloqueadas hacia Unbound, que las resuelve de forma recursiva sin depender de terceros.

Dispositivo → AdGuard Home (bloqueo de anuncios) → Unbound (resolución privada) → Servidores raíz

Lo mejor de los dos mundos: bloqueo de anuncios más privacidad real.

Instalación paso a paso en tu servidor casero
#

Prerequisitos y qué necesitas tener listo
#

Necesitas un servidor casero con Linux (yo uso una mini PC con Debian, pero Ubuntu funciona igual), Docker y Docker Compose instalados, y una IP fija en tu red local para ese servidor. También necesitas acceso a la configuración de tu router para cambiar el DNS que reparte por DHCP.

Instalando Unbound en Docker Compose
#

Crea un directorio para el proyecto y un archivo docker-compose.yml:

services:
  unbound:
    image: mvance/unbound:latest
    container_name: unbound
    restart: unless-stopped
    ports:
      - "5335:53/tcp"
      - "5335:53/udp"
    volumes:
      - ./unbound:/opt/unbound/etc/unbound/
    networks:
      - dns-net

networks:
  dns-net:
    driver: bridge

Fíjate que Unbound escucha en el puerto 5335 en lugar del 53 estándar. Esto es intencional: AdGuard va a ocupar el puerto 53, así que Unbound se queda en un puerto alternativo que solo AdGuard va a usar.

Instalando AdGuard Home y conectándolo a Unbound
#

Agrega AdGuard al mismo docker-compose.yml:

services:
  unbound:
    image: mvance/unbound:latest
    container_name: unbound
    restart: unless-stopped
    ports:
      - "5335:53/tcp"
      - "5335:53/udp"
    volumes:
      - ./unbound:/opt/unbound/etc/unbound/
    networks:
      - dns-net

  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "3000:3000/tcp"
      - "80:80/tcp"
    volumes:
      - ./adguard/work:/opt/adguardhome/work
      - ./adguard/conf:/opt/adguardhome/conf
    networks:
      - dns-net

networks:
  dns-net:
    driver: bridge

Levanta los contenedores con docker compose up -d y entra al asistente de configuración en http://IP-DEL-SERVIDOR:3000. Durante la configuración inicial, en la sección de upstream DNS servers, pon la dirección de Unbound. Como ambos están en la misma red Docker, usa el nombre del contenedor:

127.0.0.1:5335

Si tienes problemas de resolución entre contenedores, puedes usar la IP del gateway de la red Docker, que generalmente es 172.17.0.1.

Configuración práctica: Desde tus dispositivos hasta Internet sin rastreo
#

Configurar tus dispositivos para usar tu nuevo DNS
#

La forma más efectiva es cambiar el servidor DNS en tu router para que lo reparta automáticamente por DHCP a todos los dispositivos. Busca en la configuración de tu router la sección de DHCP y cambia el DNS primario a la IP de tu servidor. A partir de ese momento, cualquier dispositivo que se conecte a tu red usará AdGuard sin que tengas que configurar nada en cada aparato.

Si quieres probarlo primero en un solo dispositivo, cambia el DNS manualmente en la configuración de red de ese equipo.

Listas de bloqueo: dónde encontrarlas y cómo añadirlas
#

AdGuard Home ya incluye algunas listas por defecto, pero puedes añadir más desde la sección Filters > DNS blocklists. Algunas que uso y recomiendo:

  • AdGuard DNS filter — ya viene incluida, muy completa para anuncios
  • EasyList — clásica y bien mantenida
  • Steven Black’s Hosts — combina varias fuentes populares

Puedes encontrar más listas en el repositorio Firebog, que las organiza por categoría y confiabilidad. No te vuelvas loco añadiendo decenas de listas; con tres o cuatro buenas cubres el 95% de los casos.

Verificar que todo funciona (y que realmente bloquea)
#

Entra al Dashboard de AdGuard y revisa que estén llegando consultas. Si ves actividad, el DNS está funcionando. Para confirmar que el bloqueo opera correctamente, visita https://d3ward.github.io/toolz/adblock desde algún dispositivo en tu red: te mostrará qué porcentaje de dominios de publicidad estás bloqueando.

Casos de uso y solución de problemas comunes
#

Algunos sitios no cargan: cómo hacer whitelist sin perder privacidad
#

Eventualmente algún sitio va a dejar de funcionar porque bloqueas un dominio que necesita. En AdGuard, ve a Filters > Custom filtering rules y añade una excepción con la sintaxis:

@@||dominio-que-necesitas.com^

Eso le dice a AdGuard que permita ese dominio específico sin tocar el resto de las listas. Úsalo con criterio: si el dominio bloqueado es claramente de rastreo, quizás el sitio simplemente no merece tu visita.

Monitorear qué se está bloqueando en tu red
#

Una de las partes más entretenidas de tener esto configurado es ver en tiempo real qué se bloquea. En el Query Log de AdGuard puedes ver cada consulta DNS con su resultado. Es bastante revelador: las smart TVs son especialmente charlatanas, mandando docenas de consultas a dominios de telemetría cada hora.

Backup y recuperación de tu configuración
#

Dado que todo vive en volúmenes Docker dentro de tus directorios ./adguard y ./unbound, el backup es tan simple como comprimir esas carpetas:

tar -czf dns-backup-$(date +%Y%m%d).tar.gz ./adguard ./unbound

Guarda ese archivo en algún lugar seguro. Si algo sale mal, solo necesitas restaurar esos directorios y levantar los contenedores de nuevo.

Conclusión
#

Llevar el control de tu DNS no es solo un ejercicio técnico para presumir en el servidor de Discord de self-hosters. Es una decisión práctica que mejora la privacidad de todos en tu red y elimina una cantidad sorprendente de publicidad sin instalar nada en los dispositivos. Mi sobrino ya no ve anuncios de juguetes en su tablet, y yo duermo un poco mejor sabiendo que mis consultas DNS no alimentan el perfil publicitario de nadie.

La configuración inicial toma menos de una tarde, y una vez funcionando apenas requiere mantenimiento. Los contenedores se actualizan solos si usas Watchtower, y las listas de bloqueo se actualizan automáticamente desde AdGuard.

¿Ya tienes un servidor casero y todavía dependes del DNS de tu ISP? Vale la pena el cambio.

Relacionados

Dónde comprar dominios en 2026 sin que te estafen
Deja de depender de Google: cómo migrar tus fotos a Immich