Linux-এ FortiGate IPsec: কোন ক্লায়েন্ট আসলে সংযোগ করে
Linux-এর ভেন্ডর ক্লায়েন্ট কেবল SSL VPN বোঝে। মোবাইল IPsec প্রোফাইল vpnc বা strongSwan-এ নতুন করে গড়তে হয়, আর চারটি ফিল্ডকে গেটওয়ের সঙ্গে মিলতে হয়।
আপনার Windows সহকর্মী একটি FortiGate উইজার্ড প্রোফাইল আমদানি করেন এবং এক মিনিটেই অনলাইনে থাকেন। আপনি Ubuntu-তে একই ভেন্ডর প্যাকেজ ইনস্টল করে IPsec ট্যাব খোঁজেন, আর পান এমন একটি ক্লায়েন্ট যা কেবল SSL VPN পোর্টাল খুলতেই জানে। এরপর যে সিদ্ধান্তে আসা হয় তা সাধারণত দুই দিক থেকেই ভুল: গেটওয়ে আপনাকে প্রত্যাখ্যান করছে না, আর Linux বিল্ডটি ভাঙা নয়। Fortinet ওই ক্লায়েন্ট কেবল SSL VPN সমর্থনসহ পাঠায়, তাই মোবাইল IPsec প্রোফাইলের থাকার জায়গা নেই এবং IKEv1 বোঝে এমন কোথাও এটি নতুন করে গড়তে হয়।
প্রথমে ঠিক করুন আপনাকে আসলে কোন প্রোটোকল দেওয়া হয়েছে
পুনর্নির্মাণটি যান্ত্রিক, যতক্ষণ আপনি ভেন্ডর ক্লায়েন্টকে রেফারেন্স বাস্তবায়ন হিসেবে ধরা বন্ধ করেন।
FortiGate ডিভাইস দুটোই প্রকাশ করে, SSL VPN এবং IPsec, আর হ্যান্ডওভার ইমেইল খুব কমই বলে আপনাকে কোনটি দেওয়া হয়েছে। পোর্টাল URL-এর সঙ্গে ব্রাউজারের মতো লগইন পৃষ্ঠা মানে SSL VPN, এবং Linux-এ সেখানে উত্তর হলো openfortivpn, নিচের ফিল্ড ম্যাপিং নয়। গ্রুপ শনাক্তকারীর সঙ্গে আগে-ভাগে শেয়ার করা কী মানে মোবাইল IPsec, যা vpnc আর strongSwan সামলায়।
ভুল করাটাই Linux-এর চেষ্টা প্রথম পর্যায় শেষ হওয়ার আগেই মরে যাওয়ার সবচেয়ে সাধারণ কারণ: ক্লায়েন্ট একটি HTTPS পোর্টালকে IKEv1 দিচ্ছে, নয়তো উল্টোটা. কিছু ইনস্টল করার আগেই অ্যাডমিনিস্ট্রেটরের কাছে প্রোটোকলের নাম লিখিতভাবে চেয়ে নিন।
চারটি ক্রেডেনশিয়াল চারটি আলাদা ফিল্ডে চলে
password শব্দটি বেশিরভাগ হ্যান্ডওভারে দুবার আসে এবং দুটি আলাদা জিনিস বোঝায়। আগে-ভাগে শেয়ার করা কী নিজেই পিয়ারকে প্রমাণ করে, আর এটি একটি মেশিন গোপনীয়তা যা অ্যাডমিনিস্ট্রেটর গেটওয়ে কনফিগারেশন থেকে পড়েন। আপনার অ্যাকাউন্ট পাসওয়ার্ড আলাদা ক্রেডেনশিয়াল, যা প্রমাণ করে ওই পিয়ারের পিছনে কোন মানুষটি আছে।
বাকি দুটি মান সহজেই বাদ পড়ে। গ্রুপ শনাক্তকারী হলো সেই স্ট্রিং যা উইজার্ড IPsec গ্রুপ অবজেক্টে লিখেছিল, আর 0 একটি বৈধ মান, ফাঁকা ফিল্ড নয়। প্রস্তাবে প্রতি পর্যায়ের জন্য এনক্রিপশন, হ্যাশিং ও একটি Diffie-Hellman গ্রুপ, সঙ্গে PFS সেটিং থাকে, আর তার প্রতিটি বস্তুকে গেটওয়ের সঙ্গে মিলতে হয়। কোনো সংযোগ 1 নম্বর পর্যায়ে ব্যর্থ হলে প্রায় সবসময়ই এই চারটির একটি দায়ী, তাই সেগুলো এক ডায়ালগে ফেলে না দিয়ে আলাদা করে লিখে রাখুন।
vpnc-এর প্রতিটি ফিল্ডে কী থাকতে হবে
ক্লায়েন্টটি এডিটর ফ্রন্ট-এন্ডসহ ইনস্টল করুন, তারপর একটি VPNC সংযোগ তৈরি করুন:
sudo apt install vpnc network-manager-vpnc network-manager-vpnc-gnome
গেটওয়েতে FortiGate-এর পাবলিক ঠিকানা দিন, আর গ্রুপের নামে গেটওয়ে থেকে পাওয়া শনাক্তকারী হুবহু দিন, খালি শূন্যসহ। Group password ফিল্ডে আগে-ভাগে শেয়ার করা কী বসে, আর ব্যবহারকারীর নাম ও পাসওয়ার্ডে আপনার অ্যাকাউন্ট, গেটওয়ে যেভাবে আশা করে সেভাবে কোনো টোকেন যোগ করে। অ্যাডভান্সড ডায়ালগে প্রস্তাবে বলা Diffie-Hellman গ্রুপ বেছে নিন, PFS একই গ্রুপের সঙ্গে মেলান, ক্লায়েন্ট হোম রাউটারের পিছনে থাকলে NAT traversal চালু করুন, আর ডেড পিয়ার সনাক্তকরণ গেটওয়ের সঙ্গে একই তালে রাখুন।
গ্রুপের নামই সেই ফিল্ড যা বাদ পড়ে, কারণ এটি ঐচ্ছিক দেখায় আর ডিফল্ট শূন্য প্লেসহোল্ডারের মতো লাগে। এটি ফাঁকা পাঠালে ক্লায়েন্ট গেটওয়ে যাচাই করে এমন শনাক্তকারীর চেয়ে আলাদা একটি পাঠায়। প্রোফাইল তবুও ব্যর্থ হলে অ্যাডভান্সড মানগুলো অন্য সাইটের ফোরাম পোস্টের সঙ্গে নয়, কাজ করা Windows ক্লায়েন্টের সঙ্গে মিলিয়ে দেখুন।
strongSwan-এর জন্য লেখা একই প্রোফাইল
এই মানগুলোর জন্য strongSwan দীর্ঘমেয়াদে ভালো আধার, কারণ কনফিগারেশন একটি টেক্সট ফাইল যা আপনি দেখে রাখতে পারেন:
conn office-fw
keyexchange=ikev1
aggressive=yes
left=%any
leftauth=psk
leftauth2=xauth
xauth_identity=YOUR_USER
right=GATEWAY_ADDRESS
rightauth=psk
rightsubnet=OFFICE_SUBNET
ike=aes128-sha1-modp1536!
esp=aes128-sha1-modp1536!ব্লকের আগে প্রস্তাবের লাইনগুলো পড়ুন, কারণ শেষের বিস্ময়চিহ্ন তাদের অর্থ বদলে দেয়: এটি ওই একক প্রস্তাবটি পিন করে এবং ক্লায়েন্ট যে বিকল্পগুলো দিত সেগুলো সরিয়ে দেয়। একটি ট্রান্সফর্ম জোড়ার জন্য কনফিগার করা গেটওয়ে তালিকা দিয়ে শুরু করা ক্লায়েন্টকে প্রত্যাখ্যান করবে, তাই পিন করাই আলোচনাকে মিলে পরিণত করে. কাজ করা গেটওয়ে প্রোফাইল থেকে অ্যালগরিদমের সঠিক নাম নিন, আর প্লেসহোল্ডারগুলো নিজের মান দিয়ে বদলে দিন।
দুটি প্রমাণীকরণ লাইন বাড়তি নয়। PSK পিয়ারকে প্রমাণ করে, XAuth ব্লক ব্যবহারকারীকে প্রমাণ করে, আর যেকোনোটি বাদ দিলে এমন একটি পর্যায় থাকে যা গেটওয়ে শেষ করবে না।
আরেকটি ফিল্ড বদলানোর আগে ব্যর্থতাটি পড়ুন
ডায়ালগ আবার এলোমেলো করার বদলে লক্ষণ থেকে পিছনের দিকে কাজ করুন। নির্ধারিত ঠিকানা ছাড়া ওঠা IKE SA মানে ব্যবহারকারী প্রমাণীকরণের বিনিময় ব্যর্থ হয়েছে বা কখনো চলে নি, তাই অ্যাকাউন্ট ও টোকেন পরিচালনা দেখুন। কখনো শেষ না হওয়া 1 নম্বর পর্যায় প্রস্তাব, গ্রুপ শনাক্তকারী বা আগ্রাসী মোডের দিকে ইশারা করে, আর এদের প্রত্যেককে গেটওয়ের সঙ্গে মেলানো হয়, কেবল Windows ক্লায়েন্টের সঙ্গে নয়।
যে টানেল প্রতিষ্ঠিত হয়ে কয়েক মিনিট পরপর মরে যায় সেটি দুই প্রান্তের মধ্যে ডেড পিয়ার সনাক্তকরণের অমিল; সর্বত্র keepalive বন্ধ করার বদলে গেটওয়ের টাইমার মিলিয়ে নিন। প্রতিষ্ঠিত টানেলে অফিসের হোস্টগুলো যদি না পৌঁছায়, তার মানে সাধারণত পাঠানো সাবনেট কখনো স্থানীয় রাউটিং টেবিলে পৌঁছায় নি, যা তৃতীয় পক্ষের ক্লায়েন্ট নিজে নাও করতে পারে।
শেষ হলে কাজ করা মানগুলো গেটওয়ের মালিককে ফিরিয়ে দিন: প্রোটোকল, গ্রুপ শনাক্তকারী, আগে-ভাগে শেয়ার করা কী, প্রস্তাব, PFS আর DPD-এর সিদ্ধান্ত। তখন পরের Linux মেশিনটি এক সন্ধ্যার বদলে কয়েক মিনিট নেবে, আর গ্রুপের নাম শূন্য ছিল বলে কাউকে নতুন করে আবিষ্কার করতে হবে না।