একটি অ্যাডাপ্টারে দুটি রিজলভার তালিকাভুক্ত করা দেখে মনে হয় এটি একটি ডোমেইনকে একটি সার্ভারে এবং আরেকটি ডোমেইনকে অন্যটিতে পাঠানোর উপায়, কিন্তু রিজলভার তালিকার কোনো কিছুই সেভাবে কাজ করে না। 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 প্রোফাইল নেমস্পেস নিয়মগুলো বহন করতে পারে এবং সংযোগের পরে সেগুলো টিকে থাকবে কি না তা বেছে নিতে পারে; যে নিয়ম রিজলভার অপ্রাপ্য থাকা অবস্থায়ও টিকে থাকে তা ক্লায়েন্টদের একটি মৃত সার্ভার পছন্দ করতে দেয়, আর সংযোগ-সীমিত নিয়ম সুড়ঙ্গ চলে গেলে অদৃশ্য হয়ে যায়। এই আচরণগুলোর মধ্যে কোনটি সেবার দরকার তা ঠিক করুন, নিয়মের মালিক কে তা চিহ্নিত করুন, এবং কর্তৃত্বের বিভাজন কারও ল্যাব-স্মৃতিতে নয়, প্রোফাইলের পাশে নথিভুক্ত রেখে দিন।

সম্পর্কিত নিবন্ধ