
Proxy DNS simples e rápido com funcionalidades não tão simples. Focado em encaminhamento DNS roteado, filtragem e controle parental.
Um proxy DNS que lhe dá controle real sobre a sua rede doméstica.
Passei anos como consultor na "arena" de redes e segurança "de gente grande". A segurança de DNS era/é o meu trabalho diário, mas também um hobby favorito para mexer. Como agora tenho filhos, e preciso ser um pai responsável, assumi a tarefa de filtrar a grande internet má para eles. Então construí o sdproxy (Simple DNS Proxy). Ele traz proteções/métodos/precisão de nível empresarial/ de gente grande para o nível da rede doméstica (mais ou menos).
O proxy é escrito em Go e compila para um binário enxuto para routers baratos. NÃO há subscrições na cloud nem mensalidades. Ele fala todos os sabores de DNS e inclui controle de admissão adaptativo para se manter estável. É apenas precisão enxuta (mais ou menos), maliciosa, de engenharia holandesa para a sala de estar. Apenas você, um executável e um ficheiro yaml.
E lembre-se... É sempre o DNS!
Nota: O full_reference_config.yaml está sempre mais atualizado do que este README. Em caso de dúvida, consulte lá.
O DNS é a lista telefónica da internet - cada dispositivo na sua rede procura um nome antes de se ligar a qualquer lugar.
O sdproxy fica no meio disso, no seu router, e permite-lhe decidir o que acontece a seguir: colocar em cache, bloquear, encaminhar para um resolver diferente, aplicar modelos avançados de segurança com ML, ou impor limites de tempo por criança. Sem subscrição na cloud, sem mensalidade, sem serviço externo que fica offline.
É escrito em Go, compila para um único binário, e é suficientemente enxuto para correr em routers domésticos baratos (OpenWrt num TP-Link, GL.iNet ou NetGear, pfSense, OPNsense ou apenas uma máquina Linux comum).
Veja as principais vantagens em relação às alternativas aqui.
UDP/TCP simples (porta 53), DNS encriptado sobre TLS (DoT), DNS sobre HTTPS (DoH), e DNS sobre QUIC (DoQ).
sdproxy analisa nativamente os cabeçalhos Alt-Svc e atualiza perfeitamente fluxos DoH padrão para ligações HTTP/3 (QUIC) de alto desempenho em tempo real.Protege a sua navegação da inspeção profunda de pacotes do ISP ao encriptar o Server Name Indication (SNI) do TLS.
HTTPS/SVCB, extrai as suas chaves ECH, e protege o handshake TLS de forma completamente autónoma.Um motor de inferência de ML de Regressão Logística nativo, com zero alocações, corre no caminho crítico. Extrai entropia de Shannon, desvio de vogais/consoantes, e cadeias de n-gramas para detetar e bloquear instantaneamente Domínios Gerados Algoritmicamente (DGA) usados por botnets, malware, e infraestrutura C2.
A criação de perfis de base volumétricos rastreia a Média Móvel Exponencial (EMA) com Suavização Alfa dos dados transferidos por cliente ou por sub-rede. Deteta explosões súbitas e anómalas de dados a sair da rede pela porta 53 e coloca o cliente num Penalty Box de alto desempenho.
O sdproxy não se limita a encaminhar consultas cegamente; avalia os upstreams dinamicamente.
Respondeu a algo recentemente? Sirva-o a partir da cache. O sdproxy utiliza 32 shards de memória sem bloqueios, com sementes criptográficas. Se um registo expirar enquanto ainda é popular, o sdproxy desencadeia um prefetch em segundo plano para que os seus dispositivos nunca notem uma falha de cache. Suporta totalmente o RFC 8767 Stale-Serving.
Aponte-o para os seus ficheiros de concessão DHCP e /etc/hosts e ele responderá a pesquisas de nomes locais (o seu NAS, a sua impressora, o seu Pi) sem incomodar um resolver upstream. Funciona com dnsmasq, ISC DHCP, Kea, e odhcpd.
Mapeie a identidade de um dispositivo para um grupo de resolvers upstream diferente ou perfil parental.
RCODE: REFUSED, NXDOMAIN) diretamente a uma regra de encaminhamento para quarentena instantânea do cliente.Configure um perfil por criança, atribua os seus dispositivos, e configure:
Interface opcional, protegida por palavra-passe, baseada no navegador para operações em tempo real.
Descarta qualquer resposta upstream que contenha IPs privados ou bogon (RFC1918, loopbacks, ULAs) devolvendo NXDOMAIN para prevenir Server-Side Request Forgery (SSRF) e ataques de pivoting no navegador.
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Requer Go 1.25+. Sem CGo, sem bibliotecas externas.
server:
listen_udp: ["0.0.0.0:53"]
cache:
enabled: true
size: 1024
upstreams:
default:
- "udp://1.1.1.1:53"
- "udp://9.9.9.9:53"
# OpenWrt MIPS (TP-Link, Netgear, etc.)
GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -ldflags="-s -w" -o sdproxy .
# OpenWrt ARM (Linksys, Asus, etc.)
GOOS=linux GOARCH=arm GOARM=7 go build -ldflags="-s -w" -o sdproxy .
# OpenWrt x86_64
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o sdproxy .
As flags -s -w removem os símbolos de depuração - poupa 30-40% do tamanho do binário, o que importa em armazenamento flash pequeno.
Tudo vive num único ficheiro YAML. O full_reference_config.yaml neste repositório documenta cada opção inline - esse ficheiro é o manual. Copie-o, remova o que não precisa, ajuste o resto.
2026/05/01 14:23:01 [DNS] [DoH3+ECH] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | UPSTREAM: doh3://cloudflare-dns.com | OK
2026/05/01 14:23:02 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | CACHE HIT
2026/05/01 14:23:05 [DNS] [DoQ] 192.168.1.10 -> nas.lan A | LOCAL IDENTITY
2026/05/01 14:23:10 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> dga-domain-xzq1.com A | DGA INTERCEPT (Score: 98.2) | NXDOMAIN