एक एडाप्टर पर दो रिज़ॉल्वर सूचीबद्ध करना ऐसा लगता है जैसे एक डोमेन को एक सर्वर पर और दूसरे डोमेन को दूसरे पर भेजने का तरीका, और रिज़ॉल्वर सूची की कोई भी बात ऐसे काम नहीं करती। Windows नाम से रिज़ॉल्व करता है, और किस सर्वर से पूछा जाएगा यह निर्णय क्रमबद्ध पता सूची से नहीं, बल्कि नीति ऑब्जेक्ट से आता है। जिस मानसिक मॉडल को बदलना है वह कतार है: डोमेन A के लिए पहला सर्वर और डोमेन B के लिए दूसरा सर्वर जैसा कुछ नहीं होता। हर नेमस्पेस के लिए नियमों का समूह है जो सर्वरों के नाम स्पष्ट रूप से बताता है, और एक बार वे नियम हो जाने पर एडाप्टर की सूची दिलचस्प नहीं रह जाती।

मिथक: दो पते दो डोमेन बाँटते हैं

यह विश्वास टिका रहता है क्योंकि यह संयोगवश तब काम करता है जब एक सर्वर हर चीज़ का उत्तर देता है और दूसरा केवल फ़ॉलबैक होता है। क्लाइंट पहले सर्वर से पूछता है, वह सर्वर अग्रेषित करता है या पुनरावृत्ति करता है, और उत्तर आ जाता है; किसी को ध्यान नहीं आता कि ज़ोन वास्तव में किस रिज़ॉल्वर के पास था। भ्रम उस क्षण टूटता है जब दोनों नेमस्पेस अपने बीच किसी अग्रेषण के बिना अलग निजी ज़ोन में रहते हैं, क्योंकि तब पहला सर्वर अधिकारपूर्वक उत्तर देता है कि नाम मौजूद नहीं है। पहले सर्वर का नकारात्मक उत्तर फ़ॉलबैक नहीं चलाता, क्योंकि क्लाइंट को विफलता नहीं बल्कि निर्णायक उत्तर मिला है।

क्रमबद्ध सूची में डोमेन की कोई अवधारणा नहीं है, इसलिए वह इरादा व्यक्त नहीं कर सकती। सूची वास्तव में यह नियंत्रित करती है कि किस सर्वर से पहले पूछा जाए और किसे दूसरे क्रम में आज़माया जाए, और ये दोनों उत्तर हर नाम पर समान रूप से लागू होते हैं।

Windows चुनने के लिए वास्तव में क्या इस्तेमाल करता है

नेम रिज़ॉल्यूशन नीति तालिका किसी नाम को कॉन्फ़िगर किए गए नेमस्पेस से मिलाती है और उस मिलान के लिए सर्वर और विकल्प चुनती है। नियम स्थानीय रूप से कॉन्फ़िगर किए जा सकते हैं, ग्रुप नीति से भेजे जा सकते हैं या VPN प्रोफ़ाइल से दिए जा सकते हैं, और प्रभावी नीति एकल सूची नहीं बल्कि संयोजन होती है। इसीलिए पहला निदान हमेशा प्रभावी स्थिति होता है: स्थानीय रूप से बनाया गया नियम जो प्रबंधित नीति से हार जाता है, ऐसी प्रयोगशाला बनाता है जो अपने कॉन्फ़िगरेशन के अनुरूप बिल्कुल नहीं चलती। नियम विशिष्टता के आधार पर भी मिलाए जाते हैं, इसलिए एक व्यापक नेमस्पेस प्रविष्टि किसी संकीर्ण प्रविष्टि को ऐसे तरीकों से ढक सकती है जो कॉन्फ़िगर किए गए आइटम की सूची में अदृश्य होते हैं। प्रभावी क्रम पढ़ना ही यह देखने का एकमात्र तरीका है कि कौन-सा नियम जीतता है।

Get-DnsClientNrptRule
Get-DnsClientNrptPolicy -Effective

पहला कमांड बताता है कि मशीन पर क्या कॉन्फ़िगर है; दूसरा दिखाता है कि क्लाइंट वास्तव में क्या लागू करेगा, जिसमें कहीं और से आई प्रविष्टियाँ भी शामिल हैं। अगर प्रभावी आउटपुट में प्रबंधित नेमस्पेस हैं, तो उस नीति का स्वामी ही परिवर्तन माँगने की सही जगह है, स्थानीय नियम सूची नहीं। दोनों कमांड केवल स्थिति पढ़ते हैं, इसलिए किसी के परिवर्तन पर सहमत होने से पहले उन्हें चलाने में कुछ खर्च नहीं होता।

हर नेमस्पेस के लिए एक नियम, ऑब्जेक्ट रखें

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

