Windows VPN সংযোগ Settings-এ আপনি যে প্রোফাইল সম্পাদনা করেন সেখানে DNS সার্ভার সংরক্ষণ করে না। টানেল উঠলে ক্লায়েন্ট গেটওয়ের সঙ্গে IP কনফিগারেশন নিয়ে দরকষাকষি করে, গেটওয়ে একটি রিজলভার তালিকা পাঠায়, আর Windows সেটি টানেল অ্যাডাপ্টারে প্রয়োগ করে। ওই অ্যাডাপ্টার আপনার Wi-Fi বা Ethernet থেকে আলাদা ইন্টারফেস, এবং তালিকাটি ইন্টারফেসের, প্রোফাইলের নয়। কোন অবজেক্ট মানটি ধরে আছে জানলে PowerShell-এ সেটি ওভাররাইড করা এক কমান্ড; ওভাররাইডটি পুনঃসংযোগ টিকে থাকুক—সেটাই সিদ্ধান্ত চাওয়া অংশ।

ঠিকানা কোন অবজেক্টের

RAS সংযোগ সফল হলে টানেল অ্যাডাপ্টার তৈরি করে এবং সংযোগ কাটলে তা সরিয়ে দেয়। যে DNS সার্ভার আপনি ipconfig /all -এ দেখেন সেগুলো ওই কনফিগারেশন বিনিময়ের সময় IPv4 ও IPv6 ঠিকানা এবং রুটগুলোর পাশে আসে। যেহেতু মানটি ইন্টারফেসে সংযুক্ত, Set-DnsClientServerAddress এমন কিছুতে লেখে যা সংযোগ যতক্ষণ থাকে ততক্ষণই বিদ্যমান।

এই একক সত্যটিই VPN DNS নিয়ে বেশিরভাগ বিভ্রান্তি ব্যাখ্যা করে। সংযোগ বিচ্ছিন্ন অবস্থায় প্রোফাইল দেখা যায়, কিন্তু দেখানোর মতো কোনও ইন্টারফেস থাকে না, তাই VPN অ্যালিয়াসের বিরুদ্ধে কমান্ডটি ডাকা লগইন স্ক্রিপ্ট কেউ সংযোগ করার আগেই ব্যর্থ হয়। এটি একটি পরিবর্তনও ব্যাখ্যা করে যা ফিরে যাওয়ার মতো দেখায়: কিছুই ফেরেনি, ইন্টারফেসটি ধ্বংস হয়ে গেটওয়ে যে মান পাঠিয়েছিল তা দিয়ে আবার তৈরি হয়েছিল।

DNS স্পর্শ করার আগে অ্যালিয়াস খুঁজুন

প্রোফাইলের নাম ও ইন্টারফেস অ্যালিয়াস সাধারণত একই স্ট্রিং, কিন্তু তারা একই অবজেক্ট নয়। Get-VpnConnection প্রোফাইল তালিকাভুক্ত করে; Get-NetAdapter Windows-এর সত্যিই থাকা ইন্টারফেসগুলো তালিকাভুক্ত করে। DNS কমান্ডগুলো দ্বিতীয়টি চায়, আর দুটি মানুষ যা আশা করে তার চেয়ে বেশি বার আলাদা হয়ে যায়, বিশেষত যখন ক্লায়েন্ট অ্যাডাপ্টারের নামে "(RAS)" জাতীয় বর্ণন যোগ করে।

প্রোফাইল না থাকলে PowerShell একটি নেটিভ এন্ট্রি তৈরি করতে পারে। টানেলের ধরন ও প্রমাণীকরণ গেটওয়ে যা দেয় তার সঙ্গে মিলতে হবে, কারণ অমিল সংযোগের সময় প্রকাশ পায়, তৈরির সময় নয়:

Add-VpnConnection -Name "Corporate" -ServerAddress vpn.example.net `
  -TunnelType Ikev2 -EncryptionLevel Required `
  -AuthenticationMethod Eap -AllUserConnection

একবার সংযোগ করুন, তারপর কোনও DNS কমান্ড লেখার আগে আসল অ্যালিয়াস পড়ুন:

rasdial.exe "Corporate"
Get-NetAdapter | Where-Object InterfaceDescription -like "*VPN*"
Get-DnsClientServerAddress -InterfaceAlias "Corporate"

সঠিক ক্রমে ওভাররাইড প্রয়োগ করুন

বাক্যরচনার চেয়ে ক্রম বেশি জরুরি। অ্যাডাপ্টার চালু থাকতে হবে, অ্যালিয়াস রিজলভ হতে হবে, এবং অ্যাকাউন্টকে ইন্টারফেস সেটিংস বদলানোর অনুমতি থাকতে হবে। প্রতি-ব্যবহারকারী সংযোগ সাধারণত সাইন-ইন করা ব্যবহারকারীর কাছ থেকে পরিবর্তন গ্রহণ করে; -AllUserConnection দিয়ে তৈরি সব-ব্যবহারকারী সংযোগের সাধারণত উন্নীত শেল প্রয়োজন।

কমান্ডটি নিজেই এক লাইন, Microsoft-এর Set-DnsClientServerAddress রেফারেন্সে নথিভুক্ত:

Set-DnsClientServerAddress -InterfaceAlias "Corporate" -ServerAddresses 10.20.0.53,10.20.0.54
Get-DnsClientServerAddress -InterfaceAlias "Corporate" -AddressFamily IPv4

