हर विभाजित DNS अनुरोध एक ही वाक्य से शुरू होता है: कंपनी के नाम कंपनी के DNS पर जाते हैं, बाकी सब काम करता रहता है। उस वाक्य को कॉन्फ़िगरेशन में बदलने का मतलब है हर ऑपरेटिंग सिस्टम के लिए तीन सवालों के जवाब देना, और जवाब हर एक पर अलग तंत्र इस्तेमाल करते हैं। Linux लैपटॉप पर चलने वाली प्रोफ़ाइलें अक्सर Windows पर ऐसी वजहों से फेल होती हैं जिनका टनल से कोई लेना-देना नहीं है। यह अंतर आमतौर पर रूट समझी गई रिज़ॉल्वर सेटिंग होता है।

पहले नीति का नाम दें, फिर वह प्लेटफ़ॉर्म प्रिमिटिव चुनें जो उसे व्यक्त करता है।

तीन सेटिंगें जिन्हें आपस में मिलाना आसान है

खोज प्रत्यय छोटे नाम का विस्तार करता है: files लिखने पर वह files.corp.example बन जाता है जब रिज़ॉल्वर प्रत्ययों को क्रम से आज़माता है। रूटिंग डोमेन चुनता है कि नामस्थान के अंदर की क्वेरी का जवाब कौन सा रिज़ॉल्वर देगा। IP रूट केवल चुने हुए रिज़ॉल्वर को पहुँचने योग्य बनाता है। ये तीन अलग-अलग परतों में रहते हैं, और एक को दूसरे से बदलने पर ऐसा कॉन्फ़िगरेशन बनता है जो सही दिखता है और कुछ भी हल नहीं करता।

इस उलझन की एक कीमत है: खोज प्रत्यय जोड़ने से हर छोटा नाम वर्क रिज़ॉल्वर पर चला जाता है, जिनमें वे नाम भी शामिल हैं जो कहीं और के हैं। रूटिंग डोमेन चुनने से असंबंधित क्वेरी स्थानीय रिज़ॉल्वर पर रहती हैं और फिर भी *.corp.example टनल से भेजा जाता है।

Linux: केवल-रूट डोमेन, खोज प्रत्यय नहीं

systemd-resolved पर, टिल्डे से शुरू होने वाला डोमेन केवल-रूट डोमेन होता है, यानी उस नामस्थान की क्वेरी जुड़े हुए रिज़ॉल्वर पर जाती हैं और साथ ही खोज प्रत्यय भी नहीं बनतीं। resolvectl domain tun0 '~corp.example' इसे सेट करता है, और resolvectl dns tun0 10.8.0.1 सर्वर का नाम देता है। दोनों सेटिंगें इंटरफ़ेस की हैं, इसलिए वे उसके साथ चली जाती हैं। टिल्डे वही हिस्सा है जो लोग छोड़ देते हैं, और उसके बिना छोटे नाम वर्क रिज़ॉल्वर से हल होने लगते हैं।

उसी डोमेन को वैश्विक खोज प्रत्यय के रूप में भी न लगाएँ। दोनों सेटिंगें फ़ालतू नहीं हैं; एक रूट करती है और दूसरी आपके लिखे को फिर से लिखती है।

Windows को नामस्थान नीति चाहिए, प्रत्यय नहीं

Windows विभाजित DNS नीति को Name Resolution Policy Table में रखता है, अडैप्टर के DNS प्रत्यय में नहीं। एक नियम नामस्थान को खास सर्वरों से जोड़ता है: Add-DnsClientNrptRule -Namespace .corp.example -NameServers 10.8.0.1। केवल प्रत्यय सेट करने से छोटे नाम कैसे दिखते हैं वह बदलता है; इससे क्वेरी किसी दूसरे सर्वर पर नहीं जाती।

कनेक्ट करने के बाद Get-DnsClientNrptPolicy से प्रभावी नीति जाँचें, क्योंकि पिछले कनेक्शन का नियम टनल से ज़्यादा टिक सकता है। टनल गिरने पर नियमों को नाम से हटाएँ, और डिस्प्ले नाम स्थिर रखें ताकि सफ़ाई सही प्रविष्टि पर हो।

हर प्लेटफ़ॉर्म के लिए एक ही रिज़ॉल्वर मालिक रखें

डेस्कटॉप मैनेजर, OpenVPN अप स्क्रिप्ट और स्थानीय रिज़ॉल्वर डेमॉन सभी वही कॉन्फ़िगरेशन लिखने की कोशिश कर सकते हैं। जब वे असहमत होते हैं, तो अंतिम लिखने वाला जीतता है और परिणाम टियरडाउन के क्रम पर निर्भर करता है। रिज़ॉल्वर स्टेट का मालिक एक घटक चुनें, बाकियों को लिखने के बजाय रिपोर्ट करने दें, और फिर से कनेक्ट करके जाँचें: नीति को नियमों को दोहराए बिना उसमें टिकना चाहिए। डिस्कनेक्ट भी जाँचें, क्योंकि बचा हुआ स्टेट ही अगले कनेक्शन को अलग व्यवहार करवाता है।

जो एप्लिकेशन अपना एन्क्रिप्टेड रिज़ॉल्वर साथ लाते हैं, वे ऑपरेटिंग सिस्टम की नीति को पूरी तरह नज़रअंदाज़ करते हैं। यह एप्लिकेशन का गुण है, टनल में खराबी नहीं।

परिणाम जाँचें, प्रोफ़ाइल का टेक्स्ट नहीं

एक नाम हल करें जो टनल से गुज़रना चाहिए और एक जो नहीं, हर प्लेटफ़ॉर्म पर, और पुष्टि करें कि किस सर्वर ने जवाब दिया। resolvectl query host.corp.example और Resolve-DnsName host.corp.example दोनों जवाब देने वाले सर्वर की रिपोर्ट करते हैं। फिर से कनेक्ट करने के बाद दोहराएँ। फिर पुष्टि करें कि टनल का रिज़ॉल्वर उस पते पर पहुँचने योग्य है जो प्रोफ़ाइल भेजता है, क्योंकि न पहुँचने वाले सर्वर की ओर इशारा करने वाली सही नीति भी बिना नीति के जैसे ही फेल होती है।

इच्छित व्यवहार प्रोफ़ाइल के नोट्स में दर्ज करें: कौन सा प्रत्यय रूट करता है, कौन सा सर्वर उसका जवाब देता है, और बाकी सब के साथ क्या होता है। आगे जिस प्लेटफ़ॉर्म का समर्थन आप करेंगे उसे कॉन्फ़िग फ़ाइल से ज़्यादा उस वाक्य की ज़रूरत होगी।

संबंधित लेख