O mascote urso-polar da NordBastion em pé em um salão nórdico de pedra escura ao lado de um rack de servidores, uma pata erguida em direção a uma runestone holográfica ciano flutuante listando nomes de domínio, com quatro feixes de consulta se espalhando através de um portal rúnico rumo a três monólitos de servidor distantes e um quinto feixe barrado por um escudo âmbar em forma de círculo cortado, com a aurora visível pela janela ao fundo
Tutorial · Rede·15 min de leitura · 40 min prático

Seu próprio resolvedor DNS.
O único log que ninguém pensa em mudar de lugar.

Todo domínio que seus dispositivos consultam é uma linha com timestamp no arquivo de outra pessoa — do seu provedor de internet, ou de um resolvedor público gratuito. Seis passos para mudar esse arquivo para uma máquina que é sua: Unbound resolvendo a partir da raiz, AdGuard Home filtrando na frente, DNS criptografado com um certificado de verdade, e a porta 53 que nunca fica de frente para a internet. A máquina custa $3.90 por mês. Testado no Debian 12.

As seis etapas
  1. 01

    Formato

    Recursivo, não encaminhado

  2. 02

    Fechar

    Porta 53, antes de ela abrir

  3. 03

    Resolver

    Unbound, validando

  4. 04

    Filtrar

    AdGuard Home, DoH, DoT

  5. 05

    Alcançar

    Primeiro o túnel, depois os clientes

  6. 06

    Verificar

    Vazamentos, DNSSEC, uptime

Antes de começar · O que está vazando de fato

O DNS é o índice da sua vida. Por padrão, quem o guarda não é você.

Criptografe o disco, tunelize o tráfego, pague em Monero, cadastre-se sem e-mail — e depois deixe o laptop pedir a um resolvedor em que você nunca pensou para traduzir cada hostname que ele toca, uma consulta de cada vez, em claro, o dia todo. A busca de nomes é a parte da pilha que as pessoas protegem por último, e é a parte que produz o registro mais limpo do que alguém realmente faz.

Vale a pena ser preciso sobre o que esse registro contém, porque "o DNS vaza a sua navegação" é ao mesmo tempo verdadeiro e preguiçoso. Um log de consultas é uma lista de nomes de domínio com timestamps, atribuída ao endereço IP que perguntou. Não são as páginas que você lê, e geralmente nem é a URL exata. É algo mais discreto e, para traçar perfis, melhor: o formato de uma vida. O banco. O empregador. O aplicativo de namoro se conectando a cada quatro minutos. O site médico visitado uma única vez às 02:00. Os três domínios que só aparecem juntos porque pertencem ao mesmo aplicativo de mensagens. Ninguém precisa do conteúdo quando o índice já é bom assim.

Quatro partes podem guardar esse índice, e autogerenciar o move das duas primeiras para a quarta:

Setup Quem vê cada consulta que você faz Visível no fio Conjunto de anonimato
Resolvedor do provedor, texto claro (o padrão)Seu provedor de internet, pelo nome e pela contaTudo, para qualquer um no caminhoOs assinantes dele
Resolvedor público, criptografado (DoH/DoT)Aquela única empresa, ligada ao seu IPNada além do destinoMilhões
Seu próprio resolvedor, encaminhando para um upstreamO upstream que você escolheu — inalteradoNada além do destinoUm
Seu próprio resolvedor, recursando a partir da raizNinguém — cada zona vê só os próprios nomesNada além do destinoUm, num IP que não é você

A terceira linha é a que costuma pegar as pessoas. Instalar um resolvedor no seu próprio servidor e depois dizer a ele para encaminhar tudo para 1.1.1.1 muda exatamente uma coisa: suas consultas agora chegam à Cloudflare a partir de um endereço IP diferente. O log continua existindo, continua pertencendo a outra pessoa, e você ganhou uma máquina a mais para manter em troca de nada.

A última coluna é o custo honesto, e este guia volta a ela duas vezes. Um resolvedor usado por uma única casa é um resolvedor cujas consultas são inequivocamente daquela casa. O que faz a troca valer a pena é que o IP fazendo as perguntas é um servidor nórdico alugado sem nenhum documento de identidade por trás — não uma linha residencial com nome de assinante, nem uma conta de hyperscaler com cartão cadastrado. O conjunto de anonimato diminui; o que realmente se rompe é o vínculo com uma pessoa.

Passo 01 · Formato

Recursando, ou só retransmitindo? Só um dos dois vale o servidor.

Existem duas máquinas completamente diferentes escondidas atrás da frase "meu próprio servidor DNS", e quase todo tutorial constrói a errada. Decida isso antes de instalar qualquer coisa, porque é a diferença entre uma ferramenta de privacidade e um proxy para a política de privacidade de outra pessoa.

Um encaminhador pega a sua consulta e a repassa para outro resolvedor — normalmente Cloudflare, Google, Quad9 ou seu provedor de internet — e depois armazena em cache o que voltar. É simples, é rápido, e entrega todo o seu fluxo de consultas a um único terceiro. Todo guia que termina com "agora defina seu upstream como 1.1.1.1" construiu um destes.

Um resolvedor recursivo faz o trabalho ele mesmo. Para encontrar mail.example.com, ele pergunta a um servidor raiz quem cuida de .com, pergunta aos servidores de .com quem cuida de example.com, e então pergunta aos próprios nameservers de example.com pelo registro. Três ou quatro conversas curtas com três ou quatro operadores diferentes, nenhum dos quais sabe nada sobre os outros. Com a minimização de QNAME ativada, ele vai além: a raiz é consultada só sobre .com, e os servidores de .com só sobre example.com. O nome completo é revelado a exatamente uma parte — a que hospeda o nome, que de qualquer forma ia receber sua conexão trinta milissegundos depois.

