1 pontos por GN⁺ 2024-02-09 | 1 comentários | Compartilhar no WhatsApp
  • AdGuard Home é um servidor DNS gratuito e open source que, após a instalação, se aplica a todos os dispositivos da rede doméstica, bloqueando anúncios e rastreadores sem precisar de software no lado do cliente
  • Ele funciona redirecionando domínios de rastreamento para um “black hole” via DNS sinkholing, impedindo que o dispositivo se conecte a esses servidores, e compartilha muito código com o servidor público AdGuard DNS
  • Ao operar seu próprio servidor, você pode escolher diretamente o que será bloqueado ou permitido, monitorar a atividade da rede e adicionar regras de filtragem personalizadas
  • Assim como o Pi-Hole, oferece bloqueio de anúncios e rastreadores e personalização de listas de bloqueio, mas o AdGuard Home inclui por padrão recursos como upstreams DNS criptografados, execução como servidor DoH/DoT, bloqueio de domínios de phishing e malware, controle parental e imposição de Safe Search
  • O bloqueio em nível de DNS não consegue bloquear anúncios do YouTube e Twitch ou posts patrocinados no Facebook, Twitter e Instagram quando usam o mesmo domínio do conteúdo; o futuro suporte a proxy de bloqueio de conteúdo também não resolverá todos os casos

Papel e funcionamento do AdGuard Home

  • AdGuard Home é um servidor DNS para bloquear anúncios e rastreadores em toda a rede, apresentado como um centro de proteção de privacidade para usuários e dispositivos
  • Depois de instalado, cobre todos os dispositivos da rede doméstica, sem necessidade de instalar software cliente separado em cada aparelho
  • Funciona como servidor DNS, redirecionando domínios de rastreamento para um “black hole” para impedir que o dispositivo se conecte a esses servidores
  • É baseado no software usado no servidor público AdGuard DNS, e os dois produtos compartilham muito código

Instalação e integração

  • Em Linux, Unix, macOS, FreeBSD e OpenBSD, é possível executar o script de instalação automática com curl, wget ou fetch
    • -c <channel>: usa o canal especificado
    • -r: reinstala o AdGuard Home
    • -u: remove o AdGuard Home
    • -v: saída detalhada
    • -r e -u não podem ser usados ao mesmo tempo
  • A instalação manual e a configuração dos dispositivos podem ser consultadas na documentação Getting Started
  • A imagem oficial para Docker é oferecida no Docker Hub
  • Usuários de Linux podem instalar pela Snap Store
  • Se for necessária integração, é possível usar a REST API, e também há um cliente Python

Diferenças em relação ao AdGuard DNS público

  • Ao operar seu próprio servidor AdGuard Home, você tem mais controle do que usando o servidor DNS público
  • O próprio usuário pode escolher o que o servidor vai bloquear e permitir
  • É possível monitorar a atividade da rede
  • É possível adicionar regras de filtragem personalizadas
  • Como o servidor é seu, o controle fica com você

Comparação com Pi-Hole e bloqueadores tradicionais de anúncios

  • Tanto o AdGuard Home quanto o Pi-Hole usam DNS sinkholing para bloquear anúncios e rastreadores, além de permitir personalização do que será bloqueado
  • O objetivo do AdGuard Home é oferecer muitos recursos nativamente, sem exigir software adicional ou configuração manual
  • Segundo a tabela comparativa do README, o AdGuard Home oferece os seguintes recursos
    • bloqueio de anúncios e rastreadores
    • personalização de listas de bloqueio
    • servidor DHCP embutido
    • HTTPS para a interface de administração
    • upstreams DNS criptografados com DNS-over-HTTPS, DNS-over-TLS e DNSCrypt
    • execução multiplataforma
    • execução como servidor DNS-over-HTTPS ou DNS-over-TLS
    • bloqueio de domínios de phishing e malware
    • controle parental com bloqueio de domínios adultos
    • imposição de Safe Search em mecanismos de busca
    • configurações por dispositivo
    • controle de acesso para escolher quais usuários usam o DNS do AGH
    • execução sem privilégios de root
  • Em comparação com bloqueadores tradicionais de anúncios, o DNS sinkholing consegue bloquear uma grande parcela dos anúncios, mas não tem a mesma flexibilidade e potência dos bloqueadores tradicionais
  • Bloqueadores baseados em DNS podem ser úteis para barrar requisições de anúncios, rastreamento e analytics em Smart TVs, caixas de som inteligentes e dispositivos IoT, onde não é possível instalar bloqueadores tradicionais

