Windows ও strongSwan: IKE প্রস্তাবে চারটি ট্রান্সফর্ম মেলানো
কী-বিনিময় গোষ্ঠী নিয়ে দুই পক্ষ একমত না হলে একটি সাধারণ সাইফার যথেষ্ট নয়। চারটি ট্রান্সফর্মই তুলনা করুন, তারপর একটি সীমিত প্রোফাইল নীতি প্রয়োগ করুন।
দুই পক্ষই AES সমর্থন করে, দুজনেই SHA-256 গ্রহণ করে, তবুও টানেল ওঠে না। প্রস্তাবটি এমন একটি উপাদানে ব্যর্থ হয়েছে যা কেউ তুলনা করেনি, সাধারণত কী-বিনিময় গোষ্ঠী। এই নির্দেশনাটি কিছু বদলানোর আগে প্রকৃত বিনিময়টি পড়ে, একটি সীমিত নীতি প্রয়োগ করে এবং আগের প্যারামিটার ফিরিয়ে আনে এমন একটি রোলব্যাক রেখে যায়।
গোষ্ঠী বদলানোর আগে ব্যর্থতাটি পড়ুন
“পলিসি মিলের ত্রুটি” একটি সারসংক্ষেপ, রোগনির্ণয় নয়। এর অর্থ হলো পরস্পর গ্রহণযোগ্য কোনো প্রস্তাব পাওয়া যায়নি, এবং এটি কোন উপাদান প্রত্যাখ্যাত হয়েছে সে সম্পর্কে কিছুই বলে না। এটিকে নির্দিষ্ট কোনো গোষ্ঠী সম্পর্কে প্রমাণ হিসেবে নয়, তদন্তের শুরু হিসেবে ধরুন।
উত্তরটি সাধারণত সার্ভার পক্ষেই থাকে। উপযুক্ত স্তরে strongSwan লগ ক্লায়েন্টের কাছ থেকে পাওয়া প্রস্তাব এবং যা গ্রহণ করার জন্য এটি কনফিগার করা আছে সেই প্রস্তাব তালিকাভুক্ত করে, আর দুই তালিকার পার্থক্যই ব্যর্থ উপাদানটির নাম বলে দেয়।
ক্লায়েন্ট পুরোনো কোনো ফোরাম পোস্টে যা বলা আছে তা-ই দেয়—এটা ধরে নেবেন না। সক্রিয় প্রোফাইল ও তার ইনস্টল করা নীতি প্রস্তাবিত তালিকা নির্ধারণ করে, আর হালনাগাদ করা Windows বিল্ড আপনি যে স্ক্রিনশট থেকে নকল করছেন তার চেয়ে ভিন্ন সেট দিতে পারে।
দুই তালিকাই লিখে রাখুন। চারটি ট্রান্সফর্ম অবস্থান আর একটি গোষ্ঠী—ছোট তালিকা, এবং লাইন ধরে ধরে তুলনা করতে যেকোনো পরীক্ষার চেয়ে কম সময় লাগে। চারটি অবস্থান চোখের সামনে রাখা সহজ। লগ ফাইল নয়।
প্রতিটি ট্রান্সফর্ম তুলনা করুন, একটি পরিচিত নাম নয়
একটি IKE প্রস্তাব হলো এমন কিছু পছন্দের সমষ্টি যেগুলোর সবগুলোই মিলতে হবে। এনক্রিপশন আলোচনাকে রক্ষা করে, ইন্টেগ্রিটি বা একটি PRF তা প্রমাণ করে, আর একটি Diffie-Hellman গোষ্ঠী নতুন কী উপাদান তৈরি করে। প্রথম দুটিতে মিলে গিয়ে তৃতীয়টিতে ভিন্ন হওয়া প্রস্তাবও দুই পক্ষের কাছেই অগ্রহণযোগ্য।
এখানে যে দুই Windows ফিল্ড নিয়ে বিভ্রান্তি হয় সেগুলো ভিন্ন পর্যায়ের। DHGroup IKE কী-বিনিময়ের জন্য প্রযোজ্য, আর PfsGroup ট্রাফিক রক্ষা করা চাইল্ড অ্যাসোসিয়েশনের জন্য প্রযোজ্য। দ্বিতীয়টি বদলালে প্রথমটির ব্যর্থতা সারানো যায় না।
বাস্তবায়নভেদে গোষ্ঠীর নাম আলাদা, আর এটি বিভ্রান্তির আরেকটি আলাদা উৎস। strongSwan modp2048 ও ecp256 লেখে, অন্যদিকে Windows Group14 ও ECP256-এর মতো এনুমারেশন নাম ব্যবহার করে, তাই তুলনার আগে অনুবাদ করতে হয়। দুই নামসহ দুই কলামের একটি নোট রাখুন। তখন পরের অমিলটি শ্রেণিবদ্ধ করতে সেকেন্ড খানেক লাগে।
| Transform | Windows parameter | strongSwan name | Failure it causes |
|---|---|---|---|
| Encryption | CipherTransformConstants | aes, aes256gcm and similar | No common proposal at all |
| Integrity or PRF | AuthenticationTransformConstants | sha256, sha512 and similar | Proposal rejected after encryption matches |
| Key-exchange group | DHGroup | modp2048, ecp256 | Exchange fails during key establishment |
| Child SA protection | PfsGroup | esp proposal groups | Tunnel negotiates, data association does not |
একটি সম্পূর্ণ ও সীমিত নীতি প্রয়োগ করুন
নেটিভ IKEv2 প্রোফাইলের জন্য সমর্থিত উপায় হলো প্রতি-সংযোগভিত্তিক IPsec নীতি, যা একবারে একটি ফিল্ড নয় বরং একটি অবজেক্ট হিসেবে সেট করা হয়। আগে প্রিভিউ করুন, তারপর প্রয়োগ করুন, আর আগের প্যারামিটার পরিবর্তনের রেকর্ডে রাখুন।
Set-VpnConnectionIPsecConfiguration -ConnectionName "Northwind IKEv2" -AuthenticationTransformConstants SHA256128 -CipherTransformConstants AES256 -EncryptionMethod AES256 -IntegrityCheckMethod SHA256 -DHGroup ECP256 -PfsGroup ECP256 -WhatIf
-WhatIf সুইচটি স্থানীয় পরিবর্তনের প্রিভিউ দেয় এবং কিছুই প্রয়োগ করে না। এটি কাজের, আবার একটি সাধারণ ফাঁদও, কারণ প্রিভিউ কেবল প্রমাণ করে যে প্যারামিটারগুলো স্থানীয় cmdlet-এর জন্য সিনট্যাক্টিকভাবে গ্রহণযোগ্য। গেটওয়ে ফলাফলপ্রাপ্ত প্রস্তাব গ্রহণ করবে কি না সে সম্পর্কে এটি কিছুই বলে না।
সঙ্গে সঙ্গে স্কোপও মিলিয়ে নিন। all-user স্টোরের একটি সংযোগের জন্য সংশ্লিষ্ট all-user প্যারামিটার দরকার, আর একই ডিসপ্লে নাম দিয়ে per-user প্রোফাইল সম্পাদনা করলে ভিন্ন একটি অবজেক্ট বদলায় যা টানেল ব্যবহার করে না।
তারপর পরীক্ষার আগে strongSwan দিকটিও একই সেটে মিলিয়ে নিন। দুই প্রান্তে সমন্বিত পরিবর্তনই একমাত্র সংস্করণ যা অভিসারী হয়; এক দিক বদলে বারবার আবার চেষ্টা করলে একই প্রত্যাখ্যানে ভরা লগ তৈরি হয়।
বিনিময় ও কী-পুনর্নবীকরণ আলাদাভাবে যাচাই করুন
সফল সংযোগ একটি পর্যবেক্ষণ, আর কী-পুনর্নবীকরণ আরেকটি। প্রাথমিক IKE আলোচনা এক সেট প্যারামিটার ব্যবহার করে, আর ট্রাফিক বহন করা চাইল্ড অ্যাসোসিয়েশন পরে নিজের নীতি দিয়ে পুনরায় আলোচনা হতে পারে। যে সেটআপ সংযোগ হয়েই কিছুক্ষণ পরে পড়ে যায় সেটি সাধারণত দ্বিতীয় ঘটনা।
ipsec statusall | grep -A6 "Northwind"
Get-VpnConnection -Name "Northwind IKEv2" | Format-List *
প্রথম কমান্ড সার্ভারের দৃষ্টিতে প্রতিষ্ঠিত অ্যাসোসিয়েশনগুলো দেখায়, চাইল্ড SA ও তার অবশিষ্ট আয়ুষ্কালসহ। দ্বিতীয়টি দেখায় ক্লায়েন্ট প্রোফাইলে এখন কী আছে, আর আপনি যে নীতি সেট করেছেন সেটিই কার্যকর নীতি তা নিশ্চিত করার একমাত্র উপায় এটি।
সফলতা ঘোষণার আগে একটি পূর্ণ কী-পুনর্নবীকরণ দেখুন। এর অর্থ হলো চাইল্ড অ্যাসোসিয়েশন প্রতিস্থাপিত হওয়ার মতো যথেষ্ট সময় সংযোগটি চালু রাখা, তারপর ট্রাফিক চলছে কি না নিশ্চিত করা। বেশিরভাগ নীতি-অমিল ওই ধাপেই লুকিয়ে থাকে, কারণ প্রাথমিক আলোচনা এমন সেট দিয়েও সফল হতে পারে যা পুনর্নবীকরণ গ্রহণ করে না।
রোলব্যাক মানে আগের প্যারামিটার সেট, কোনো ঢিলেঢালা বিকল্প নয়। ক্লায়েন্ট যদি কেবল একটি দুর্বল পুরোনো গোষ্ঠী দেয়, তবে উত্তর হলো ক্লায়েন্ট ও সার্ভারের সাধারণ নীতি উন্নত করা, সেই গোষ্ঠীটিকে গেটওয়েতে যোগ করা নয় যেখানে ভবিষ্যতের প্রতিটি পক্ষ তার কাছে নেমে আলোচনা করতে পারবে।
চারটি প্যারামিটার, গোষ্ঠী, সংযোগের স্কোপ ও কী-পুনর্নবীকরণের ফল লিখে রাখুন। এটি ছোট একটি নোট, আর এটিই একটি রানবুকের সঙ্গে টানেল ওঠার দিনের গল্পের পার্থক্য।