দুটি ব্যর্থতার ধরন দেখেই চেনার মতো। ভুল অ্যালিয়াস কমান্ড থেকে ত্রুটি দেয়, এটাই ভালো ফল, কারণ নীরবতা আরও খারাপ হতো। দৃশ্যমান প্রভাব ছাড়া সঠিক কমান্ড সাধারণত বোঝায় আপনি ভুল অ্যাডাপ্টার দেখছেন: অন্য ক্লায়েন্ট থেকে পড়ে থাকা টানেল অ্যাডাপ্টার, একইরকম বর্ণনার একটি ফিজিক্যাল NIC, বা স্যান্ডবক্স নেটওয়ার্কিং টুলে তৈরি দ্বিতীয় ভার্চুয়াল অ্যাডাপ্টার।

কেন পুনঃসংযোগ পরিবর্তন বাতিল করতে পারে

ওভাররাইডটি এক ইন্টারফেস ইনস্ট্যান্সের। পরের সংযোগে ক্লায়েন্ট অ্যাডাপ্টার ভেঙে আবার গড়লে পাঠানো মান আবার প্রয়োগ হয় এবং আপনার তালিকা হারিয়ে যায়। কিছু ক্লায়েন্ট প্রতিটি সংযোগে ইন্টারফেস নতুন করে তৈরি করে; অন্যরা সেশনজুড়ে এটি পুনঃব্যবহার করে। Get-NetAdapter -এ ইন্টারফেস ইনডেক্স দুটি সংযোগে তুলনা করুন, তাহলে বুঝবেন আপনার কোন আচরণ।

তিনটি টেকসই উত্তর আছে, আর সেগুলো স্তূপ করলে নিজের বাগ তৈরি হয়। সংযোগ-নির্দিষ্ট DNS সাফিক্সের সঙ্গে একটি NRPT নিয়ম শুধু অভ্যন্তরীণ নেমস্পেস অভ্যন্তরীণ রিজলভারে পাঠায় এবং পাবলিক নামগুলো অক্ষত রাখে। VPN সংযোগে প্রয়োগ করা Group Policy বা MDM সেটিং কোনও স্ক্রিপ্ট ছাড়াই সংযোগের সময় DNS সেট করে। সংযোগ ইভেন্টে সাড়া দিয়ে কমান্ড আবার চালানো একটি নির্ধারিত কাজ মোটা সমাধান, কিন্তু এটি কাজ করে এবং লগ রাখে। DNS-এর জন্য একজন মালিক বাছুন এবং কোনজন তা লিখে রাখুন।

এক-লেবেল অভ্যন্তরীণ নামেরও সাফিক্স অনুসন্ধান তালিকা দরকার। Set-DnsClientGlobalSetting -SuffixSearchList মেশিন-ব্যাপী, তাই এটি Ethernet সহ বাক্সের প্রতিটি অ্যাডাপ্টারের রিজল্যুশন বদলে দেয়। ইমেজে ঢোকার আগে ল্যাব মেশিনে পরীক্ষা করুন।

রিজল্যুশন যাচাই করুন, শুধু সেটিং নয়

অ্যাডাপ্টারে তালিকাভুক্ত রিজলভার কেবল প্রমাণ করে একটি মান লেখা হয়েছে। উদ্দিষ্ট সার্ভারকে সরাসরি জিজ্ঞাসা করুন, তারপর স্বাভাবিক পথে জিজ্ঞাসা করুন:

Resolve-DnsName server01.corp.example -Server 10.20.0.53
Resolve-DnsName server01.corp.example

বিভাজনটি বলে দেয় ত্রুটি কোথায়। সরাসরি কোয়েরি উত্তর দেয় আর সাধারণ কোয়েরি ব্যর্থ হয়: অ্যাডাপ্টার সেটিং বা সাফিক্স তালিকা কার্যকর নয়। দুটোই ব্যর্থ: টানেল দিয়ে রিজলভারে পৌঁছানো যায় না, তাই DNS আবার স্পর্শ করার আগে রুট ও ফায়ারওয়াল নিয়ম দেখুন। সরাসরি কোয়েরি ব্যর্থ হয় অথচ সাধারণ কোয়েরি অন্য কোথাও থেকে উত্তর দেয়: split DNS ভুলভাবে কনফিগার করা এবং একটি অভ্যন্তরীণ নাম পাবলিক রিজলভার উত্তর দিচ্ছে, যা সংযোগ সমস্যার আগে নীতি সমস্যা।

পরীক্ষাটি দুবার চালান, একবার সংযোগের ঠিক পরে এবং একবার বিচ্ছেদ ও পুনঃসংযোগের পরে, এবং Get-DnsClientServerAddress দুটি রানের আউটপুট তুলনা করুন। দ্বিতীয় সংযোগে পাঠানো মান ফিরে এলে ওভাররাইডটি অ্যাডাপ্টারের সঙ্গে বেঁচে ও মরেছে, আর আগের অংশের NRPT বা নীতি রুটই টিকবে। দুটি ট্রান্সক্রিপ্ট ও সংযোগের টাইমস্ট্যাম্প রাখুন; সেগুলো আরেক দফা সম্পাদনার চেয়ে দ্রুত ঠিক করে এটি টেকে কি না।

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