Limitações conhecidas e direção futura

  • Bloqueadores em nível de DNS não conseguem bloquear, por exemplo:
    • anúncios do YouTube e Twitch
    • posts patrocinados no Facebook, Twitter e Instagram
  • Anúncios que compartilham o mesmo domínio do conteúdo não podem ser bloqueados por um bloqueador em nível de DNS
  • Só o DNS não consegue lidar com esse problema; é necessário um proxy de bloqueio de conteúdo, como nos aplicativos independentes da AdGuard
  • O AdGuard Home deverá receber suporte futuro à função de proxy de bloqueio de conteúdo
  • Mesmo assim, ainda podem restar casos em que isso não será suficiente ou exigirá configuração complexa

Build do código-fonte e desenvolvimento

  • Para preparar o ambiente de desenvolvimento, execute make init
  • Para fazer o build, são necessários:
    • Go v1.25 ou superior
    • Node.js v24.10.0 ou superior
    • npm v10.8 ou superior
  • O build padrão é feito clonando o repositório e executando make
  • A flag não padrão -j não é suportada no momento, então usar make -j 4 ou ter -j 4 no MAKEFLAGS pode quebrar o build
    • Se necessário, é possível sobrescrever com make -j 1
  • É possível fazer cross-build para os alvos OS/ARCH suportados pelo Go, definindo GOOS e GOARCH ao executar make
  • Para preparar builds de release, é necessário o snapcraft, usando make build-release CHANNEL='...' VERSION='...'
  • A imagem local do Docker é gerada com make build-docker, e a imagem oficial usa Docker Buildx
  • Ao depurar o frontend, execute o build de desenvolvimento em modo watch no diretório client e passe a flag --local-frontend ao binário AdGuardHome para usar os arquivos do diretório ./build/ no lugar dos arquivos de frontend embutidos
  • Os testes E2E de frontend usam Playwright, e os testes ficam em tests/e2e
    • npm run test:e2e: executa todos os testes em modo headless
    • npm run test:e2e:interactive: testes interativos
    • npm run test:e2e:debug: modo de depuração
    • npm run test:e2e:codegen: gera novo código de teste
    • O Playwright baixa e instala seus próprios binários de navegador, que podem ser diferentes dos navegadores instalados no sistema

Contribuição, canais instáveis e projetos externos

  • Contribuidores podem fazer fork do repositório, aplicar mudanças e enviar um pull request, seguindo as code guidelines
  • Não é necessário contribuir ao mesmo tempo para UI e backend; idealmente, a implementação de backend com configurações, API e recursos vem primeiro, e a UI pode ser implementada depois em outro pull request
  • Existem dois canais de versões instáveis
    • beta: versão beta relativamente estável, normalmente lançada a cada duas semanas ou com mais frequência
    • edge: versão mais recente da branch de desenvolvimento, com novas atualizações enviadas diariamente
  • Versões instáveis podem ser instaladas pelos canais beta e edge da Snap Store, pelas tags beta e edge no Docker Hub, pelo script de instalação automática ou por builds standalone na Wiki
  • Há projetos relacionados criados por desenvolvedores terceirizados e fãs sem afiliação com a AdGuard

Privacidade e tecnologias usadas

  • A ideia central do AdGuard Home é que o usuário deve controlar seus próprios dados
  • O AdGuard Home não coleta estatísticas de uso e não usa serviços web, a menos que o usuário os configure
  • A privacy policy completa inclui, em teoria, todos os itens que o AdGuard Home pode enviar
  • As principais tecnologias usadas são do ecossistema Go e Node.js
    • Como bibliotecas Go, usa gcache, miekg's dns, go-yaml, service, dnsproxy e urlfilter
    • No lado do Node.js, usa React.js, Tabler e vários pacotes Node.js
    • Também usa dados do whotracks.me
  • O AdGuard Home não usa mais o CoreDNS, mencionado anteriormente