Propriedade Unbound, recursivo Qualquer encaminhador AdGuard Home sozinho
Uma única parte vê cada consultaNãoSimSim — o upstream dele
DNSSEC validado localmenteSimConfiado a partir do upstreamConfiado a partir do upstream
Listas de bloqueio e regras por dispositivoSó via zonas locaisDepende do daemonSim, com interface web
Escutas DoH / DoT para clientesDoT nativamente, DoH via proxyDepende do daemonOs dois, nativamente
Latência de inicialização a frio3–4 idas e voltas1 ida e volta1 ida e volta
Resposta certaA metade da pilha que cuida da privacidadeSó como um fallback deliberadoA metade de filtragem, na frente

As duas colunas da direita não são concorrentes — são as duas metades da mesma construção. O AdGuard Home é dono da porta 53, aplica as listas de bloqueio e termina os transportes criptografados; o Unbound fica atrás dele, em loopback, e faz a resolução. Nenhuma das metades faz bem o trabalho da outra, e a cadeia inteira usa cerca de cem megabytes de RAM.

Se você levar só uma coisa desta página, leve esta: um resolvedor que encaminha para um provedor DNS público não tornou o seu DNS privado. Ele só moveu o log um salto adiante e acrescentou um servidor à sua lista de manutenção. A recursão é o ponto inteiro da coisa.

Passo 02 · Fechar

Feche a porta 53 antes que qualquer coisa a abra. Este não é o passo cuidadoso. É o necessário.

Peça a máquina primeiro. No painel: Pedido → VPS → Sentinel, imagem Debian 12, no bastion mais próximo dos dispositivos que vão usá-lo — Helsinki, Stockholm, Oslo ou Reykjavík. Não é preciso endereço de e-mail para abrir a conta, e a fatura é quitada em Monero, Bitcoin, Lightning ou qualquer outro ativo suportado, o que importa aqui mais do que de costume: todo o valor de um resolvedor pessoal depende de o endereço IP que faz as perguntas não ser rastreável até um nome.

Depois, passe pelo checklist de hardenização da primeira hora — só chaves SSH, sem login por senha, atualizações automáticas — porque tudo o que vem abaixo pressupõe uma máquina que ainda não está comprometida.

Leia isto antes de iniciar o daemon

Um resolvedor recursivo que responde à internet inteira se chama resolvedor aberto, e ele vai ser encontrado por scanners que varrem a internet inteira dentro de horas depois que a porta abrir. O DNS roda sobre UDP, endereços de origem UDP são triviais de forjar, e uma consulta de 60 bytes pode gerar uma resposta dezenas de vezes maior — então um resolvedor aberto é um amplificador gratuito para um ataque de negação de serviço contra terceiros. A sequência que se segue é sempre a mesma: o tráfego começa, as denúncias de abuso chegam, e o IP recebe um null route. É a forma mais comum de um primeiro servidor DNS acabar. Duas regras evitam isso por completo: recuse por padrão na configuração do resolvedor, e nunca permita 53/udp a partir de 0.0.0.0/0 no firewall.

Por isso o firewall vem primeiro, enquanto ainda não há nada escutando. As regras abaixo pressupõem um túnel WireGuard em 10.8.0.0/24 — se você ainda não construiu um, o guia de WireGuard linkado no fim desta página é um desvio de quinze minutos, e é o transporte no qual este design inteiro fica mais confortável.

ufw default deny incoming
ufw allow 22/tcp                      # or your moved SSH port
ufw allow 51820/udp                   # WireGuard
ufw allow in on wg0 to any port 53 proto udp
ufw allow in on wg0 to any port 53 proto tcp
ufw enable

# DNS is NOT opened to the world. Confirm it:
ufw status numbered | grep 53

Note o que está faltando de propósito: não há regra que abra a porta 53 na interface pública. A porta 53 existe só em wg0 e em loopback. Se mais tarde você adicionar DNS sobre TLS ou DNS sobre HTTPS, isso é TCP 853 e TCP 443, são autenticados por certificado, e recebem suas próprias regras no passo 05 — a porta UDP em texto claro continua fechada de qualquer forma.

Agora limpe a porta. No Ubuntu — e em qualquer Debian em que alguém tenha ativado isso — o systemd-resolved já está escutando em 127.0.0.53:53, e o Unbound vai se recusar a iniciar com um erro de bind que as pessoas passam vinte minutos interpretando errado. Verifique primeiro, depois desative só o stub listener, mantendo o systemd-resolved como a interface local do lado do cliente:

ss -lunp 'sport = :53'                # who owns UDP/53 right now?

mkdir -p /etc/systemd/resolved.conf.d
cat > /etc/systemd/resolved.conf.d/no-stub.conf <<'EOF'
[Resolve]
DNSStubListener=no
EOF
systemctl restart systemd-resolved
ss -lunp 'sport = :53'                # should now be empty

Num Debian 12 limpo, o primeiro comando não imprime nada e não há nada a fazer. Rode mesmo assim — leva um segundo, e a alternativa é diagnosticar um "address already in use" contra um serviço que você nem sabia que estava rodando.

Passo 03 · Resolver

Unbound, a partir da raiz. Um pacote, um arquivo de configuração, nenhum upstream.

O Unbound é um resolvedor validador, recursivo e com cache, da NLnet Labs. Ele está empacotado em todo lugar, é o que boa parte da internet já roda, e, pronto para uso, ele faz recursão — você tem que se esforçar de propósito para transformá-lo num encaminhador. Instale-o junto com o pacote de root hints para que ele saiba onde estão os servidores raiz sem precisar buscar uma lista em lugar nenhum:

apt update && apt install -y unbound dns-root-data
unbound -V | head -2

