Proxy DNS simple et rapide avec des fonctionnalités pas si simples. Axé sur le transfert DNS routé, le filtrage et le contrôle parental.
Un proxy DNS qui vous donne un véritable contrôle sur votre réseau domestique.
J'ai passé des années comme consultant dans l'« arène » des réseaux et de la sécurité des « grands ». La sécurité DNS était/est mon travail quotidien, mais aussi un passe-temps favori à bricoler. Parce que j'ai des enfants maintenant, et que je dois être un parent responsable, j'ai pris sur moi de filtrer le grand méchant internet pour eux. J'ai donc construit sdproxy (Simple DNS Proxy). Il apporte les protections/méthodes/précisions de niveau entreprise/grand compte au niveau du réseau domestique (en quelque sorte).
Le proxy est écrit en Go et se compile en un binaire léger pour les routeurs bon marché. Il n'y a AUCUN abonnement cloud ni frais mensuels. Il parle toutes les variantes du DNS et inclut un contrôle d'admission adaptatif pour rester stable. C'est juste une précision légère (en quelque sorte), méchante, conçue par des Néerlandais, pour le salon. Juste vous, un exécutable et un fichier yaml.
Et rappelez-vous... C'est toujours le DNS !
Note : Le fichier full_reference_config.yaml est toujours plus à jour que ce README. En cas de doute, consultez-le.
Le DNS est l'annuaire de l'internet - chaque appareil de votre réseau recherche un nom avant de se connecter où que ce soit.
sdproxy se place au milieu de tout cela, sur votre routeur, et vous permet de décider de la suite : le mettre en cache, le bloquer, le router vers un autre résolveur, appliquer des modèles de sécurité ML avancés, ou imposer des limites de temps par enfant. Pas d'abonnement cloud, pas de frais mensuels, pas de service externe qui tombe en panne.
Il est écrit en Go, se compile en un seul binaire, et est suffisamment léger pour tourner sur des routeurs domestiques bon marché (OpenWrt sur un TP-Link, GL.iNet ou NetGear, pfSense, OPNsense ou simplement une machine Linux ordinaire).
Voir les principaux avantages par rapport aux alternatives ici.
Le bon vieux UDP/TCP (port 53), le DNS chiffré via DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), et DNS-over-QUIC (DoQ).
sdproxy analyse nativement les en-têtes Alt-Svc et met à niveau de manière transparente les flux DoH standard vers des connexions HTTP/3 (QUIC) hautes performances à la volée.Protège votre navigation contre l'inspection approfondie des paquets par le FAI en chiffrant l'indication du nom du serveur TLS (SNI).
HTTPS/SVCB, extrait leurs clés ECH et sécurise la poignée de main TLS de manière totalement autonome.Un moteur d'inférence ML de régression logistique natif, sans allocation, s'exécute sur le chemin critique. Il extrait l'entropie de Shannon, le déséquilibre voyelles/consonnes et les chaînes de n-grammes pour détecter et bloquer instantanément les domaines générés algorithmiquement (DGA) utilisés par les botnets, les malwares et les infrastructures C2.
Le profilage de référence volumétrique suit la moyenne mobile exponentielle (EMA) lissée par Alpha des données transférées par client ou par sous-réseau. Il détecte les pics soudains et anormaux de données sortant du réseau via le port 53 et place le client dans un trou noir au sein d'une Penalty Box haute performance.
sdproxy ne se contente pas de transmettre les requêtes aveuglément ; il évalue les amonts dynamiquement.
Vous avez répondu à quelque chose récemment ? Servez-le depuis le cache. sdproxy utilise 32 shards mémoire sans verrou, à graine cryptographique. Si un enregistrement expire alors qu'il est encore populaire, sdproxy déclenche une prélecture en arrière-plan afin que vos appareils ne remarquent jamais un échec de cache. Il prend entièrement en charge le Stale-Serving de la RFC 8767.
Pointez-le vers vos fichiers de bail DHCP et /etc/hosts et il répondra aux recherches de noms locaux (votre NAS, votre imprimante, votre Pi) sans déranger un résolveur amont. Fonctionne avec dnsmasq, ISC DHCP, Kea et odhcpd.
Associez l'identité d'un appareil à un groupe de résolveurs amont ou à un profil parental différent.
RCODE: REFUSED, NXDOMAIN) directement à une règle de routage pour une mise en quarantaine instantanée du client.Configurez un profil par enfant, assignez leurs appareils, et configurez :
Interface navigateur optionnelle, protégée par mot de passe, pour les opérations en direct.
Rejette toute réponse amont contenant des IP privées ou bogon (RFC1918, loopbacks, ULAs) en renvoyant NXDOMAIN pour prévenir les attaques de type Server-Side Request Forgery (SSRF) et de pivotement de navigateur.
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Nécessite Go 1.25+. Pas de CGo, pas de bibliothèques externes.
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 .
Les options -s -w suppriment les symboles de débogage - cela économise 30 à 40 % de la taille du binaire, ce qui compte sur un petit stockage flash.
Tout réside dans un seul fichier YAML. Le fichier full_reference_config.yaml de ce dépôt documente chaque option en ligne - ce fichier est le manuel. Copiez-le, retirez ce dont vous n'avez pas besoin, ajustez le reste.
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