DNS “Deny All” com Unbound: O Guia Brutalmente Simples Para Controle Total de Domínios

Quando você tenta controlar acesso por domínio usando só firewall, descobre rápido que está lutando contra as forças da natureza:
CDNs mutantes, IPs rotativos, pools gigantes e serviços que trocam endereço como quem troca de meia.

A saída elegante — e totalmente dominante — é usar DNS como filtro primário.

E o método supremo é o DNS “Deny All” com Unbound.

A ideia é brilhantemente minimalista:

  1. Bloqueia absolutamente tudo por DNS.
  2. Libera somente os domínios aprovados.
  3. Encaminha o resto para resolvers externos confiáveis.
  4. (Opcional) Mostra página personalizada de bloqueio.
  5. Sem wildcard. Sem proxy. Sem bullying de certificado HTTPS.

E funciona até em rede dentro de rede dentro de rede em L3.


Como o Unbound trata domínios (a parte mágica)

No Unbound, você controla o destino de um domínio inteiro definindo uma zona local.

Se disser:

local-zone: "dominio.com" static

Tudo isso é bloqueado automaticamente:

  • dominio.com
  • www.dominio.com
  • api.dominio.com
  • *.cdn.gcp-us-east-1.dominio.com
  • qualquer.lista.de.bagunça.dominio.com

DNS não pergunta. Se está na árvore, cai.

E não existe wildcard aqui:
DNS trabalha por zona → você manda na raiz → Unbound domina tudo abaixo.


Redirecionando para uma página de bloqueio

Sim, você pode fazer estilo “Firewall Corporativo anos 2000” e mandar tudo para um portal dizendo que o acesso foi negado.

Exemplo:

local-zone: "dominio.com" redirect
local-data: "dominio.com A 10.0.0.50"

Agora todo domínio que cair nessa zona aponta para seu servidor de aviso.
(E sim, todos os subdomínios também.)


Fazendo o “Deny All” de verdade (o feitiço base do sistema)

Para bloquear a internet inteira, você usa a zona raiz:

local-zone: "." refuse #se usar static, mata tudo

O “.” é literal. É a raiz do DNS global.

Com esse único ponto, você matou todo tráfego DNS da sua rede.
Nada resolve. Nada abre. Ninguém vai a lugar nenhum.

Agora vem o whitelist.


Liberando só certos domínios (a whitelist elegante)

Para domínios permitidos, você troca o comportamento para transparent:

local-zone: "google.com" transparent
local-zone: "gstatic.com" transparent
local-zone: "youtube.com" transparent

“transparent” significa:
Não bloqueie; encaminhe normalmente para resolução externa.

Essa é a whitelist verdadeira, funcional até para apps de smartphone, sem proxy, sem certificado, sem sniffing HTTPS.


Mas quem responde as consultas externas?

A mágica do forwarder

Você não precisa recriar a internet, nem rodar bind9 como servidor autoritativo, nem sincronizar root hints.

Basta encaminhar para DNS externos confiáveis:

forward-zone:
  name: "."
  forward-addr: 1.1.1.1
  forward-addr: 9.9.9.9

Esses DNS resolvem tudo para você.

O Unbound só bloqueia, libera e controla o fluxo, sem ser obrigado a conhecer todas as zonas de todas as empresas do planeta.


Qual DNS externo usar (rápido e objetivo)

  • 1.1.1.1 – Cloudflare (rápido, privacidade decente)
  • 9.9.9.9 – Quad9 (segurança forte, filtra malware conhecido)
  • 8.8.8.8 – Google (funciona, ponto, mas sem privacidade)

Combinação mais comum: 1.1.1.1 + 9.9.9.9.


Colando tudo junto: exemplo completo

Esse é o modelo pronto para produção.

server:

interface: 0.0.0.0
access-control: 0.0.0.0/0 allow

  verbosity: 1
  do-ip4: yes
  do-ip6: no
  hide-identity: yes
  hide-version: yes
  prefetch: yes
  qname-minimisation: yes

  # DNS DENY ALL
  local-zone: "." refuse

  # Whitelist de domínios liberados
  local-zone: "google.com" transparent
  local-zone: "gstatic.com" transparent
  local-zone: "youtube.com" transparent
  local-zone: "cloudflare.com" transparent

  # Redirecionamento
  local-zone: "facebook.com" redirect
  local-data: "facebook.com A 10.0.0.84"

# Forward só para a internet real
forward-zone:
  name: "."
  forward-addr: 1.1.1.1
  forward-addr: 9.9.9.9

Resumo estilo tatuagem de sysadmin

  • local-zone: “.” static → desliga a internet inteira.
  • transparent → deixa passar.
  • redirect → manda pra página legal.
  • forward-zone → quem resolve tudo é o DNS externo.
  • Nada de wildcard.
  • Nada de proxy transparente.
  • Nada de interceptar HTTPS.
  • Funciona em smartphone, tablet, IoT, qualquer coisa que faça query DNS.

Quando usar

  • Wi-Fi escolar ou corporativo
  • Subrede isolada
  • IoT com behavior suspeito
  • Celas hostis dentro do teu próprio datacenter
  • Ambientes com política “somente domínios específicos”
  • Quando quer controle absoluto sem gambiarra de proxy
Rolar para cima