O pacote dns-root-data instala as root hints em /usr/share/dns/root.hints e a âncora de confiança raiz do DNSSEC em /usr/share/dns/root.key, e mantém as duas atualizadas pelo canal normal de pacotes. Essa é a forma chata e correta de consegui-las; baixar o root.hints de uma URL num cron job é a forma que, mais cedo ou mais tarde, falha em silêncio.

/etc/unbound/unbound.conf.d/nb-resolver.conf

server:
    # ---- Who may ask. Deny first, allow narrowly.
    interface: 127.0.0.1@5335
    interface: 10.8.0.1
    access-control: 0.0.0.0/0 refuse
    access-control: ::0/0 refuse
    access-control: 127.0.0.0/8 allow
    access-control: 10.8.0.0/24 allow

    # ---- Privacy of the recursion itself.
    qname-minimisation: yes
    qname-minimisation-strict: no
    hide-identity: yes
    hide-version: yes
    rrset-roundrobin: yes

    # ---- DNSSEC. The anchor is maintained by the dns-root-data package.
    auto-trust-anchor-file: "/var/lib/unbound/root.key"
    root-hints: "/usr/share/dns/root.hints"
    harden-dnssec-stripped: yes
    harden-glue: yes
    harden-below-nxdomain: yes
    harden-large-queries: yes
    harden-short-bufsize: yes
    aggressive-nsec: yes
    val-clean-additional: yes

    # ---- Do not be a reflector, even by accident.
    refuse-any: yes
    ratelimit: 1000
    ip-ratelimit: 200
    edns-buffer-size: 1232

    # ---- Cache. This is where the 4 GB actually earns its keep.
    msg-cache-size: 128m
    rrset-cache-size: 256m
    cache-min-ttl: 60
    cache-max-ttl: 86400
    prefetch: yes
    prefetch-key: yes
    serve-expired: yes
    serve-expired-ttl: 3600

    # ---- Never chase a name that has no business being on the internet.
    private-address: 10.0.0.0/8
    private-address: 172.16.0.0/12
    private-address: 192.168.0.0/16
    private-address: 169.254.0.0/16
    private-address: fd00::/8
    private-address: fe80::/10

    num-threads: 2
    so-reuseport: yes
    verbosity: 0
    logfile: ""

remote-control:
    control-enable: yes
    control-interface: /run/unbound.ctl

Quatro dessas linhas estão fazendo o trabalho de verdade e merecem uma frase cada uma.

  • 01access-control: 0.0.0.0/0 refuse — a resposta padrão para a internet é "não". Tudo depois dela é uma exceção que você escreveu de propósito. Essa única linha já é o que barra a história de amplificação do passo 02 antes mesmo de o firewall precisar agir.
  • 02qname-minimisation: yes — os servidores raiz são consultados sobre .com, não sobre o hostname completo. RFC 9156, ativado por padrão nas versões atuais do Unbound, e o motivo pelo qual um resolvedor recursivo vaza menos do que o diagrama sugere. Deixe o modo estrito desligado: um pequeno número de zonas malconfiguradas ainda quebra com ele ativado.
  • 03refuse-any: yes — consultas ANY retornam a maior resposta possível para a menor pergunta possível, que é exatamente o que um ataque de amplificação quer. Nada legítimo precisa delas.
  • 04serve-expired: yes — quando um servidor autoritativo está inalcançável, entregue a resposta vencida e renove em segundo plano, em vez de falhar. Essa é a configuração que impede que uma queda distante pareça, para todo mundo em casa, a internet ter caído.

Note as duas escutas. O loopback na porta 5335 é o que o AdGuard Home vai usar no próximo passo; 10.8.0.1 é o endereço do túnel, para que clientes na VPN possam consultar o Unbound diretamente caso você decida pular a camada de filtragem. Se você ainda não está rodando o WireGuard, remova por enquanto essa segunda linha de interface — o Unbound não vai iniciar com um endereço que não existe na máquina.

Inicie-o e prove que funciona:

unbound-checkconf
systemctl restart unbound && systemctl enable unbound

apt install -y dnsutils
dig @127.0.0.1 -p 5335 nordbastion.com +short

# DNSSEC: the first must come back with the "ad" flag set,
# the second must FAIL — its signatures are deliberately broken.
dig @127.0.0.1 -p 5335 dnssec-tools.org +dnssec | grep -E 'flags:|status:'
dig @127.0.0.1 -p 5335 dnssec-failed.org  | grep 'status:'

A flag ad na primeira resposta significa que o Unbound conferiu a cadeia de assinaturas desde a raiz até o registro, e ela se sustentou. O SERVFAIL na segunda significa que a validação rejeitou uma resposta adulterada em vez de repassá-la a você. Se a segunda retornar um endereço em vez disso, a validação não está ativa, e a âncora de confiança é a primeira coisa a checar.

Passo 04 · Filtrar

AdGuard Home na frente. Listas de bloqueio, regras por dispositivo, e as escutas criptografadas.

Este passo é opcional em sentido estrito — o Unbound sozinho já é um resolvedor privado — e quase todo mundo o quer mesmo assim. O AdGuard Home te dá listas de bloqueio, políticas por cliente, um log de consultas legível enquanto você está depurando e, mais utilmente, escutas nativas de DNS sobre TLS e DNS sobre HTTPS, para que celulares e navegadores possam falar com o seu resolvedor a partir de redes onde uma VPN não é prática.

O arranjo é uma cadeia, e acertar as portas é todo o truque: o AdGuard Home é dono da 53 e fica de frente para os clientes, o Unbound fica em 127.0.0.1:5335 e fica de frente para a internet. Mais nada na máquina escuta na 53.