$svcRule = Add-DnsClientNrptRule -Namespace ".svc.internal.example" -NameServers "10.60.0.53" -DisplayName "VPN lab services" -PassThru
$resRule = Add-DnsClientNrptRule -Namespace ".research.internal.example" -NameServers "10.61.0.53" -DisplayName "VPN lab research" -PassThru
$svcRule | Select-Object Name, Namespace, NameServers
$resRule | Select-Object Name, Namespace, NameServers

आरंभिक बिंदु प्रत्यय मिलान दर्शाता है, इसलिए नियम app.svc.internal.example और उसके नीचे की हर चीज़ को कवर करता है। यहाँ के दोनों पते इस प्रयोगशाला की अपनी रूटिंग योजना के हैं; कोई नियम ज़ोन नहीं बनाता, रूट नहीं स्थापित करता और अंततः जुड़ने वाले अनुप्रयोग को अधिकृत नहीं करता, और Add-DnsClientNrptRule का संदर्भ ठीक-ठीक बताता है कि कौन-सा पैरामीटर क्या करता है।

ध्यान दें ये कमांड क्या नहीं करते: ये पूरी मशीन पर लागू हैं, VPN सत्र तक सीमित नहीं हैं, और विंडो बंद होने के बाद भी बने रहते हैं। जो प्रयोगशाला इसे भूल जाती है वह सुरंग जाने के बाद पीछे नीति छोड़ देती है।

साबित करें कि क्लाइंट ने सर्वर चुना

किसी विशिष्ट सर्वर से पूछना कि वह कोई नाम जानता है या नहीं, यह साबित करता है कि सर्वर उत्तर दे सकता है, जो इस दावे के समान नहीं है कि क्लाइंट ने वही सर्वर चुना। जो परीक्षण मायने रखता है वह सामान्य क्लाइंट मार्ग से एक वास्तविक नाम रिज़ॉल्व करता है और फिर पुष्टि करता है कि किस रिज़ॉल्वर ने उसे संभाला, आदर्श रूप से तब जब रूट देने वाली सुरंग चालू हो। अगर सुरंग बंद है, तो सही ढंग से सीमित नियम भी एक अप्राप्य सर्वर की ओर इशारा करता है, जो नीति की नहीं बल्कि रूटिंग की समस्या है। दोनों स्थितियों को जाँचें ताकि बाद में उन्हें अलग पहचाना जा सके।

Resolve-DnsName app.svc.internal.example
Resolve-DnsName build.research.internal.example
Resolve-DnsName app.svc.internal.example -DnsOnly -NoHostsFile

नियमों के अस्तित्व से पहले की अवधि के कैश किए गए उत्तरों पर ध्यान दें, और उन अनुप्रयोगों पर ध्यान दें जो अपने एन्क्रिप्टेड DNS के साथ सिस्टम रिज़ॉल्वर को पूरी तरह बायपास करते हैं। खोज प्रत्यय एक और अलग विशेषता है: नियम पूरे नाम के लिए रिज़ॉल्वर चुन सकता है, पर Windows को यह नहीं सिखाता कि नंगे होस्टनाम को उस नेमस्पेस में विस्तारित करे।

जो बनाया है ठीक वही हटाएँ

सफ़ाई वह जगह है जहाँ प्रयोगशाला चेतावनी भरी कहानी बन जाती है। मशीन पर हर नियम हटाना तेज़ है और ऐसी नीति हटा देता है जिस पर कोई और निर्भर है, इसलिए नियम बनाते समय दर्ज किए गए पहचानकर्ता इस्तेमाल करें, और बाद में प्रभावी स्थिति फिर पढ़कर पुष्टि करें कि मशीन वहीं लौट आई है जहाँ से शुरू हुई थी। अगर जिस सत्र ने उन्हें बनाया वह चला गया है, तो परिवर्तन टिप्पणी ही एकमात्र जगह है जहाँ पहचानकर्ता मौजूद हैं। इसीलिए उन्हें पहला कमांड चलने से पहले लिखना चाहिए, बाद में नहीं।

Remove-DnsClientNrptRule -Name $svcRule.Name -Force
Remove-DnsClientNrptRule -Name $resRule.Name -Force
Get-DnsClientNrptPolicy -Effective

परिनियोजन के लिए, प्रयोगशाला नहीं, जीवनकाल का प्रश्न नियम जितना ही मायने रखता है। VPN प्रोफ़ाइल नेमस्पेस नियम ले जा सकती है और चुन सकती है कि वे कनेक्शन के बाद भी रहें या नहीं; जो नियम रिज़ॉल्वर के अप्राप्य रहने पर भी बना रहता है वह क्लाइंट को मृत सर्वर को प्राथमिकता देने पर छोड़ देता है, और कनेक्शन तक सीमित नियम सुरंग जाने पर गायब हो जाता है। तय करें कि सेवा को इनमें से कौन-सा व्यवहार चाहिए, चिह्नित करें कि नियम किसका है, और अधिकार का विभाजन प्रोफ़ाइल के पास दस्तावेज़ित रखें, किसी की प्रयोगशाला की याद में नहीं।

संबंधित लेख