Pasé dos años muy tranquilo con Pi-hole. Funcionaba, bloqueaba anuncios, tenía buenas listas comunitarias y no me daba problemas. Pero hace unos seis meses, mientras reorganizaba mi stack de red, decidí probar AdGuard Home “por curiosidad”. Ese “por curiosidad” lleva seis meses funcionando en producción y Pi-hole lleva seis meses sin arrancar.
Esta no es una entrada sobre que Pi-hole sea malo. Es sobre que AdGuard Home encaja mejor en mi caso concreto, por razones específicas que intento explicar aquí.
Por qué cambié#
El detonante fue DNS-over-HTTPS. Llevaba tiempo queriendo cifrar las consultas DNS que salen de mi red hacia internet. Con Pi-hole puedes hacerlo añadiendo Unbound como resolver recursivo (de hecho, tengo un post sobre eso), pero es una pieza extra que mantener. Cuando descubrí que AdGuard Home tiene DoH y DoT integrado de serie, sin instalar nada más, quise probarlo.
La otra razón fue la interfaz. Pi-hole tiene una interfaz decente pero lleva muchos años con el mismo diseño, y se nota. AdGuard Home tiene una interfaz más limpia, más cómoda para navegar, y en móvil va mejor. Esto es subjetivo, lo sé, pero paso bastante tiempo mirando dashboards de homelab y la experiencia importa.
Instalación con Docker#
Parto de que tienes Docker y Docker Compose en tu servidor. Si estás en Ubuntu, lo primero que te va a dar problemas es el puerto 53, que systemd-resolved ocupa por defecto.
Esto es lo que hay que hacer antes de levantar el container:
| |
Una vez liberado el puerto 53, el docker-compose.yml es bastante directo:
| |
El primer arranque te redirige a la interfaz de configuración en el puerto 3000. El asistente inicial es claro: elige usuario y contraseña, el puerto de la interfaz de administración y el puerto DNS.
Una cosa que me parece bien pensada: AdGuard Home te avisa durante el setup si algún puerto está ocupado y por qué proceso. Si el puerto 53 sigue ocupado, te lo dice antes de que termines de configurar, no después.
La configuración que uso#
Después del setup inicial, lo primero que configuro son los DNS upstream. En mi caso uso Cloudflare con DoH:
| |
Tengo dos servidores configurados en modo “load balancing” (equilibrio de carga), que distribuye las consultas entre ambos. También pruebo con Quad9 cuando quiero un filtrado adicional de dominios maliciosos a nivel de resolver.
La activación de DoH es un botón en la interfaz, sin configurar nada más. Eso es lo que me ganó.
Listas de bloqueo#
Las listas funcionan igual que en Pi-hole: añades URLs de listas en formato hosts o adblock, AdGuard las descarga y las aplica. Uso básicamente las mismas listas que tenía en Pi-hole:
- AdGuard DNS filter (incluida por defecto, muy buena)
- Steven Black’s unified hosts (la clásica de Pi-hole)
- OISD (lista grande, muy completa, bajo número de falsos positivos)
- URLhaus (dominios maliciosos conocidos)
Con estas cuatro cubres bien el 95% de lo que quieres bloquear. Tengo otras dos listas más específicas para rastreadores de redes sociales que añado cuando quiero ser más agresivo, pero a veces rompen cosas y las quito.
En mi red bloqueo entre el 18% y el 22% del tráfico DNS en un día normal. Cuando entro al DNS de mi smart TV, ese porcentaje sube al 40%. Las televisiones modernas son una vergüenza en términos de telemetría.
DNS rewrites: el detalle que más uso#
Esta función me parece la más práctica del día a día. DNS rewrites te permite definir que un nombre de dominio específico resuelva a la IP que tú quieras, solo para tu red local.
Tengo configurado, por ejemplo:
| |
Cuando escribo proxmox.mi-homelab.local en cualquier dispositivo de mi red, llega directo al servidor sin pasar por internet. Pi-hole también tiene esta función (las Local DNS Records), pero la interfaz de AdGuard me parece más cómoda para gestionarlas cuando tienes muchas entradas.
Reglas por cliente#
Esta es otra diferencia relevante con Pi-hole. AdGuard Home te deja asignar configuraciones diferentes por dispositivo o grupo de dispositivos.
Tengo un grupo de “dispositivos de trabajo” donde bloqueo redes sociales en horario laboral. Tengo otro grupo para los dispositivos IoT de casa con reglas más agresivas. Y tengo un grupo sin apenas restricciones para cuando alguien de visita se conecta a mi red de invitados.
Hacer esto en Pi-hole requiere más trabajo: configurar grupos en la base de datos, asignar clientes manualmente. En AdGuard, la interfaz lo hace más visual. No digo que Pi-hole no pueda, digo que en AdGuard me llevó menos tiempo.
Las estadísticas#
El dashboard principal muestra las métricas habituales: consultas totales, consultas bloqueadas, porcentaje de bloqueo, top dominios más consultados, top clientes más activos. Tiene gráficas por hora del día y puedes ajustar el historial de consultas (cuánto tiempo guarda los logs).
Una cosa que hago de vez en cuando es revisar la lista de “top clientes bloqueados”. Siempre hay alguna sorpresa. En mi caso, un robot aspirador de una marca que no nombraré intentaba contactar cada dos minutos con un servidor en China. Bloqueado sin pestañear.
Los logs de consultas son detallados: para cada petición DNS ves el cliente que la hizo, el dominio consultado, si se bloqueó y por qué lista, y el tiempo de respuesta. Es mucha información pero bien organizada.
Lo que no me gusta#
Hay cosas que Pi-hole tiene mejor. La comunidad de Pi-hole lleva muchos más años y tiene más recursos: guías, scripts, integraciones con otras herramientas. Gravity Sync, por ejemplo, es un script que sincroniza automáticamente la configuración entre dos instancias de Pi-hole para alta disponibilidad. AdGuard Home tiene su propio mecanismo de sincronización, pero menos maduro.
Las listas comunitarias en los foros de Pi-hole son más numerosas. Hay listas muy específicas para regiones, tipos de contenido, o servicios concretos que la gente ha ido creando y depurando durante años. Para AdGuard existen también, pero menos.
Otra cosa: AdGuard Home no tiene la integración nativa con FTL (el motor de consultas de Pi-hole) que hace que Pi-hole sea tan eficiente con grandes volúmenes de consultas en hardware muy modesto. En una Raspberry Pi 4, Pi-hole con FTL funciona notablemente bien. AdGuard Home también funciona bien, pero para volúmenes muy altos, Pi-hole tiene ventaja.
Alta disponibilidad#
En mi configuración actual corro dos instancias de AdGuard Home en dos nodos diferentes del cluster. Las dos apuntan a los mismos DNS upstream y tengo configurado en mi router DHCP que envíe las dos IPs de los servidores DNS a los clientes de la red.
Si un nodo cae, el otro sigue respondiendo. No es sincronización perfecta (las reglas personalizadas hay que mantenerlas en las dos instancias manualmente), pero para mis necesidades funciona.
¿Qué te recomiendo instalar?#
Si empiezas desde cero y no tienes nada instalado: AdGuard Home. La curva de entrada es menor, el DoH integrado ahorra trabajo, y las funciones de cliente y reglas personalizadas son más accesibles.
Si llevas tiempo con Pi-hole y estás cómodo: no hay urgencia en cambiar. Pi-hole no está roto. Pero si tienes curiosidad, levanta AdGuard Home en un container aparte y pruébalo durante una semana en modo paralelo antes de decidir.
Si ya tienes Pi-hole + Unbound funcionando: el valor añadido de AdGuard Home en ese caso es principalmente la interfaz y las reglas por cliente. Si eso no te importa, quédate donde estás.
Configuración del router#
Para que AdGuard Home funcione para toda tu red, tienes que decirle a tu router que use la IP del servidor donde corre AdGuard como DNS primario para los clientes DHCP. Esto se hace en la configuración DHCP del router, normalmente en “DNS primario” o “DNS para clientes”.
Si tu router es torpe y no te deja cambiar el DNS que entrega por DHCP, la opción es configurar AdGuard Home como servidor DHCP directamente (tiene esa función). Deshabilitas el DHCP del router y AdGuard gestiona las asignaciones de IP. Funciona bien pero es otro punto de fallo a considerar.
Conclusión#
Seis meses después de la prueba “de curiosidad”, AdGuard Home es parte fija de mi homelab. No lo volví a cuestionar porque simplemente funciona y no me da trabajo.
La razón principal por la que me quedé es el DoH integrado. Poder cifrar las consultas DNS salientes sin añadir otra pieza al stack era exactamente lo que buscaba. El resto de mejoras respecto a Pi-hole son menores pero agradables.
Si ya tienes Pi-hole o AdGuard Home funcionando, tienes lo importante. Si estás montando tu primer bloqueo de DNS, empieza por cualquiera de los dos. Ambos son gratuitos, de código abierto, y mejor que dejar que tu ISP resuelva el DNS de todos tus dispositivos.