curl -fsSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
# Web interface: http://<vps>:3000 — reach it over the SSH tunnel below,
# never by opening 3000 to the internet.
ssh -N -L 3000:127.0.0.1:3000 root@<vps>

Faça o assistente de primeira execução por esse túnel. Configure a escuta de administração para 127.0.0.1 ou para o endereço do túnel, nunca para 0.0.0.0, e dê a ela uma senha longa — essa interface pode reescrever cada nome que a sua rede resolve, o que a torna tão sensível quanto o próprio resolvedor.

Depois defina exatamente um upstream: em Settings → DNS settings, limpe a lista padrão e digite a sua instância do Unbound. Uma linha, nada mais. Se um resolvedor público ficar naquela caixa, tudo o que foi feito no passo 01 é desfeito.

127.0.0.1:5335

Deixe "Solicitações paralelas" desativado — com um único upstream isso só duplica o tráfego, sem fazer mais nada — e desative "Usar resolvedores DNS reversos privados", a menos que você realmente rode uma zona interna. Defina os servidores de bootstrap como algo em que você confia; eles são usados só para resolver os hostnames dos servidores upstream, e, com um upstream de IP puro, eles nunca chegam a ser consultados.

Listas de bloqueio: comece enxuto. O instinto é ativar tudo na página de listas e curtir o contador. Resista a isso. Cada lista é um conjunto de julgamentos de valor feitos por outra pessoa sobre o que os seus dispositivos podem ou não acessar, e as falhas são silenciosas e confusas — uma página carregando pela metade, um botão que não faz nada, um aplicativo de banco que se recusa a abrir. Comece com o filtro padrão da AdGuard DNS, ou com um único agregado bem mantido, como o OISD, conviva com ele por duas semanas, e só então adicione mais. Mantenha uma lista de permissão e use-a sem culpa.

O log de consultas é a parte incômoda

Você acabou de construir uma máquina cujo propósito é impedir que outra pessoa mantenha uma lista de cada nome que seus dispositivos resolvem — e a primeira coisa que o AdGuard Home faz é manter exatamente essa lista, ativada por padrão, por noventa dias. Isso é genuinamente útil enquanto você está ajustando as listas de bloqueio, e é o arquivo mais sensível do servidor. Decida deliberadamente: 24 horas são suficientes para responder "o que esse dispositivo acabou de pedir?", zero é a configuração honesta depois que o ajuste estiver feito, e noventa dias é uma decisão que ninguém deveria tomar simplesmente deixando o padrão como está. Settings → General → Query log, e defina a retenção de estatísticas já que você está lá.

Aponte o firewall para o novo arranjo — o AdGuard Home agora é dono da porta 53 na interface do túnel, e o Unbound só é alcançável em loopback. Nada muda na interface pública: ela continua sem nenhum DNS nela.

Passo 05 · Alcançar

Duas formas de entrar. O túnel é a boa; o DNS criptografado é a portátil.

Um resolvedor que ninguém consegue alcançar não serve para nada, e um resolvedor que todo mundo consegue alcançar é o modo de falha do passo 02. Existem exatamente duas boas respostas, e a maioria das pessoas acaba rodando as duas — o túnel em casa e no laptop, o DNS criptografado no celular e em redes onde o UDP é filtrado.

Opção A — pelo WireGuard. A melhor das duas, e o motivo de este guia continuar apontando para o guia de WireGuard. A porta 53 continua invisível para a internet, a consulta em si nunca atravessa uma rede não confiável em forma alguma, e não há certificado para renovar. Se o VPS já é a sua saída de VPN, isso é uma linha na configuração de cada peer:

# On the client, in the [Interface] section of the peer config:
DNS = 10.8.0.1

Uma sutileza que costuma pegar as pessoas: no Linux, o wg-quick define esse endereço através do resolvconf ou do systemd-resolved, e, se nenhum dos dois estiver instalado, ele silenciosamente não faz nada enquanto o túnel sobe perfeitamente. Verifique com resolvectl status ou lendo /etc/resolv.conf depois que o túnel subir — um túnel funcionando com o resolvedor antigo ainda configurado é exatamente o vazamento que todo este exercício busca evitar.

Opção B — DNS sobre TLS e DNS sobre HTTPS. Necessário quando o dispositivo não pode estar sempre no túnel. Os dois são autenticados por certificado, o que significa um hostname: aponte um registro A para o VPS, e então deixe o AdGuard Home segurar o certificado diretamente ou o coloque atrás de um proxy reverso que já termina o TLS para você. As escutas são 853/tcp para DoT e 443/tcp para DoH.

ufw allow 853/tcp                     # DNS-over-TLS
ufw allow 443/tcp                     # DNS-over-HTTPS
# 53/udp is still NOT open on the public interface. It never will be.
ufw status

Dê ao endpoint de DoH um caminho que não seja adivinhável — o AdGuard Home permite servi-lo em /dns-query/<random>, e um caminho diferente por pessoa significa que o acesso pode ser revogado uma pessoa de cada vez, sem rotacionar nada para todo o resto. Isso não é autenticação em nenhum sentido forte, mas evita que uma escuta pública seja, na prática, um resolvedor aberto com passos a mais.

Cliente Onde fica a configuração Transporte que ele usa
Android 9 e posteriorConfigurações → Rede → DNS privado → hostnameSomente DNS sobre TLS
iOS e macOSUm perfil de DNS .mobileconfig assinadoDoH ou DoT, em todo o sistema
Windows 11Configurações → Rede → Atribuição de servidor DNSDoH, por adaptador
FirefoxConfigurações → Privacidade → DNS sobre HTTPS → PersonalizadoDoH, somente no navegador
Roteador (rede inteira)DNS da WAN, ou opção 6 do DHCPDNS simples — então, tunele-o

