Há mais de um ano que uso o unbound como DNS resolver local. Esta é uma boa forma de poder abstrair a gestão dos servidores de DNS usados no meu portátil, sem ter de passar a vida a editar o /etc/resolv.conf
ou a lutar contra aplicações como o systemd-resolvconf e o network-manager.
A configuração ativa que tenho no unbound é a que se segue:
server:
access-control: 127.0.0.0/8 allow
access-control: ::1/128 allow
interface: ::
interface: 0.0.0.0
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes
aggressive-nsec: yes
cache-max-ttl: 14400
cache-min-ttl: 300
hide-identity: yes
hide-version: yes
minimal-responses: yes
prefetch: yes
qname-minimisation: yes
rrset-roundrobin: yes
use-caps-for-id: yes
verbosity: 0
tls-upstream: yes
tls-cert-bundle: /etc/ssl/certs/ca-certificates.crt
forward-zone:
name: "."
forward-tls-upstream: yes
forward-first: no # do NOT send direct
# Quad 9 DNS - default
forward-addr: 9.9.9.9@853#dns.quad9.net
forward-addr: 149.112.112.112@853#dns.quad9.net
forward-addr: 2620:fe::fe@853#dns.quad9.net
forward-addr: 2620:fe::9@853#dns.quad9.net
# Quad9 DNS - unfiltered
#forward-addr: 9.9.9.10@853#quad9.net
#forward-addr: 149.112.112.10@853#quad9.net
#forward-addr: 2620:fe::10@853#quad9.net
#forward-addr: 2620:fe::fe:10@853#quad9.net
# AdGuard DNS
#forward-addr: 94.140.14.140@853#dns-unfiltered.adguard.com
#forward-addr: 94.140.15.15@853#dns-unfiltered.adguard.com
#forward-addr: 2a10:50c0::1:ff@853#dns-unfiltered.adguard.com
#forward-addr: 2a10:50c0::2:ff@853#dns-unfiltered.adguard.com
# Cloudflare DNS
#forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com
#forward-addr: 1.1.1.1@853#cloudflare-dns.com
#forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com
#forward-addr: 1.0.0.1@853#cloudflare-dns.com
No entanto, já há algum tempo que tinha curiosidade em testar o AdGuardHome. A funcionalidade de adblocker interessou-me bastante e parece-me uma boa forma de impedir que alguns scripts de tracking cheguem, não só ao browser, mas às aplicações como o Discord e outras potencialmente problemáticas no que toca à privacidade.
Existe também uma funcionalidade que permite usar o AdGuardHome como servidor DHCP. Como pretendo utilizá-lo apenas no meu portátil, esta não me interessa. Quem tem um computador ou uma SoC para atribuir IPs na rede pode ter interesse nela, ao mesmo tempo que bloqueia algum tracking.
Instalação
Usar binário pré-compilado
O projeto tem releases binárias para além do código-fonte no Github. Sempre que uma nova versão é tagada, os binários para diferentes sistemas operativos e arquiteturas de hardware são colocados na secção de releases do repositório. A forma mais simples de usar o AdGuardHome é descarregar uma destas releases, descompactar e correr a aplicação como root.
sudo ./AdGuardHome
Usar estes binários não torna a ativação persistente. Para isso é necessário abrir um terminal, ir até à pasta onde está o binário e usar o comando sudo ./AdGuardHome -s install
. Ao fazeres isto, o binário é colocado em /var/lib/adguardhome
, o serviço do systemd é instalado e o seu estado passa a poder ser controlado pelo systemctl
se preferires este interface.
Sempre que sair uma versão nova, tens de a descarregar e voltar a correr o comando de instalação sudo ./AdGuardHome -s install
.
Compilar o código-fonte
A compilação do AdGuardHome pode ser feita de duas formas: usando o código-fonte de uma release específica ou a brach master do repositório git. Qualquer que seja a tua opção, deves garantir que todas as dependências estão instaladas. Tudo o que é necessário está no README.md.
Posto isto, basta apenas executar o make
na pasta do código-fonte.
Caso pretendas compilar apenas o binário para o teu sistema operativo e arquitetura específica, podes complementar o make
da seguinte forma:
make GOOS='linux' GOARCH='amd64'
No exemplo acima, o binário vai ser compilado para Linux e processadores x86_64. Se tiveres um rPI ou uma SoC idêntica, podes trocar amd64
por arm64
ou arm7
, por exemplo. O scripts/make/build-release.sh tem a listagem dos sistemas operativos e arquiteturas de hadware suportadas. Se quiseres dar uma vista de olhos, aquele é o ficheiro a consultar obrigatoriamente.
O binário criado fica na raiz da pasta com o código-fonte. Para o tornar persistente, tal como na opção anterior, é necessário usares o comando sudo ./AdGuardHome -s install
. Como no exemplo anterior, o binário é colocado em /var/lib/adguardhome
, o serviço do systemd é instalado e o seu estado passa a poder ser controlado pelo systemctl
se preferires este interface.
Sempre que atualizares o repositório para um commit mais recente, tens de recompilar e correr novamente o comando de instalação sudo ./AdGuardHome -s install
.
Configuração
A configuração do AdGuardHome é simples. Quando o abres pela primeira vez, dá-te o endereço para abrires no browser e mostra um assistente de configuração simples. Basta seguires os poucos passos do processo e ficas com os defaults, que deverão ser suficientes.
Se pretenderes mais listas de bloqueio, o interface web permite escolher várias pré-definidas e adicionar externas. Eu fiz um pequeno port da minha lista Antinónio para o AdGuardHome, se estiveres interessado.
É possível, contúdo, que tenhas de adicionar exceções à lista de bloqueios através do interface web da aplicação. Eu só fui forçado a fazê-lo uma vez depois de adicionar mais listas, apenas para não ter acesso bloqueado ao endereço das estatísticas deste blog, o goatcounter.com. A lista que contém o bloqueio barra tudo desse domínio.
Conclusão
Isto é uma introdução muito simples ao processo de instalação do AdGuardHome e assume que estás minimamente à vontade com um terminal. Se não for o teu caso, é melhor leres a documentação do projeto.
A imagem deste post é um screenshot da minha instalação do AdGuardHome e está disponível sob a licença Creative Commons (CC-BY-SA-4.0)