1 comentários

 
GN⁺ 2024-02-09
Opiniões no Hacker News
  • Durante alguns anos rodei o projeto concorrente Pi-hole[0] na rede de casa, até conhecer o NextDNS[1]
    Em termos de desempenho, perdi a vantagem de as requisições não saírem de casa, mas a portabilidade de poder usar em todos os dispositivos dentro e fora de casa e o tempo economizado compensaram mais
    O Pi-hole funcionava bem em 90% do tempo, mas quando parava eu gastava tempo consertando, e por US$ 20 por ano era difícil competir com o NextDNS operando tudo por conta própria
    Não é propaganda do NextDNS, e acho que projetos assim precisam existir, mas o NextDNS é uma ferramenta SaaS realmente simples, com ótimo custo-benefício
    0 - https://pi-hole.net/
    1 - https://nextdns.io

    • Não sei que tipo de problema você teve para o Pi-hole ficar fora do ar 10% do tempo, mas esse exagero soa como propaganda
      99,9% dos casos de corrupção de cartão SD são causados por fonte de alimentação insuficiente; se não quiser ter o trabalho de procurar uma fonte USB adequada de 2,5~3 A, compre a fonte oficial do Raspberry Pi
      Com US$ 20 por ano, dá para comprar todo ano um RPi Zero 2W reserva e um cartão SD, e ainda sobra dinheiro para um sanduíche comemorativo da Sheetz
      Acho difícil bater a combinação Pi-hole + WireGuard + uma compra única de um RPi Zero de US$ 15
    • Fico curioso sobre quais problemas você teve com o Pi-hole
      Minha instância rodou por anos sem nenhum problema, e há cerca de um ano migrei para o AdGuard Home porque queria rodá-lo em uma máquina OPNSense
      Configurei VPN WireGuard automática nos dispositivos para que se conectem via VPN à minha rede de casa quando não estiverem conectados ao meu SSID; assim, o DNS local também funciona remotamente
    • Gosto do NextDNS, mas há um problema bem grande no iPhone: quando ele está ativado, não consegue lidar com portais cativos
      É preciso lembrar de desligá-lo ao conectar em Wi-Fi de avião e similares, então acho difícil recomendar para amigos sem perfil técnico
    • No meu caso, o Pi-hole funcionou tão bem por tanto tempo que até esqueci o login, mas quando eu refizer a rede de casa em breve, pretendo reavaliar as opções
      Parece que agora há umas três candidatas
    • Não usei o NextDNS; usei o Pi-hole e agora estou rodando o AdGuard Home
      Se for para pagar US$ 20 por ano apenas por criptografia de DNS e bloqueio, talvez valha considerar subir para o Mullvad, que oferece não só bloqueio de anúncios via DNS, mas também anonimato de IP, tunelamento etc.
  • Recentemente dei uma olhada no Pi-hole e acabei escolhendo o AdGuard Home
    À primeira vista, a UI também era melhor e, no geral, parecia mais completo; para uma ferramenta tão polida, ele tem surpreendentemente bastante customização, como encaminhar consultas de domínios privados locais para um DNS interno
    Não tenho certeza de por que a AdGuard oferece isso de graça e talvez eu devesse investigar, mas por enquanto me pareceu uma opção de risco relativamente baixo
    É difícil exagerar o quanto a experiência de usar coisas como o app do NYTimes fica mais agradável quando os anúncios irritantes somem

    • É realmente excelente
      A função de DNS dividido tem todas as opções que dá para imaginar
      Achei que precisaria de um segundo servidor DNS por trás, mas consegui colocar todas as regras necessárias diretamente no AdGuard Home
      Ele também oferece suporte a upstreams DoT e DoH, algo que ainda não é comum em muitos roteadores domésticos
      Documentação: https://github.com/AdguardTeam/AdGuardHome/wiki/Configuratio...
    • A parte de ser gratuito também me deixou curioso
      Talvez eles configurem os próprios servidores DNS como upstream padrão e esperem que muita gente mantenha o padrão
      DNS é uma das melhores tecnologias para mineração de dados e venda de dados, então acho que é por isso que existem servidores DNS fáceis de memorizar como 8.8.8.8 ou 1.1.1.1
      Google e Cloudflare provavelmente não fazem isso apenas por boa vontade
      Ainda assim, a AdGuard afirma não vender dados de clientes
    • Depois de ampliar a base de usuários e conseguir usuários suficientes, eles também poderiam migrar para um modelo de licenciamento
    • Do meu ponto de vista, o fluxo é mais ou menos assim
      A pessoa lê a documentação, instala, faz funcionar bem e depois começa a se gabar para os amigos de que não há anúncios irritantes na rede de casa
      Então os amigos dizem: “instala para mim também”
      Mesmo que você consiga instalar, não dá para fazer a manutenção também, então você acaba dizendo: “em vez dessa complexidade, existe uma configuração simples baseada em app para a família inteira, que funciona direto por US$ 29 ao ano”
      Nessa noite, cinco amigos baixam o serviço e pagam por ele
      Acho que a filosofia das startups de tecnologia hoje em dia é parecida: ter um produto open source e construir um negócio comercial em cima dele
    • O Pi-hole também oferece suporte a encaminhamento condicional
  • A AdGuard é uma empresa russa com engenheiros russos, muitos desenvolvedores e funcionários trabalham em Moscou, e ela é registrada em Chipre
    Não é uma boa combinação, e eu evitaria por motivos de segurança

    • Isto é software open source
      A razão pela qual a MacPaw classifica software desenvolvido na Rússia como risco é que o governo pode acessar os dados a qualquer momento, mas isto é open source auto-hospedado
      O FSB não consegue acessar um servidor local apenas com uma ordem judicial qualquer
      Por isso, isso me parece mais russofobia do que uma preocupação legítima, e acho ainda mais inadequado porque sei em primeira mão o quanto desenvolvedores russos sofrem por causa das idiotices do próprio governo
    • Por ser open source, você pode verificar por conta própria
    • MacBooks também são feitos na China
  • Você também pode se interessar pelo py-hole
    Ele é feito apenas de um script Python e configuração do dnsmasq, roda no OpenWrt, é gratuito e o uso de CPU é praticamente zero
    https://github.com/time4tea-net/py-hole

  • Outro ponto positivo do AdGuard é que ele é oferecido como add-on do Home Assistant
    Como se integra ao restante do HA, você pode, por exemplo, colocar no dashboard um interruptor para ativar e desativar o bloqueio

    • O NextDNS também permite isso; acabei de configurar
  • AdGuard Home é excelente
    Usei Pi-hole por um tempo, mas tinha pequenos problemas com bastante frequência
    Não era nada grave, mas esse tipo de ferramenta só é realmente útil quando simplesmente funciona
    Na minha configuração com Pi, roda sem problemas com docker-compose[1], e uso um contêiner bacana chamado adguardhome-sync[2] para manter um segundo Pi como backup e sincronizar as configurações
    Agora não vejo anúncios na rede, e também é bem interessante ver quais dispositivos enviam solicitações de rastreamento/anúncios e em que quantidade
    1 - https://thesmarthomejourney.com/2021/05/24/adguard-pihole-dn...
    2 - https://thesmarthomejourney.com/2023/02/12/adguardhome-sync-...

    • O momento em que você realmente abre os olhos é quando começa a redirecionar as requisições DNS 53 para o seu servidor DNS e a bloquear DoT/DoQ/DoH
      Muitos dispositivos e apps tentam sair diretamente para servidores DNS hardcoded para rastreamento e segmentação de anúncios
  • Não sei se alguém aqui usa Technitium DNS
    É open source e gratuito, e funciona até em hardware mínimo
    Estou rodando em um Orange Pi 3 LTS
    https://technitium.com/dns/

    • Parece bom
      Diz que “Technitium DNS Server is an open source authoritative as well as recursive DNS server”, e fico me perguntando se Pi-hole ou AdGuard também são servidores DNS recursivos ou se são apenas bloqueadores
      Uso Pi-hole há muito tempo e estou tentando entender quais vantagens isso teria
    • Dá para adicionar listas de bloqueio de anúncios, então você obtém um DNS robusto e bloqueio de anúncios, e o YouTube deixa de ficar girando por problemas aleatórios de DNS
      Com um pouco de configuração, dá para fazer de graça
    • Estou rodando em um Pi 4 e estou satisfeito porque é simples de configurar e usar
      Não conhecia o AdGuard, mas, mesmo parecendo bom, não tenho muita vontade de experimentar
    • Uso há alguns anos e gosto
      Por ser baseado em .NET, também é cross-platform
      Se preferir esse caminho, há também uma imagem Docker
    • Não escolhi porque é escrito em C#/.NET e é relativamente novo; fui de Unbound
  • Há alguns comentários em geral positivos sobre o NextDNS, mas deixo este separado porque estou pensando em sair do NextDNS
    O motivo é que agora uso Mac/Safari e quero ativar o recurso “ocultar endereço IP dos rastreadores”, mas, quando ativo isso, começam a aparecer anúncios em sites que o NextDNS antes bloqueava
    Então tenho que desativar essa opção e não consigo usar o recurso da Apple
    No geral, os dois parecem não funcionar juntos, e há uma issue relacionada no site de ajuda do NextDNS
    https://help.nextdns.io/t/q6yq4xy/nextdns-stops-working-prop...
    Fico curioso se alguém sabe se isso também é um problema conhecido no AdGuard ou no Pi-hole

    • Se você está falando do iCloud Private Relay, esse é o comportamento esperado em bloqueadores de anúncios baseados em DNS
      Quando o relay está ativado, a conexão passa por proxy e não usa o servidor DNS da rede local
      É igual para Pi-hole, NextDNS ou AdGuard
    • Você está usando um produto que bloqueia anúncios e rastreadores e, ao mesmo tempo, usando outro produto para contornar isso e acessar anúncios e rastreadores, só que passando por um terceiro
      Não sei qual é o objetivo deste último
  • Parece que há um intervalo fixo de tempo que o HN consegue aguentar sem aparecer um post sobre Pi-hole ou AdGuard Home

    • Tenho uma tarefa recorrente no calendário a cada seis meses: HN: Pi-hole / AdGuard? ;-)
  • Bom
    De forma parecida, se você roda pfSense na rede, vale a pena conferir também o pfBlockerNG. Eu pessoalmente gosto bastante: https://docs.netgate.com/pfsense/en/latest/packages/pfblocke...