A linha do roteador é a que merece atenção. Distribuir seu resolvedor via DHCP cobre todos os dispositivos da casa de uma vez, incluindo os que não têm tela de configurações — mas o salto do roteador até o VPS passa a ser DNS simples pela internet aberta, que é exatamente o que você se propôs a evitar. Rode o túnel no próprio roteador, ou aceite que a última milha fica sem criptografia e deixe a recursão ser o ganho.

Uma última configuração que vale a pena conhecer: um navegador com DNS sobre HTTPS ativado vai usar o próprio resolvedor e ignorar silenciosamente a configuração do sistema, túnel ou não. Firefox e Chrome vêm com isso ativado por padrão em algumas regiões. Ou aponte o navegador também para o seu endpoint, ou desative o DoH dele para que siga o sistema operacional.

Passo 06 · Verificar

Quatro verificações. Três delas falham na primeira tentativa de alguém.

1. Está aberto para a internet? Rode isto a partir de uma máquina que não está no túnel — um celular em dados móveis, outro VPS, qualquer coisa. Um timeout é a resposta correta e desejável. Uma resposta de verdade significa que todo scanner na internet também vai encontrá-lo, e você deve voltar ao passo 02 imediatamente.

dig @<public-ip-of-vps> +timeout=3 example.com
# Expected: ";; connection timed out; no servers could be reached"

2. O dispositivo está realmente usando o resolvedor? Essa é a verificação que mais falha, e a falha é invisível: o túnel está de pé, a configuração parece certa, e o sistema operacional continua perguntando ao resolvedor que o café entregou via DHCP. Pergunte ao próprio resolvedor quem ele acha que você é, e depois confirme do outro lado.

# On the client — which resolver is the system actually using?
resolvectl status | grep -A2 'Current DNS'        # Linux
scutil --dns | grep nameserver                    # macOS

# On the server — does the query actually arrive?
tail -f /var/log/syslog | grep -i unbound &
unbound-control stats_noreset | grep total.num.queries

Depois carregue uma das páginas públicas de teste de vazamento de DNS a partir do dispositivo e leia o resultado. Se ela nomear o seu provedor de VPS, o caminho está certo. Se ela nomear o seu provedor de internet ou um grande resolvedor público, alguma coisa antes do túnel ainda está respondendo.

3. A validação está realmente ativa? Repita os dois comandos dig do passo 03, mas desta vez pela cadeia inteira — cliente, AdGuard Home, Unbound — em vez de direto contra o Unbound. Um nome com assinatura quebrada precisa falhar aqui também. Se o AdGuard Home tiver ficado com um segundo upstream em algum lugar das configurações, é aqui que isso aparece.

4. O cache está fazendo o trabalho dele? Depois de um dia de uso normal, a taxa de acerto deve ficar em algum lugar entre setenta e noventa por cento. Muito mais baixa geralmente significa que o cache está pequeno demais ou que cache-min-ttl está sendo ignorado porque tudo upstream tem um TTL muito curto; muito mais alta numa rede movimentada é um sinal feliz de que o prefetch está funcionando.

unbound-control stats_noreset | grep -E 'total.num.(queries|cachehits)'
# hit rate = cachehits / queries

E depois, as duas decisões operacionais. Primeiro: o que acontece quando essa máquina reinicia. Todo dispositivo apontado para ela perde a resolução de nomes, o que todo mundo na casa vai relatar como a internet estar quebrada. Configure o serviço para reiniciar em caso de falha e para iniciar no boot, depois reinicie o VPS uma vez de propósito e observe-o voltar. Segundo: um fallback. Ou liste um resolvedor público como secundário nos seus clientes e aceite que essas consultas saem do seu controle durante uma queda, ou rode uma segunda instância num segundo VPS em outro bastion. As duas opções são defensáveis. Descobrir a resposta às 23:00 de um domingo não é.

systemctl enable unbound AdGuardHome
systemctl show unbound -p Restart -p RestartUSec
reboot        # then, from a client: dig nordbastion.com +short
A parte honesta · O que isto não faz

Isto fecha um canal. Outros quatro continuam abertos.

Um resolvedor privado é uma melhoria real, e não é uma capa de invisibilidade. Quem vender isso como uma capa está vendendo outra coisa. Aqui está a lista do que continua visível depois que tudo acima estiver feito, porque conhecer a forma da exposição que resta é a diferença entre uma defesa de verdade e um cobertor de conforto.

A conexão ainda acontece. Um milissegundo depois da consulta, o seu dispositivo abre uma conexão TCP para o endereço que acabou de descobrir. Quem estiver observando a sua linha vê esse endereço. Para um site com IP próprio, o endereço é o site. O DNS criptografado remove a pergunta; ele não remove a resposta.

O handshake TLS geralmente entrega o nome do site. O Server Name Indication é enviado em claro no início de quase toda conexão HTTPS, então um observador passivo lê o hostname de qualquer forma. O Encrypted Client Hello corrige isso e está implantado de forma desigual — onde tanto o navegador quanto o site o suportam, o nome fica escondido, e onde não suportam, não fica. Não presuma que ele está ativo.

O operador do resolvedor agora é você, e você é uma pessoa só. Todo servidor autoritativo com quem o seu resolvedor fala vê um único endereço IP perguntando sobre a zona dele. Espalhado por muitas zonas, esse IP tem um padrão característico, e o padrão é uma casa. Esse é o custo de conjunto de anonimato do primeiro capítulo, e a única coisa que o suaviza é o IP não ser rastreável até um nome — um VPS sem KYC pago em cripto — e, idealmente, ser o mesmo IP de onde o seu tráfego já sai.

