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 la « cour des grands » des réseaux et de la sécurité. 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/grandes organisations 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 et conçue à la néerlandaise pour le salon. Juste vous, un exécutable et un fichier yaml.
Et rappelez-vous... C'est toujours le DNS !
Remarque : Le fichier full_reference_config.yaml de ce dépôt (également intégré au binaire via sdproxy --example-config) est toujours plus à jour que ce README. En cas de doute, consultez-le.
Le DNS est l'annuaire téléphonique d'internet - chaque appareil de votre réseau recherche un nom avant de se connecter quelque part.
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 KEY_ADVANTAGES.md pour les principaux avantages par rapport aux alternatives.
Le bon vieux UDP/TCP (port 53), le DNS-over-TLS chiffré (DoT), le DNS-over-HTTPS (DoH) et le DNS-over-QUIC (DoQ).
sdproxy analyse nativement les en-têtes Alt-Svc et les paramètres ALPN SVCB/HTTPS pour mettre à 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).
sdproxy agit comme un serveur ECH complet, déchiffrant les client hellos et diffusant nativement ses propres clés sur votre réseau local via DDR (_dns.resolver.arpa SVCB/HTTPS) et les points de terminaison HTTPS /.well-known/origin-svcb / /.well-known/ech.sdproxy interroge activement leurs enregistrements HTTPS/SVCB (et les replis L7 .well-known), 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 et sans allocation s'exécute sur le chemin critique. Il extrait l'entropie de Shannon, le déséquilibre voyelles/consonnes, les motifs de chiffres finaux et les chaînes de consonnes pour détecter et bloquer instantanément les domaines générés algorithmiquement (DGA) utilisés par les botnets, les malwares et l'infrastructure C2.
_for-sale. et des domaines parqués_for-sale. (server.for_sale) : Sonde _for-sale.<qname> et _for-sale.<apex> pour des enregistrements TXT RFC 10023 valides (v=FORSALE1;) à l'aide d'un cache de verdict à 64 shards, de parcours complets du cache de la chaîne parente et de la coalescence SingleFlight. Prend en charge disabled, BLOCK, DROP, LOG ou tout RCODE DNS standard.server.parked) : Détecte les domaines parqués, les domaines parents intermédiaires et les apex eTLD+1 en sondant activement et en inspectant passivement les enregistrements autoritatifs NS, SOA, TXT, CNAME et A/AAAA pour les fournisseurs courants de parking de domaines et de monétisation après-vente (Sedo, Bodis, ParkingCrew, Above.com, Dan.com, Afternic, CashParking, HugeDomains, Squadhelp/Atom, Uniregistry, ParkLogic, RookMedia, etc.).(client/subnet, apex domain) dans une fenêtre temporelle configurable (avec exempt_shared_hosting en option) pour intercepter le tunneling DNS lent et discret et l'exfiltration par infostealer sans permettre de déni de service entre clients.rrs:) avec prise en charge des regexrtype_policy), des suffixes de domaines, des IP/CIDR ou des expressions régulières (/pattern/) via une configuration en ligne, des fichiers locaux ou des URL distantes.rrs:) : Remplace des domaines globaux ou par groupe (exacts ou regex /pattern/) par des adresses IPv4/IPv6 statiques ou des alias CNAME récursifs transparents (par exemple, pour imposer SafeSearch).sdproxy ne se contente pas de transmettre les requêtes aveuglément ; il évalue les upstreams dynamiquement.
max_secure_upstreams (5 par défaut) serveurs sains d'un groupe. Inspecte en profondeur les empreintes canoniques des RRset (chaînes CNAME, points de terminaison IP finaux, SVCB/HTTPS, état DNSSEC) avec prise en charge des préférences fastest, ordered et consolidate (ensemble de réponses fusionné). En mode strict, une participation à 100 % et une équivalence des réponses sont imposées ; en mode loose, une majorité de répondeurs sains est utilisée. Supprime ou bloque la réponse si les upstreams sont en désaccord ou renvoient une IP NULL empoisonnée.Vous avez répondu à quelque chose récemment ? Servez-le depuis le cache. sdproxy utilise 32 shards mémoire à graine cryptographique avec persistance disque optionnelle résistante aux crashs entre les redémarrages (y compris l'empreinte de configuration des routes). Si un enregistrement expire alors qu'il est encore populaire, sdproxy déclenche un préchargement en arrière-plan afin que vos appareils ne remarquent jamais un échec de cache. Il prend entièrement en charge le Stale-Serving RFC 8767, les bornes strictes d'expiration DNSSEC RRSIG et les replis en cas de panne serve_stale_infinite.