सख़्त मायने में यह चरण वैकल्पिक है — अकेला Unbound पहले से ही एक private resolver है — और फिर भी लगभग हर कोई इसे चाहता है। AdGuard Home आपको blocklists, per-client policies, debugging के दौरान पढ़ने लायक एक query log देता है, और, सबसे काम की बात, native DNS-over-TLS और DNS-over-HTTPS listeners देता है ताकि फ़ोन और browsers उन networks से भी आपके resolver से बात कर सकें जहां VPN व्यावहारिक नहीं है।
यह व्यवस्था एक chain है, और ports को सही रखना ही पूरी तरक़ीब है: AdGuard Home 53 का मालिक है और clients की तरफ़ मुंह किए है, Unbound 127.0.0.1:5335 पर बैठा है और internet की तरफ़ मुंह किए है। box पर और कुछ भी 53 पर नहीं सुनता।
curl -fsSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
# Web interface: http://<vps>:3000 — reach it over the SSH tunnel below,
# never by opening 3000 to the internet.
ssh -N -L 3000:127.0.0.1:3000 root@<vps>
उस tunnel के ज़रिए first-run wizard पूरा करें। admin listener को 127.0.0.1 पर या tunnel address पर सेट करें, कभी 0.0.0.0 पर नहीं, और इसे एक लंबा password दें — यह interface आपके network द्वारा resolve किए जाने वाले हर नाम को फिर से लिख सकता है, जो इसे resolver जितना ही संवेदनशील बना देता है।
फिर ठीक एक upstream सेट करें: Settings → DNS settings में, default list साफ़ करें और अपना Unbound instance डालें। एक लाइन, और कुछ नहीं। अगर उस box में कोई public resolver बचा रह गया, तो चरण 01 में किया गया सब कुछ बेकार हो गया।
127.0.0.1:5335
"Parallel requests" को बंद ही रहने दें — एक अकेले upstream के साथ यह traffic को दोहराने के अलावा कुछ नहीं करता — और "Use private reverse DNS resolvers" को बंद रखें जब तक आप सच में एक internal zone न चला रहे हों। bootstrap servers को किसी ऐसी चीज़ पर सेट करें जिस पर आप भरोसा करते हैं; इनका इस्तेमाल सिर्फ़ upstream servers के hostnames को resolve करने के लिए होता है, और एक सीधे IP वाले upstream के साथ इनसे कभी पूछा ही नहीं जाएगा।
Blocklists: संकरे दायरे से शुरू करें। स्वाभाविक झुकाव यह होता है कि list page पर सब कुछ enable कर दें और counter का मज़ा लें। इस झुकाव का विरोध करें। हर list किसी और के द्वारा लिए गए judgement calls का एक समूह है कि आपके devices को कहां पहुंचने की अनुमति है, और इसकी विफलताएं चुपचाप और उलझाने वाली होती हैं — एक आधा-load हुआ page, एक button जो कुछ नहीं करता, एक बैंक ऐप जो खुलने से मना कर देता है। default AdGuard DNS filter से शुरू करें, या OISD जैसे किसी एक अच्छी तरह maintained aggregate से, दो हफ़्ते इसके साथ रहें, और तभी और जोड़ें। एक allowlist रखें और बिना किसी अपराधबोध के इसका इस्तेमाल करें।
query log ही असहज हिस्सा है
आपने अभी एक ऐसी मशीन बनाई है जिसका मक़सद किसी और को आपके devices द्वारा resolve किए गए हर नाम की एक list रखने से रोकना है — और AdGuard Home सबसे पहले जो करता है वह है ठीक वही list रखना, by default चालू, नब्बे दिनों के लिए। blocklists को tune करते समय यह वाकई काम की चीज़ है, और यह server की सबसे संवेदनशील file है। जानबूझकर फ़ैसला लें: "उस device ने अभी क्या मांगा?" का जवाब देने के लिए 24 घंटे काफ़ी हैं, tuning पूरी होने के बाद शून्य ही ईमानदार setting है, और नब्बे दिन एक ऐसा फ़ैसला है जो किसी को भी एक default को यूं ही छोड़कर नहीं लेना चाहिए। Settings → General → Query log, और वहीं रहते हुए statistics retention भी सेट कर लें।
firewall को इस नई व्यवस्था के हिसाब से मोड़ें — अब AdGuard Home tunnel interface पर port 53 का मालिक है, और Unbound सिर्फ़ loopback पर पहुंचा जा सकता है। public interface के बारे में कुछ भी नहीं बदलता: उस पर अब भी बिल्कुल कोई DNS नहीं है।