O provedor pode ver os pacotes, como sempre. O VPS roda no hardware de alguém, no datacenter de alguém. A NordBastion não inspeciona o tráfego dos clientes, e o relatório de transparência e o warrant canary descrevem o que aconteceria se fôssemos questionados — mas a afirmação arquitetural honesta é que uma máquina que você aluga é uma máquina que outra pessoa pode alcançar fisicamente. O que autogerenciar muda é que não há log de consultas em nível de produto, nem pipeline de analytics, nem política de privacidade que possa ser alterada; há só um processo guardando um cache na RAM, configurado por você, numa jurisdição que você escolheu de propósito.

O que você comprou de fato, com precisão: a fonte mais rica e mais barata de dados comportamentais sobre você deixou de ser coletada por uma parte cujo modelo de negócio envolve coletar exatamente isso. Essa é uma afirmação estreita, e é uma afirmação real. Nada nesta página substitui o Tor quando o modelo de ameaça pede Tor — e, para isso, o guia de serviço onion abaixo é a próxima leitura honesta.

Dimensionamento · O que pedir

O DNS é pequeno. Peça pensando no que mais vai morar na máquina.

Nível Mensal Recursos O que ela roda com folga
Sentinel$3.902 vCPU · 4 GB · 120 GBResolvedor + WireGuard para uma casa. A resposta certa.
Garrison$7.904 vCPU · 8 GB · 240 GBO mesmo, mais um Vaultwarden, um SearXNG e um destino de backup
Ravelin$16.908 vCPU · 16 GB · 480 GBUma equipe pequena, vinte e cinco peers de túnel, outros serviços além disso
Um segundo Sentinel$3.90Em outro bastionO resolvedor de fallback, para que uma queda não seja uma queda de internet

Nada nesta tabela é escolhido em função do DNS. Um resolvedor para trinta dispositivos usa algumas centenas de megabytes de cache e uma fração de um núcleo, e movimenta algumas centenas de megabytes de tráfego por mês. Escolha o plano em função dos peers de WireGuard, dos outros serviços e do disco — e deixe o resolvedor andar de carona de graça.

Notas de campo · Seis armadilhas

Seis formas de isso dar errado. Cinco delas são silenciosas.

Armadilha 01 · Ruidosa

O resolvedor aberto, e o null route uma semana depois

Uma regra de firewall a mais, ou uma linha de access-control deixada em allow. Scanners encontram a porta em poucas horas, o tráfego de amplificação começa, a denúncia de abuso chega, o IP apaga. Recuse por padrão, permita só o túnel, e teste a partir de fora da rede.

Armadilha 02 · Inútil

Um resolvedor privado encaminhando para um público

AdGuard Home instalado, upstream deixado na lista padrão, tudo funcionando lindamente — e o log de consultas continuando a se acumular numa empresa cujo nome está na caixa de configurações. Defina um único upstream, e faça dele o seu Unbound.

Armadilha 03 · Invisível

O túnel está de pé e o dispositivo nunca te perguntou

O wg-quick não conseguiu enviar a configuração de DNS porque o resolvconf não está instalado, ou um navegador está fazendo o próprio DNS sobre HTTPS. Tudo parece correto, e toda consulta continua indo para a rede em que você está sentado. Verifique pelo lado do resolvedor, não pela tela de configurações do cliente.

Armadilha 04 · Confusa

A lista de bloqueio quebrou o aplicativo do banco, três semanas depois

Nada se anuncia como uma falha de DNS — uma página carrega pela metade, um botão não faz nada. Seis listas agressivas ativadas no primeiro dia tornam isso impossível de rastrear. Comece com uma, adicione devagar, mantenha uma lista de permissão, e mantenha log de consultas suficiente para responder à pergunta.

Armadilha 05 · Irônica

Noventa dias de log de consultas, mantidos por padrão

A construção inteira existe para impedir que alguém mantenha essa lista, e a camada de filtragem a mantém pronta para uso, em disco, por três meses. Defina a retenção de propósito — 24 horas enquanto estiver ajustando, zero depois — e lembre-se de que isso cobre todo mundo na rede, não só você.

Armadilha 06 · Repentina

Um reinício, e a casa fica sem internet

Um resolvedor vira infraestrutura no momento em que outras pessoas passam a depender dele. Ative os dois serviços no boot, defina Restart=on-failure, reinicie uma vez de propósito para provar isso, e decida o fallback antes de precisar dele, não durante.

FAQ · DNS Privado

Perguntas, respondidas.

Onze perguntas que surgem enquanto você constrói isto — incluindo as duas que decidem se vale a pena construir isto, para começo de conversa.

Rodar meu próprio resolvedor é realmente mais privado do que usar Quad9 ou Cloudflare?

É diferente, e é melhor no sentido que mais importa — mas a resposta honesta tem duas metades. O que você ganha: com um resolvedor recursivo, nenhuma parte isolada vê o seu fluxo completo de consultas. Os servidores raiz sabem apenas que alguém perguntou sobre .com, os servidores de .com sabem que alguém perguntou sobre example.com, e só o operador de example.com aprende o nome completo — e nenhum deles vê os próximos mil nomes que você consultar. Um resolvedor público, em contraste, vê cada uma delas, em ordem, com timestamps, para sempre, e a política de privacidade dele é a única coisa entre essa lista e outra pessoa. O que você perde: um resolvedor pessoal tem um conjunto de anonimato de um. As consultas que saem de um grande resolvedor público se misturam com as de milhões de outras pessoas; as que saem do seu são inequivocamente suas. Essa troca vale a pena quando o IP do resolvedor não está ligado à sua identidade — que é exatamente o que um VPS sem KYC pago em cripto oferece, e exatamente o que um hyperscaler com seu cartão cadastrado não oferece. Coloque o resolvedor atrás do mesmo VPS de onde já sai a sua VPN e o conjunto de anonimato não diminui em nada, porque esse IP já estava fazendo sua navegação.

