Windows এমন একটি IKEv2 ক্লায়েন্ট দেয় যা PowerShell শুরু থেকে শেষ পর্যন্ত নিয়ন্ত্রণ করে, তাই কাজ করা টানেলের জন্য কোনো GUI বা তৃতীয় পক্ষের সফটওয়্যার লাগে না। প্রায় প্রতিটি ব্যর্থতা তিন জায়গা থেকে আসে: সার্টিফিকেট কোথায় গেল, রুট প্রিফিক্সগুলো কীভাবে লেখা হলো, এবং বেছে নেওয়া EAP পদ্ধতি কী আশা করে। এই ক্রমেই সেগুলো সামলান, কারণ পরেরটি শুরুর আগে প্রতিটিই যাচাইযোগ্য, আর পরের কোনো ত্রুটি আগের ত্রুটিকে ঢেকে দেবে।

মেশিন-সার্টিফিকেট টানেল থাকে যাতে কেউ লগইন করার আগেই সেটি চালু হয়, তাই পরিচয় সাধারণত ব্যবহারকারীর স্টোরের বদলে কম্পিউটারের স্টোরে থাকতে হয়।

আগে সার্টিফিকেট, পরে টানেল

দুটি ইমপোর্ট গুরুত্বপূর্ণ। ক্লায়েন্ট পরিচয় Import-PfxCertificate দিয়ে Cert:\LocalMachine\My-এ যায়, আর ইস্যুকারী CA Import-Certificate দিয়ে Cert:\LocalMachine\Root-তে যায়। একক লিফ সার্টিফিকেট নিজে কোনো চেইন প্রমাণ করে না, তাই দ্বিতীয় ইমপোর্ট বাদ দিলে যাচাইয়ের কাছে ভরসা করার কিছু থাকে না। উপস্থিতির বাইরে প্রাইভেট কী সংযুক্ত থাকতে হবে এবং কম্পিউটার অ্যাকাউন্টকে তা পড়ার অনুমতি দিতে হবে। Get-ChildItem Cert:\LocalMachine\My দেখায় কী এসেছে; সাবজেক্টের বদলে থাম্বপ্রিন্ট মিলিয়ে দেখুন, কারণ প্রায় একই রকম সাবজেক্ট সাধারণ ব্যাপার।

প্রয়োগ করার আগে এক্সটেন্ডেড কী ইউসেজ যাচাই করুন। IKEv2 মেশিন পরিচয়ের জন্য ক্লায়েন্ট প্রমাণীকরণই স্বাভাবিক দাবি, আর বিপরীত পক্ষকে অবশ্যই সেই CA-কে বিশ্বাস করতে হবে যা এটি সই করেছে। ব্যবহারকারীর স্টোরে থাকা পরিচয় কম্পিউটার-প্রসঙ্গের সংযোগের কাছে অস্তিত্বহীন।

প্রোফাইল ও তার রুটগুলো তৈরি করুন

Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection প্রোফাইলটি লেখে। -AllUserConnection সুইচটি এটি গ্লোবাল ফোন বুক-এ প্রকাশ করে, যা শেয়ার করা বা সার্ভিস-পরিচালিত মেশিনের জন্য উপযুক্ত; একক ব্যবহারকারীর ক্ষেত্রে এটি বাদ দিন। আপনি যে ঠিকানাই দিন, তা অবশ্যই সার্ভারের সার্টিফিকেটে থাকা DNS নামের সঙ্গে মিলতে হবে, নইলে টানেল চালু হওয়ার পরেই ত্রুটিটি দেখা যাবে। এরপর Add-VpnConnectionRoute দিয়ে এক এক করে প্রিফিক্স যোগ করা হয়, আর কেবল সেগুলোই যা ডিজাইনের সত্যিই দরকার।

IPv6-এ একটা অদ্ভুততা আছে: Windows ::/0-কে VPN রুট হিসেবে মানে না, তাই ::/1 আর 8000::/1 একসঙ্গে একই ঠিকানা-পরিসর ঢেকে দেয়। কোনো প্রিফিক্স রাউট করলেও দূরের ফায়ারওয়ালে কিছুই মেলে না, তাই প্রিফিক্স তালিকা আর ফায়ারওয়াল নীতি আলাদা নথি হয়েই থাকে।

ক্রেডেনশিয়াল প্রমাণীকরণ পদ্ধতির অধীন

মেশিন-সার্টিফিকেট প্রোফাইলে কোনো ব্যবহারকারী গোপন তথ্য লাগে না, কিন্তু EAP-MSCHAPv2 প্রোফাইলে লাগে। দ্বিতীয় ক্ষেত্রে VPNCredentialsHelper মডিউল Set-VpnConnectionUsernamePassword দেয়, আর এটি সাধারণ টেক্সট চায়: $cred.Password হলো SecureString, তাই আগে GetNetworkCredential().Password দিয়ে এর মোড়ক খুলুন। যে জায়গায় কমান্ডটি চলে সেখানেই মডিউলটি ইনস্টল করুন, কেবল যেখানে এটি লেখা হয়েছিল সেই ওয়ার্কস্টেশনে নয়। EAP-TLS বা কাস্টম পদ্ধতি এই cmdlet একেবারেই ব্যবহার করে না; বরং এটি একটি EAP কনফিগারেশন XML নেয়।

rasdial "Office IKEv2" শেল থেকে সংযোগটি তোলে, আর ফলাফল ইভেন্ট লগে নয়, সামনাসামনি দেখার এটাই দ্রুততম উপায়।

সংযুক্ত টানেল কী প্রমাণ করে না

সংযুক্ত অবস্থা IKE বিনিময় ও প্রমাণীকরণ ধাপ ঢাকে, এর বাইরে কিছুই নয়। DNS-এর আচরণ, কোনো প্রাইভেট হোস্টের পথ এবং দূরের ফায়ারওয়াল — সবই এখনো অপ্রমাণিত। বাইরের দিকে এগোন: টানেল অ্যাডাপ্টার, তারপর প্রাইভেট ঠিকানার জন্য রুট অনুসন্ধান, তারপর এমন একটি সার্ভিস যার অনুমতি আপনার আছে। যে পর্যবেক্ষণটি প্রথমে ব্যর্থ হয়, সেটিই তদন্তের স্তর চিহ্নিত করে।

প্রোফাইল বদলালে আগেরটি Remove-VpnConnection -Name "Office IKEv2" -Force দিয়ে মুছে ফেলুন, তারপর নতুন করে তৈরি করুন; নইলে সম্পাদনার পরেও পুরোনো সেটিংস ও রুট থেকে যায়। তবুও যদি সংযোগ না হয়, প্রোফাইলে লেখা থাম্বপ্রিন্টটি স্টোরে থাকা থাম্বপ্রিন্টের সঙ্গে মিলিয়ে দেখুন, কারণ Windows এমন পরিচয়ের রেফারেন্স ধরে রাখতে পারে যা ইতিমধ্যে অপরিবর্তিত সাবজেক্টের অধীনে বদলে ফেলা হয়েছে।

থাম্বপ্রিন্ট, EAP পদ্ধতি ও রুট তালিকা প্রোফাইলের পাশে রাখুন। একসঙ্গে এগুলোই পরে যা ভুল হয় তার বেশিরভাগ ব্যাখ্যা দেয়।

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