AdGuard Home: servidor DNS para bloquear anuncios y rastreadores en toda la red
(github.com/AdguardTeam)- AdGuard Home es un servidor DNS gratuito y open source que, una vez instalado, se aplica a todos los dispositivos de la red doméstica y bloquea anuncios y rastreo sin software del lado del cliente
- Funciona redirigiendo dominios de rastreo a un “black hole” mediante DNS sinkholing, impidiendo que los dispositivos se conecten a esos servidores; comparte mucho código con los servidores públicos de AdGuard DNS
- Al operarlo como servidor propio, permite elegir directamente qué bloquear o permitir, monitorear la actividad de la red y agregar reglas de filtrado personalizadas, más que con un DNS público
- Al igual que Pi-Hole, admite bloqueo de anuncios y rastreadores y personalización de listas de bloqueo, pero AdGuard Home ofrece de base funciones como upstreams DNS cifrados, ejecución como servidor DoH/DoT, bloqueo de dominios de phishing y malware, control parental y aplicación forzada de Safe Search
- El bloqueo a nivel DNS no puede bloquear anuncios que usan el mismo dominio que el contenido, como anuncios de YouTube y Twitch o publicaciones patrocinadas de Facebook, Twitter e Instagram; el futuro soporte de proxy de bloqueo de contenido tampoco resolverá todos los casos
Rol y funcionamiento de AdGuard Home
- AdGuard Home es un servidor DNS de bloqueo de anuncios y rastreadores para toda la red que se presenta como un centro de protección de privacidad para usuarios y dispositivos
- Tras instalarse, cubre todos los dispositivos de la red doméstica, sin necesidad de instalar software cliente por separado en cada dispositivo
- Funciona como servidor DNS y redirige dominios de rastreo a un “black hole”, impidiendo que los dispositivos se conecten a esos servidores
- Está basado en el software usado en los servidores públicos de AdGuard DNS y ambos productos comparten mucho código
Instalación e integración
- En Linux, Unix, macOS, FreeBSD y OpenBSD se puede ejecutar el script de instalación automática con
curl,wgetofetch-c <channel>: usar el canal especificado-r: reinstalar AdGuard Home-u: desinstalar AdGuard Home-v: salida detallada-ry-uno pueden usarse al mismo tiempo
- La instalación manual y la configuración de dispositivos se pueden consultar en la documentación Getting Started
- La imagen oficial de Docker está disponible en Docker Hub
- Los usuarios de Linux pueden instalarlo a través de Snap Store
- Si se necesita integración, se puede usar la REST API, y también se ofrece un cliente Python
- Este cliente Python se usa para crear el AdGuard Home Hass.io Add-on
Diferencias con AdGuard DNS público
- Operar un servidor AdGuard Home propio ofrece más control que usar un servidor DNS público
- El usuario puede elegir directamente qué bloquea y qué permite el servidor
- Se puede monitorear la actividad de la red
- Se pueden agregar reglas de filtrado personalizadas
- Como el servidor es del propio usuario, el control queda en sus manos
Comparación con Pi-Hole y bloqueadores de anuncios tradicionales
- Tanto AdGuard Home como Pi-Hole bloquean anuncios y rastreadores mediante DNS sinkholing y permiten personalizar qué se bloquea
- AdGuard Home apunta a ofrecer muchas funciones de base sin instalar software adicional ni hacer configuración manual
- Según la tabla comparativa del README, AdGuard Home ofrece las siguientes funciones
- Bloqueo de anuncios y rastreadores
- Personalización de listas de bloqueo
- Servidor DHCP integrado
- HTTPS para la interfaz de administración
- Upstreams DNS cifrados con DNS-over-HTTPS, DNS-over-TLS y DNSCrypt
- Ejecución multiplataforma
- Ejecución como servidor DNS-over-HTTPS o DNS-over-TLS
- Bloqueo de dominios de phishing y malware
- Control parental con bloqueo de dominios para adultos
- Aplicación forzada de Safe Search en motores de búsqueda
- Configuración por dispositivo
- Configuración de acceso para elegir usuarios de AGH DNS
- Ejecución sin permisos root
- En comparación con los bloqueadores de anuncios tradicionales, DNS sinkholing puede bloquear una gran proporción de anuncios, pero carece de la flexibilidad y potencia de los bloqueadores de anuncios tradicionales
- Los bloqueadores basados en DNS pueden ayudar a bloquear solicitudes de anuncios, rastreo y analítica en SmartTV, altavoces inteligentes y dispositivos IoT donde no se puede instalar un bloqueador de anuncios tradicional
Limitaciones conocidas y próximos pasos
- Los bloqueadores a nivel DNS no pueden bloquear los siguientes ejemplos
- Anuncios de YouTube y Twitch
- Publicaciones patrocinadas de Facebook, Twitter e Instagram
- Los anuncios que comparten el mismo dominio que el contenido no pueden bloquearse con un bloqueador a nivel DNS
- Este problema no puede resolverse solo con DNS; se necesita un proxy de bloqueo de contenido como en las aplicaciones independientes de AdGuard
- AdGuard Home tiene previsto incorporar en el futuro soporte para una función de proxy de bloqueo de contenido
- Incluso en ese caso, puede haber casos en los que no sea suficiente o que requieran una configuración compleja
Compilación desde el código fuente y desarrollo
- Para preparar el entorno de desarrollo se ejecuta
make init - Para compilar se necesita lo siguiente
- La compilación básica consiste en clonar el repositorio y ejecutar
make - La bandera no estándar
-jactualmente no está soportada, por lo quemake -j 4o una configuración que incluya-j 4enMAKEFLAGSpuede romper la compilación- Si es necesario, se puede sobrescribir con
make -j 1
- Si es necesario, se puede sobrescribir con
- Se puede hacer compilación cruzada para objetivos OS/ARCH soportados por Go, especificando
GOOSyGOARCHal ejecutarmake - Para preparar compilaciones de release se necesita
snapcrafty se usamake build-release CHANNEL='...' VERSION='...' - La imagen local de Docker se compila con
make build-docker, y la imagen oficial usa Docker Buildx - Al depurar el frontend, se ejecuta una compilación de desarrollo en modo watch desde el directorio
clienty se especifica la bandera--local-frontenden el binarioAdGuardHomepara usar los archivos del directorio./build/en lugar de los archivos de frontend integrados - Las pruebas E2E del frontend usan Playwright y están en
tests/e2enpm run test:e2e: ejecutar todas las pruebas en modo headlessnpm run test:e2e:interactive: pruebas interactivasnpm run test:e2e:debug: modo de depuraciónnpm run test:e2e:codegen: generar código para una prueba nueva- Playwright descarga e instala sus propios binarios de navegador, que pueden ser distintos de los navegadores instalados en el sistema
Contribución, canales inestables y proyectos externos
- Los contribuidores pueden hacer fork del repositorio, realizar cambios y enviar un pull request, siguiendo las code guidelines
- No es necesario contribuir UI y backend al mismo tiempo; idealmente, primero debería entrar la implementación del backend con configuración, API y funciones, y la UI puede implementarse más adelante en otro pull request
- Hay dos canales de versiones inestables
beta: versión beta relativamente estable, normalmente lanzada cada dos semanas o con mayor frecuenciaedge: la versión más reciente de la rama de desarrollo, con nuevas actualizaciones publicadas a diario
- Las versiones inestables pueden instalarse desde los canales
betayedgede Snap Store, las etiquetasbetayedgede Docker Hub, el script de instalación automática o compilaciones standalone de la Wiki - Hay proyectos relacionados creados por desarrolladores externos y fans no afiliados a AdGuard
- AdGuard Home Remote: app para iOS
- Python library
- Home Assistant add-on
- OpenWrt LUCI app
- AdGuardHome sync
- AdGuardian-Term: monitoreo y estadísticas de tráfico en tiempo real basados en terminal
- Chocolatey package
Privacidad y tecnologías usadas
- La idea central de AdGuard Home es que los usuarios deben controlar sus propios datos
- AdGuard Home no recopila estadísticas de uso y no usa servicios web a menos que el usuario los configure
- La privacy policy completa incluye, en teoría, todos los elementos que AdGuard Home podría enviar
- Las principales tecnologías base son los ecosistemas de Go y Node.js
- Como bibliotecas de Go usa
gcache,miekg's dns,go-yaml,service,dnsproxyyurlfilter - Del lado de Node.js usa React.js, Tabler y varios paquetes de Node.js
- También usa datos de
whotracks.me
- Como bibliotecas de Go usa
- AdGuard Home ya no usa CoreDNS, que se había mencionado anteriormente
1 comentarios
Opiniones de Hacker News
Durante años usé en la red de mi casa el proyecto competidor Pi-hole[0], hasta que conocí NextDNS[1].
En términos de rendimiento perdí la ventaja de que las solicitudes no salieran de casa, pero pesaron más la portabilidad de poder usarlo en todos los dispositivos dentro y fuera de casa, y el tiempo que me ahorraba.
Pi-hole funcionaba bien el 90% del tiempo, pero cuando se detenía me tomaba tiempo arreglarlo, y por USD 20 al año era difícil que la operación propia compitiera con NextDNS.
No es publicidad de NextDNS, y creo que este tipo de proyectos definitivamente tiene que existir, pero NextDNS es una herramienta SaaS realmente simple con una relación precio-beneficio muy buena.
0 - https://pi-hole.net/
1 - https://nextdns.io
El 99.9% de los daños en tarjetas SD se deben a adaptadores de corriente con poca potencia, así que si te da flojera buscar una fuente USB adecuada de 2.5~3A, compra el adaptador de corriente oficial de Raspberry Pi.
Con USD 20 al año puedes comprar todos los años una RPi Zero 2W de repuesto y una tarjeta SD, y todavía te queda para un sándwich de Sheetz para celebrar.
Creo que la combinación Pi-hole + WireGuard + compra única de una RPi Zero de USD 15 es difícil de superar.
Mi instancia funcionó durante años sin un solo problema, y hace alrededor de un año migré a AdGuard Home porque quería correrlo en una caja con OPNSense.
En los dispositivos configuré una VPN WireGuard automática para que se conecten por VPN a mi red de casa cuando no estén conectados a mi SSID, así que el DNS local también funciona en remoto.
Hay que acordarse de desactivarlo al conectarse al wifi de un avión y cosas así, por lo que me parece difícil recomendárselo a amigos que no son técnicos.
Parece que ahora hay como tres candidatos.
Si vas a pagar USD 20 al año solo por cifrado de DNS y bloqueo, también vale la pena considerar subir a Mullvad, que ofrece no solo bloqueo de anuncios por DNS, sino también anonimato de IP, tunneling y más.
Hace poco estuve revisando Pi-hole y terminé eligiendo AdGuard Home.
A primera vista la interfaz se veía mejor y, en general, parecía superior; para ser una herramienta tan pulida, sorprende la cantidad de personalización que ofrece, como reenviar consultas de dominios privados locales al DNS interno.
No tengo claro por qué AdGuard ofrece esto gratis, y quizá debería investigarlo, pero por ahora me pareció una opción de riesgo relativamente bajo.
No alcanza con decir lo mucho más agradable que se vuelve usar cosas como la app de NYTimes cuando desaparecen los anuncios molestos.
La función de DNS dividido trae todas las opciones que uno podría imaginar.
Pensé que iba a necesitar un segundo servidor DNS detrás, pero pude poner todas las reglas necesarias directamente dentro de AdGuard Home.
También soporta upstreams DoT y DoH, algo que todavía no es común en muchos routers domésticos.
Documentación: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuratio...
Puede que configuren sus propios servidores DNS como upstream predeterminado y esperen que mucha gente conserve los valores por defecto.
El DNS es una de las mejores tecnologías para la minería de datos y la venta de datos, y creo que por eso existen servidores DNS fáciles de recordar como 8.8.8.8 o 1.1.1.1.
Google y Cloudflare no lo hacen solo por buena voluntad.
Dicho eso, AdGuard afirma que no vende los datos de sus clientes.
Lees la documentación, lo instalas, logras que funcione bien y luego presumes ante tus amigos que en tu red de casa no hay anuncios molestos.
Entonces tus amigos dirán: “instálamelo a mí también”.
Puedes instalárselo, pero no vas a poder encargarte del mantenimiento, así que terminas diciendo: “en vez de toda esa complejidad, hay una configuración simple basada en app que funciona de inmediato para toda la familia por USD 29 al año”.
Y en esa cena cinco amigos descargan el servicio y pagan.
Creo que la filosofía de las startups tecnológicas actuales es parecida: tener un producto de código abierto y construir un negocio comercial encima.
AdGuard es una empresa rusa con ingenieros rusos; muchos de sus desarrolladores y empleados trabajan en Moscú, y está registrada en Chipre.
No es una buena combinación, y la evitaría por motivos de seguridad.
La razón por la que MacPaw clasifica como riesgo el software desarrollado en Rusia es que el gobierno puede acceder a los datos en cualquier momento, pero esto es código abierto autoalojado.
El FSB no puede acceder a un servidor local solo con una orden judicial arbitraria.
Por eso me parece más rusofobia que una preocupación legítima, y me parece aún más inapropiado porque sé de primera mano cuánto sufren los desarrolladores rusos por las estupideces de su gobierno.
También podría interesarte py-hole.
Está hecho solo con un script de Python y una configuración de dnsmasq, corre en OpenWrt, es gratis y su uso de CPU es prácticamente cercano a 0.
https://github.com/time4tea-net/py-hole
Otro punto bueno de AdGuard es que se ofrece como add-on de Home Assistant.
Como se integra con el resto de HA, por ejemplo puedes poner en el dashboard un interruptor para activar y desactivar el bloqueo.
AdGuard Home es excelente
Usé Pi-hole durante un tiempo, pero tenía problemas menores con bastante frecuencia
No eran graves, pero estas herramientas solo son realmente útiles cuando simplemente funcionan
En mi configuración con Pi corre sin problemas con docker-compose[1], y uso un contenedor genial llamado adguardhome-sync[2] para tener una segunda Pi como respaldo y sincronizar la configuración
Ahora no veo anuncios en la red, y también es bastante interesante ver cuántas solicitudes de rastreo/anuncios envían ciertos dispositivos
1 - https://thesmarthomejourney.com/2021/05/24/adguard-pihole-dn...
2 - https://thesmarthomejourney.com/2023/02/12/adguardhome-sync-...
Muchísimos dispositivos y apps intentan salir directamente a servidores DNS hardcodeados para rastreo y segmentación de anuncios
No sé si alguien aquí usa Technitium DNS
Es open source y gratuito, y funciona incluso con hardware mínimo
Yo lo corro en una Orange Pi 3 LTS
https://technitium.com/dns/
Dice “Technitium DNS Server is an open source authoritative as well as recursive DNS server”, y me pregunto si Pi-hole o AdGuard también son servidores DNS recursivos o si son simples bloqueadores
Llevo mucho tiempo usando Pi-hole y estoy tratando de entender qué ventajas tendría esto
Se puede hacer gratis con un poco de configuración
No conocía AdGuard, pero aunque se ve bien, no me dan ganas de probarlo
Como está basado en .NET, también es multiplataforma
Si prefieres ese enfoque, también hay una imagen Docker
Hay algunos comentarios más bien positivos sobre NextDNS, pero dejo esto aparte porque estoy pensando en salirme de NextDNS
La razón es que ahora uso Mac/Safari y quiero activar la función “Ocultar la dirección IP de los rastreadores”, pero cuando la activo empiezan a aparecer anuncios en sitios web que NextDNS antes bloqueaba
Por eso tengo que desactivar esta opción y no puedo usar la función de Apple
En general parece que ambas cosas no se pueden usar juntas, y también hay un issue relacionado en el sitio de ayuda de NextDNS
https://help.nextdns.io/t/q6yq4xy/nextdns-stops-working-prop...
Me pregunto si alguien sabe si esto también es un problema conocido con AdGuard o Pi-hole
Cuando activas el relay, la conexión pasa por proxy y no usa el servidor DNS de la red local
Da lo mismo si es Pi-hole, NextDNS o AdGuard
No entiendo cuál sería el objetivo de esto último
Parece que en HN hay un tiempo fijo que no puede pasar sin que aparezca un artículo sobre Pi-hole o AdGuard Home
Bueno
De forma similar, si corres pfSense en tu red, también vale la pena echarle un vistazo a pfBlockerNG. Personalmente me gusta bastante: https://docs.netgate.com/pfsense/en/latest/packages/pfblocke...