1 puntos por GN⁺ 2024-02-09 | 1 comentarios | Compartir por WhatsApp
  • 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, wget o fetch
    • -c <channel>: usar el canal especificado
    • -r: reinstalar AdGuard Home
    • -u: desinstalar AdGuard Home
    • -v: salida detallada
    • -r y -u no 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

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
    • Go v1.25 o superior
    • Node.js v24.10.0 o superior
    • npm v10.8 o superior
  • La compilación básica consiste en clonar el repositorio y ejecutar make
  • La bandera no estándar -j actualmente no está soportada, por lo que make -j 4 o una configuración que incluya -j 4 en MAKEFLAGS puede romper la compilación
    • Si es necesario, se puede sobrescribir con make -j 1
  • Se puede hacer compilación cruzada para objetivos OS/ARCH soportados por Go, especificando GOOS y GOARCH al ejecutar make
  • Para preparar compilaciones de release se necesita snapcraft y se usa make 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 client y se especifica la bandera --local-frontend en el binario AdGuardHome para 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/e2e
    • npm run test:e2e: ejecutar todas las pruebas en modo headless
    • npm run test:e2e:interactive: pruebas interactivas
    • npm run test:e2e:debug: modo de depuración
    • npm 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 frecuencia
    • edge: 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 beta y edge de Snap Store, las etiquetas beta y edge de 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

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, dnsproxy y urlfilter
    • Del lado de Node.js usa React.js, Tabler y varios paquetes de Node.js
    • También usa datos de whotracks.me
  • AdGuard Home ya no usa CoreDNS, que se había mencionado anteriormente

1 comentarios

 
GN⁺ 2024-02-09
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

    • No sé qué problemas habrás tenido para que Pi-hole estuviera caído nada menos que un 10% del tiempo, pero una exageración así suena a publicidad.
      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.
    • Me da curiosidad saber qué problemas tuviste con Pi-hole.
      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.
    • Me gusta NextDNS, pero tiene un problema bastante grande: cuando está activado en el iPhone, no puede manejar los portales cautivos.
      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.
    • En mi caso, Pi-hole lleva tanto tiempo funcionando tan bien que hasta olvidé cómo iniciar sesión, pero cuando reconfigure la red de casa próximamente, pienso volver a evaluar las opciones.
      Parece que ahora hay como tres candidatos.
    • No he probado NextDNS, sí he usado Pi-hole y ahora estoy corriendo AdGuard Home.
      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.

    • Es realmente excelente.
      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...
    • A mí también me dio curiosidad la parte de que sea gratis.
      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.
    • También podrían ampliar su base de usuarios y, una vez que consigan suficientes, pasar a un modelo de licenciamiento.
    • Para mí, el flujo es algo así.
      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.
    • Pi-hole también soporta reenvío condicional.
  • 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.

    • Esto es software de código abierto.
      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.
    • Como es código abierto, puedes verificarlo tú mismo.
    • Las MacBook también se fabrican en China.
  • 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.

    • NextDNS también se puede, y acabo de configurarlo.
  • 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-...

    • El momento en que de verdad se te abren los ojos es cuando empiezas a redirigir las solicitudes DNS 53 a tu servidor DNS y a bloquear DoT/DoQ/DoH
      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/

    • Se ve bien
      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
    • Puedes cargar listas de bloqueo de anuncios, así que obtienes un DNS sólido y bloqueo de anuncios, y YouTube deja de quedarse girando por problemas aleatorios de DNS
      Se puede hacer gratis con un poco de configuración
    • Lo estoy corriendo en una Pi 4 y estoy satisfecho porque es fácil de configurar y usar
      No conocía AdGuard, pero aunque se ve bien, no me dan ganas de probarlo
    • Lo uso desde hace años y me gusta
      Como está basado en .NET, también es multiplataforma
      Si prefieres ese enfoque, también hay una imagen Docker
    • No lo elegí porque está escrito en C#/.NET y es relativamente nuevo; me fui por Unbound
  • 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

    • Si te refieres a iCloud Private Relay, es el comportamiento esperado con bloqueadores de anuncios basados en DNS
      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
    • Estás usando un producto que bloquea anuncios y rastreadores, y luego usando otro producto para saltártelo y acceder a anuncios y rastreadores, pero pasando por un tercero
      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

    • Tengo una tarea recurrente en el calendario cada medio año: HN: ¿Pi-hole / AdGuard? ;-)
  • 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...