Autogerenciar o DNS vai deixar minha navegação mais rápida?

Um pouco mais lenta na primeira consulta de um nome, visivelmente mais rápida em cada repetição, e no geral fica mais ou menos empatado. Um resolvedor recursivo começando frio precisa percorrer a cadeia de delegação — raiz, TLD, autoritativo — o que são três ou quatro idas e voltas em vez da única ida e volta até um resolvedor público que já tinha a resposta em cache da consulta de outra pessoa. Assim que seu cache esquenta, o que para uma casa leva cerca de um dia, os nomes mais comuns são servidos a partir da RAM em bem menos de um milissegundo e você sai na frente. Ative o prefetch para que os registros populares sejam renovados antes de expirar, e o caso de partida a frio praticamente desaparece. O único lugar em que você pode realmente perder desempenho é a geolocalização de CDN: grandes resolvedores públicos passam uma versão truncada da sua localização de rede para o servidor autoritativo (EDNS Client Subnet) para que a CDN escolha uma borda próxima. O Unbound não a envia, por design. Se o seu resolvedor está na mesma região que você, isso não muda nada de mensurável. Se o resolvedor está em Reykjavík e você está em Singapura, algumas CDNs vão te entregar uma borda europeia e você vai sentir isso.

Eu preciso de um nome de domínio para isso?

Só para transporte criptografado. DNS simples por um túnel WireGuard não precisa de domínio, nem de certificado, nem de qualquer exposição pública — o resolvedor escuta num endereço privado como 10.8.0.1 e responde só aos peers do túnel. Essa configuração é ao mesmo tempo a mais simples e a mais privada deste guia. Você precisa de um domínio a partir do momento em que quiser DNS sobre TLS ou DNS sobre HTTPS, porque os dois são autenticados por um certificado, e um certificado é emitido para um nome. Essa é a configuração a escolher quando os dispositivos não podem estar sempre na VPN — um laptop de trabalho, um celular numa rede que bloqueia UDP, um familiar que não vai manter um túnel. Se você registrar um domínio, registre-o em algum lugar que não exija a mesma identidade que você teve o cuidado de proteger em outros lugares, e mantenha a privacidade do WHOIS ativada.

Unbound ou AdGuard Home — eu preciso dos dois?

Eles resolvem problemas diferentes, e a dupla não é redundante. O Unbound é o resolvedor: ele percorre o DNS a partir da raiz, valida assinaturas DNSSEC e armazena os resultados em cache. O AdGuard Home não é um resolvedor de jeito nenhum — é uma camada de filtragem com interface web e escutas criptografadas, que encaminha para um upstream tudo o que não bloqueia. Rode o AdGuard Home sozinho e o upstream dele é um resolvedor público, o que coloca todo o seu fluxo de consultas de volta no log de outra pessoa. Rode o Unbound sozinho e você tem um resolvedor genuinamente privado, sem listas de bloqueio, sem regras por dispositivo e sem interface. Encadeados — AdGuard na porta 53, Unbound em 127.0.0.1:5335 como seu único upstream — você tem filtragem e transporte criptografado na frente de um resolvedor que responde a partir da raiz. Se você quer a menor superfície de ataque possível e não se importa com bloqueio de anúncios, o Unbound sozinho é uma resposta completamente respeitável, e é a metade da pilha que de fato entrega a privacidade.

O que é um resolvedor aberto, e por que isso é um problema tão grande?

Um resolvedor aberto é um resolvedor recursivo que responde a consultas vindas de qualquer endereço de origem na internet. É um problema grande porque o DNS roda sobre UDP, endereços de origem UDP são trivialmente forjáveis, e uma consulta pequena pode gerar uma resposta grande. Um atacante manda ao seu servidor uma consulta de 60 bytes com o endereço de uma vítima forjado como origem; seu servidor obedientemente manda à vítima uma resposta dezenas de vezes maior. Multiplique isso por milhares de resolvedores abertos e você tem um DDoS de reflexão e amplificação, com o seu servidor como uma das armas. Na prática a sequência é rápida e previsível: scanners que varrem a internet inteira encontram uma porta 53 recém-aberta em poucas horas, o tráfego começa, as denúncias de abuso chegam, e o provedor aplica um null route no IP para proteger a própria rede. Isso não é hipotético e não é raro — é a forma mais comum de um primeiro servidor DNS acabar mal. A correção custa uma regra de firewall e uma linha de configuração: recusar por padrão, permitir só o seu túnel.

O DNS criptografado esconde do meu provedor de internet quais sites eu visito?

Ela esconde a consulta, não a visita. DNS sobre TLS e DNS sobre HTTPS significam que o seu provedor de internet não vê mais uma pergunta em texto claro dizendo example.com. O que ele ainda vê é a conexão que você faz um milissegundo depois: o endereço IP de destino e — a menos que as duas pontas suportem Encrypted Client Hello — o nome do servidor no handshake TLS, em claro. Para um site com IP dedicado, o endereço sozinho já o identifica; para um site atrás de uma CDN grande, o endereço é compartilhado e o SNI é quem entrega. Então o DNS criptografado aumenta o custo do registro passivo e remove a superfície de vigilância mais fácil e barata que existe, mas não torna a sua navegação invisível. Se o modelo de ameaça é o seu provedor de internet ou uma rede hostil vendo tudo, a ferramenta para isso é o túnel — o DNS criptografado fecha o vazamento que uma VPN sozinha ainda pode ter, quando o sistema operacional continua usando o resolvedor do provedor fora do túnel.

De que tamanho o VPS precisa ser?

