
DNS प्रॉक्सी जो सरल और तेज़ है, साथ ही कुछ ऐसी सुविधाएँ भी देती है जो उतनी सरल नहीं हैं। यह रूटेड DNS फ़ॉरवर्डिंग, फ़िल्टरिंग और पैरेंटल कंट्रोल पर केंद्रित है।
एक DNS प्रॉक्सी जो आपको आपके होम नेटवर्क पर वास्तविक नियंत्रण देती है।
मैंने "बड़े लोगों" के नेटवर्किंग और सुरक्षा "क्षेत्र" में एक सलाहकार के रूप में वर्षों बिताए। DNS सुरक्षा मेरा दैनिक कार्य था/है, लेकिन यह मेरा एक पसंदीदा शौक भी है जिसे मैं खोजता रहता हूँ। क्योंकि अब मेरे बच्चे हैं, और मुझे एक जिम्मेदार माता-पिता बनने की आवश्यकता है, मैंने उनके लिए बड़े खतरनाक इंटरनेट को फ़िल्टर करने का काम अपने ऊपर लिया। इसलिए मैंने sdproxy (Simple DNS Proxy) बनाया। यह एंटरप्राइज़/बड़े-लोगों की सुरक्षा/तरीकों/सटीकता को होम नेटवर्क स्तर पर लाता है (एक तरह से)।
यह प्रॉक्सी Go में लिखी गई है और सस्ते राउटरों के लिए एक लीन बाइनरी में कंपाइल होती है। यहाँ कोई क्लाउड सब्सक्रिप्शन या मासिक शुल्क नहीं है। यह DNS के हर स्वाद को बोलती है और स्थिर रहने के लिए अनुकूली प्रवेश नियंत्रण (adaptive admission control) शामिल करती है। यह बस लीन (एक तरह से), मीन, डच-इंजीनियरड सटीकता है लिविंग रूम के लिए। बस आप, एक एक्ज़ीक्यूटेबल और एक yaml फ़ाइल।
और याद रखें... यह हमेशा DNS ही होता है!
नोट: full_reference_config.yaml हमेशा इस README से अधिक अद्यतित रहता है। संदेह होने पर, वहाँ देखें।
DNS इंटरनेट की फ़ोनबुक है - आपके नेटवर्क पर हर डिवाइस कहीं भी कनेक्ट करने से पहले एक नाम खोजती है।
sdproxy उसके बीच में, आपके राउटर पर बैठती है, और आपको तय करने देती है कि आगे क्या होगा: इसे कैश करें, इसे ब्लॉक करें, इसे किसी अन्य रिज़ॉल्वर पर रूट करें, उन्नत ML सुरक्षा मॉडल लागू करें, या प्रति बच्चा समय सीमा लागू करें। कोई क्लाउड सब्सक्रिप्शन नहीं, कोई मासिक शुल्क नहीं, कोई बाहरी सेवा नहीं जो बंद हो जाए।
यह Go में लिखी गई है, एक ही बाइनरी में कंपाइल होती है, और सस्ते होम राउटरों (TP-Link, GL.iNet या NetGear पर OpenWrt, pfSense, OPNsense या बस एक साधारण Linux बॉक्स) पर चलाने के लिए पर्याप्त लीन है।
विकल्पों की तुलना में मुख्य लाभों के लिए यहाँ देखें।
पुराना सादा UDP/TCP (पोर्ट 53), एन्क्रिप्टेड DNS-over-TLS (DoT), DNS-over-HTTPS (DoH), और DNS-over-QUIC (DoQ)।
sdproxy मूल रूप से Alt-Svc हेडर को पार्स करती है और मानक DoH स्ट्रीम को उड़ान में ही उच्च-प्रदर्शन HTTP/3 (QUIC) कनेक्शनों में सहजता से अपग्रेड कर देती है।TLS Server Name Indication (SNI) को एन्क्रिप्ट करके आपकी ब्राउज़िंग को ISP डीप-पैकेट निरीक्षण से बचाती है।
HTTPS/SVCB रिकॉर्ड से पूछताछ करती है, उनकी ECH कुंजियाँ निकालती है, और TLS हैंडशेक को पूरी तरह से स्वायत्त रूप से सुरक्षित करती है।एक मूल, शून्य-आवंटन लॉजिस्टिक रिग्रेशन ML इन्फरेंस इंजन हॉट पाथ पर चलता है। यह बॉटनेट, मैलवेयर और C2 इंफ्रास्ट्रक्चर द्वारा उपयोग किए जाने वाले Algorithmically Generated Domains (DGA) को तुरंत पहचानने और ब्लॉक करने के लिए Shannon एन्ट्रॉपी, स्वर/व्यंजन झुकाव, और n-gram श्रृंखलाएँ निकालता है।
वॉल्यूमेट्रिक बेसलाइन प्रोफाइलिंग प्रति-क्लाइंट या प्रति-सबनेट स्थानांतरित डेटा के Alpha-Smoothed Exponential Moving Average (EMA) को ट्रैक करती है। यह पोर्ट 53 पर नेटवर्क से बाहर निकलने वाले डेटा के अचानक, असामान्य विस्फोटों का पता लगाती है और क्लाइंट को एक उच्च-प्रदर्शन Penalty Box में ब्लैकहोल कर देती है।
sdproxy केवल क्वेरी को अंधाधुंध अग्रेषित नहीं करती; यह अपस्ट्रीम का गतिशील रूप से मूल्यांकन करती है।
हाल ही में कुछ उत्तर दिया? इसे कैश से परोसें। sdproxy 32 क्रिप्टोग्राफ़िक रूप से सीडेड, लॉक-फ्री मेमोरी शार्ड्स का उपयोग करती है। यदि कोई रिकॉर्ड लोकप्रिय रहते हुए समाप्त हो जाता है, तो sdproxy एक बैकग्राउंड प्रीफ़ेच ट्रिगर करती है ताकि आपके डिवाइस कभी कैश मिस नोटिस न करें। यह RFC 8767 Stale-Serving का पूरी तरह समर्थन करती है।
इसे अपनी DHCP लीज़ फ़ाइलों और /etc/hosts पर इंगित करें और यह अपस्ट्रीम रिज़ॉल्वर को परेशान किए बिना स्थानीय नाम लुकअप (आपका NAS, आपका प्रिंटर, आपका Pi) का उत्तर देगी। dnsmasq, ISC DHCP, Kea, और odhcpd के साथ काम करती है।
किसी डिवाइस की पहचान को भिन्न अपस्ट्रीम रिज़ॉल्वर समूह या पैतृक प्रोफ़ाइल से मैप करें।
RCODE: REFUSED, NXDOMAIN) बाइंड करें।प्रति बच्चा एक प्रोफ़ाइल सेट करें, उनके डिवाइस असाइन करें, और कॉन्फ़िगर करें:
लाइव संचालन के लिए वैकल्पिक, पासवर्ड-संरक्षित ब्राउज़र-आधारित UI।
Server-Side Request Forgery (SSRF) और ब्राउज़र पिवोटिंग हमलों को रोकने के लिए निजी या बोगॉन IP (RFC1918, लूपबैक, ULA) वाले किसी भी अपस्ट्रीम प्रतिक्रिया को NXDOMAIN लौटाकर ड्रॉप कर देती है।
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Go 1.25+ आवश्यक है। कोई CGo नहीं, कोई बाहरी लाइब्रेरी नहीं।
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 .
-s -w फ़्लैग डीबग प्रतीकों को हटा देते हैं - बाइनरी आकार में 30-40% बचत होती है, जो छोटे फ़्लैश स्टोरेज पर मायने रखता है।
सब कुछ एक YAML फ़ाइल में रहता है। इस रेपो में full_reference_config.yaml हर एक विकल्प को इनलाइन प्रलेखित करता है - वह फ़ाइल ही मैनुअल है। इसे कॉपी करें, जो आपको नहीं चाहिए उसे हटा दें, बाकी समायोजित करें।
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