
Proxy DNS semplice e veloce con funzionalità non così semplici. Focalizzato sull'inoltro DNS instradato, il filtraggio e il controllo parentale.
Un proxy DNS che ti dà il controllo reale sulla tua rete domestica.
Ho passato anni come consulente nella "grande arena" del networking e della sicurezza. La sicurezza DNS era/è il mio lavoro quotidiano, ma anche un hobby preferito con cui armeggiare. Dato che ora ho dei figli e devo essere un genitore responsabile, mi sono preso l'incarico di filtrare per loro il grande e cattivo internet. Così ho costruito sdproxy (Simple DNS Proxy). Porta protezioni/metodi/precisione di livello enterprise/big-boy a livello di rete domestica (più o meno).
Il proxy è scritto in Go e si compila in un binario snello per router economici. NON ci sono abbonamenti cloud né canoni mensili. Parla ogni variante di DNS e include un controllo di ammissione adattivo per rimanere stabile. È solo snella (più o meno), cattiva, precisione olandese-ingegnerizzata per il salotto. Solo tu, un eseguibile e un file yaml.
E ricorda... È sempre il DNS!
Nota: Il file full_reference_config.yaml è sempre più aggiornato di questo README. In caso di dubbio, controlla lì.
Il DNS è la rubrica telefonica di internet - ogni dispositivo sulla tua rete cerca un nome prima di connettersi ovunque.
sdproxy si mette nel mezzo, sul tuo router, e ti lascia decidere cosa succede dopo: metterlo in cache, bloccarlo, instradarlo verso un resolver diverso, applicare modelli di sicurezza ML avanzati o imporre limiti di tempo per ogni figlio. Nessun abbonamento cloud, nessun canone mensile, nessun servizio esterno che va giù.
È scritto in Go, si compila in un singolo binario ed è abbastanza snello da girare su router domestici economici (OpenWrt su un TP-Link, GL.iNet o NetGear, pfSense, OPNsense o semplicemente una normale macchina Linux).
Vedi i principali vantaggi rispetto alle alternative .
Il buon vecchio UDP/TCP (porta 53), DNS-over-TLS crittografato (DoT), DNS-over-HTTPS (DoH) e DNS-over-QUIC (DoQ).
sdproxy analizza nativamente gli header Alt-Svc e aggiorna senza soluzione di continuità i flussi DoH standard a connessioni HTTP/3 (QUIC) ad alte prestazioni al volo.Protegge la tua navigazione dall'ispezione approfondita dei pacchetti da parte dell'ISP crittografando il Server Name Indication (SNI) del TLS.
HTTPS/SVCB, estrae le loro chiavi ECH e protegge completamente l'handshake TLS in modo autonomo.Un motore di inferenza ML nativo a regressione logistica a zero allocazioni gira sul percorso critico. Estrae l'entropia di Shannon, lo sbilanciamento vocali/consonanti e le catene di n-gram per rilevare e bloccare istantaneamente i domini generati algoritmicamente (DGA) usati da botnet, malware e infrastrutture C2.
Il profiling volumetrico di base traccia la media mobile esponenziale (EMA) con smoothing Alpha dei dati trasferiti per client o per subnet. Rileva improvvise e anomale raffiche di dati in uscita dalla rete sulla porta 53 e mette il client in blackhole in una Penalty Box ad alte prestazioni.
sdproxy non inoltra le query ciecamente; valuta dinamicamente gli upstream.
Hai risposto a qualcosa di recente? Servilo dalla cache. sdproxy utilizza 32 shard di memoria lock-free con seed crittografico. Se un record scade mentre è ancora popolare, sdproxy attiva un prefetch in background così i tuoi dispositivi non notano mai un cache miss. Supporta pienamente lo Stale-Serving RFC 8767.
Puntalo ai tuoi file di lease DHCP e a /etc/hosts e risponderà alle ricerche di nomi locali (il tuo NAS, la tua stampante, il tuo Pi) senza disturbare un resolver upstream. Funziona con dnsmasq, ISC DHCP, Kea e odhcpd.
Mappa l'identità di un dispositivo a un diverso gruppo di resolver upstream o profilo parentale.
RCODE: REFUSED, NXDOMAIN) direttamente a una regola di routing per la quarantena istantanea del client.Crea un profilo per ogni figlio, assegna i loro dispositivi e configura:
UI opzionale, protetta da password, basata su browser per operazioni in tempo reale.
Scarta qualsiasi risposta upstream contenente IP privati o bogon (RFC1918, loopback, ULA) restituendo NXDOMAIN per prevenire attacchi Server-Side Request Forgery (SSRF) e pivoting del browser.
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Richiede Go 1.25+. Nessun CGo, nessuna libreria esterna.
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 .
I flag -s -w rimuovono i simboli di debug - risparmiano il 30-40% della dimensione del binario, cosa che conta su piccole memorie flash.
Tutto vive in un unico file YAML. Il file full_reference_config.yaml in questo repo documenta ogni singola opzione inline - quel file è il manuale. Copialo, elimina ciò che non ti serve, regola il 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