Bem menor do que as pessoas esperam. Respostas DNS têm centenas de bytes e o trabalho por consulta é uma busca em hash, então o resolvedor de uma casa ou de uma equipe pequena fica ocioso quase o tempo todo. Um Sentinel — 2 vCPU, 4 GB, $3.90 por mês — atende dezenas de dispositivos sem a média de carga sair do zero, e a maior parte desses 4 GB fica disponível para gastar em cache, que é o único recurso que realmente melhora a experiência. Dê ao Unbound algumas centenas de megabytes de cache de mensagens e de RRsets e sua taxa de acerto vai ficar na faixa de oitenta a noventa por cento. O motivo para aumentar o tamanho nunca é o DNS: é que a mesma máquina também está terminando o seu túnel WireGuard, ou rodando um Vaultwarden, ou guardando um repositório de backup. Largura de banda não é problema — um resolvedor doméstico movimentado usa algumas centenas de megabytes por mês.

O que acontece quando o VPS reinicia ou o resolvedor cai?

Todo dispositivo configurado para usá-lo para de resolver nomes, o que as pessoas que os usam vão descrever como "a internet caiu". Esse é o custo operacional real de autogerenciar o DNS, e ele merece uma decisão, não uma descoberta. Três defesas, em ordem crescente de esforço. Configure um resolvedor secundário nos seus clientes — um público, como Quad9 ou dns0.eu — e aceite que, durante uma queda, essas consultas saem do seu controle; é o que a maioria das pessoas deveria fazer. Ou rode uma segunda instância num segundo VPS em outro bastion e liste os dois, o que mantém tudo internamente ao preço de uma segunda máquina de $3.90. Ou, no túnel, rode um pequeno cache local em cada cliente para que uma queda curta seja invisível. O que você escolher, defina Restart=on-failure na unidade, ative-a na inicialização, e teste o reinício uma vez de propósito — um resolvedor que não volta sozinho sempre vai escolher o pior momento para provar isso.

As listas de bloqueio vão quebrar alguma coisa?

Sim, ocasionalmente, e a forma como você lida com isso é a diferença entre uma configuração que dura e uma que é arrancada em duas semanas. As listas de bloqueio são mantidas por pessoas fazendo julgamentos de valor, e de vez em quando um desses julgamentos pega algo que você precisa: o endpoint de detecção de fraude de um banco, um widget de rastreamento de entrega, um fluxo de login que redireciona por um domínio de analytics. A falha é confusa porque não parece DNS — a página carrega pela metade, ou um botão não faz nada. Três hábitos resolvem isso. Comece com uma lista conservadora em vez de seis agressivas. Mantenha uma lista de permissão e adicione a ela sem culpa. E mantenha o log de consultas ativo por tempo suficiente para responder "o que esse dispositivo acabou de pedir, e o que nós recusamos?" — que é o momento em que você descobre que um resolvedor com filtragem é, ele mesmo, um dispositivo que registra tudo, e que a configuração de retenção dele é uma decisão de privacidade que você está tomando por todo mundo na rede.

Posso compartilhar o resolvedor com a família ou com amigos?

Sim, e é uma das melhores razões para construir isso — uma única máquina de $3.90 pode arrumar o DNS de uma casa inteira ou de um punhado de amigos. Duas regras tornam isso seguro. Primeiro, compartilhe pelo túnel ou por um endpoint criptografado e autenticado, nunca abrindo a porta 53 para o mundo; com DNS sobre HTTPS você pode dar a cada pessoa um caminho distinto, de modo que o acesso possa ser revogado individualmente, e o AdGuard Home pode então aplicar filtragens diferentes por cliente. Segundo, seja claro consigo mesmo sobre o que você está assumindo: agora você guarda o log de consultas de todo mundo que o usa. Defina a retenção para zero ou para um dia, conte a eles qual é a configuração, e lembre-se de que, se um dia for a sua própria privacidade que você estiver protegendo, um resolvedor usado por cinco pessoas também é um resolvedor em que qualquer consulta isolada é mais difícil de atribuir a uma pessoa específica.

A NordBastion se importa se eu rodar um resolvedor DNS num VPS?

De jeito nenhum — um resolvedor privado e com acesso controlado é uma carga de trabalho normal, e a política de uso aceitável não tem nada a dizer sobre isso. O que a política se importa, e o que toda rede séria se importa, é com um resolvedor aberto sendo usado como refletor de amplificação contra terceiros, porque o tráfego de ataque sai da nossa rede e cai na de outra pessoa. Siga o passo 02 e isso nunca acontece: recuse por padrão, permita o túnel, limite a taxa do resto. Se você quiser rodar deliberadamente um resolvedor público como serviço para outras pessoas, essa é uma conversa que vale a pena ter com antecedência, e não depois da primeira denúncia de abuso — os requisitos técnicos (limitação de taxa de resposta, sem ANY, monitoramento) são bem conhecidos, e o problema é rodar um sem querer, não rodar um de propósito.

Obtenha a máquina

Um resolvedor seu, num IP que não é o seu nome. Sem KYC, pago em cripto.

Sentinel — 2 vCPU e 4 GB a $3.90 por mês, em Helsinki, Stockholm, Oslo ou Reykjavík. Suficiente para o resolvedor, para o túnel WireGuard atrás do qual ele deveria viver, e para o que mais você decidir parar de alugar de outra pessoa. Sem e-mail no cadastro, sem documento de identidade, e sem log em nível de produto de nada que você consultar.

Última revisão · 2026-10-12 · Fontes · Documentação do Unbound e do AdGuard Home, RFC 9156 (minimização de QNAME), RFC 7858 (DNS sobre TLS), RFC 8484 (DNS sobre HTTPS), systemd-resolved(8) · Cadência · anualmente

Hospedagem privada, construída no Norte.