সংযোগটি বৃহস্পতিবার কাজ করছিল, আপগ্রেড চলল শুক্রবার, আর সোমবার ক্লায়েন্ট “connecting”-এ ঘুরতে থাকে এবং হাল ছেড়ে দেয়। একই ল্যাপটপ, একই সার্ভার, একই অ্যাকাউন্ট, একই পূর্ব-শেয়ার করা কী। প্রোফাইলে কিছুই সম্পাদনা করা হয়নি, তাই দৃশ্যত সন্দেহভাজন দুটি, পাসওয়ার্ড ও ফায়ারওয়াল, আপনার সময় নষ্ট করে।

যা বদলেছে তা হলো আপনার মেশিন যে রূপান্তরগুলো দিতে রাজি তার তালিকা। Ubuntu-তে ব্যবহৃত দুটি IPsec স্ট্যাক, strongSwan ও Libreswan, যে অ্যালগরিদমগুলোকে আর নিরাপদ মনে করে না সেগুলো বাদ দেয়, আর তাদের সামনে থাকা NetworkManager প্লাগিনের নিজস্ব তালিকা আছে যা ভিন্ন সময়সূচিতে সরে। 3DES, SHA1 ও 1024 বিটের Diffie-Hellman গ্রুপে পিন করা একটি সার্ভার শেষ পর্যন্ত যা গ্রহণ করে তা-ই শুনতে না পেতে পারে।

আপগ্রেড আসলে কী বদলেছে

IKEv1 প্রস্তাব পুষ্ট হয় দুটি স্তর থেকে। ডেমনটি কম্পাইলে অন্তর্ভুক্ত একটি ডিফল্ট প্রস্তাব সেট সরবরাহ করে, আর L2TP প্লাগিন হয় এটির ওপর নির্ভর করে, নয়তো নিজের তালিকা দেয়। NetworkManager-l2tp 1.2.16-এর আগে প্লাগিনটি নির্ভর করত, তাই আপনার প্রস্তাব ছিল ইনস্টল করা ডেমন যা যুক্তিসঙ্গত মনে করে তা-ই। 1.2.16 থেকে প্লাগিনটি Windows ও Apple ক্লায়েন্টের আদলে তৈরি একটি নথিভুক্ত তালিকা পাঠায়, আর সেই তালিকা পুরোনো ডিফল্টের চেয়ে প্রশস্ত কিন্তু সারির সামনে থাকা প্রতিটি লিগ্যাসি সমন্বয় আর ধরে না।

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

একই এলাকায় আরও ছোট একটি ফাঁদ আছে। দুটি ডেমন উপবৃত্তীয় বক্র Diffie-Hellman গ্রুপগুলো ভিন্নভাবে লেখে, একটি লেখে ecp384 আর অন্যটি ecp_384। ভুল বানানটি Advanced ডায়ালগে পেস্ট করুন, ডেমন সেটিংটিকে অবিশ্লেষণযোগ্য বলে প্রত্যাখ্যান করবে, যা লগে কনফিগারেশন ভুলের বদলে আলোচনার সমস্যা হিসেবে দেখা দেয়।

কিছু বদলানোর আগে ব্যর্থতাটি পড়ুন

আপনি কোন ব্যাকএন্ড চালাচ্ছেন তা দিয়ে শুরু করুন, কারণ উত্তরটি সিনট্যাক্স ও লগের অবস্থান দুটোই নির্ধারণ করে।

ipsec --version
nmcli connection show "Your VPN name" | grep -i ipsec

তারপর বিনিময়টি নিজেই পড়ুন। strongSwan-এ ডেমন বর্তমান সংস্করণে জার্নালে এবং পুরোনো সংস্করণে /var/log/syslog-এ লেখে, আর আকর্ষণীয় অংশটি হলো শেষ লাইন নয়, বরং এটি যে প্রস্তাব পাঠায় তা। আপনি খুঁজছেন কোনো মিলছে না এমন প্রস্তাবের কথা, যা একটি অ্যালগরিদম সমস্যা; প্রমাণীকরণ ব্যর্থতা, যা কী বা অ্যাকাউন্টের দিকে ইঙ্গিত করে; অথবা সাধারণ টাইমআউট, যা পৌঁছানোর ক্ষমতার দিকে ইঙ্গিত করে।

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

ফেজ 1 ও ফেজ 2 আলাদা বাজি

IKEv1 দুইবার দরকষাকষি করে। মূল মোড একটি এনক্রিপশন অ্যালগরিদম, একটি অখণ্ডতা অ্যালগরিদম, একটি Diffie-Hellman গ্রুপ ও একটি প্রমাণীকরণ পদ্ধতি থেকে IKE নিরাপত্তা সংযোগ গড়ে তোলে। তারপর দ্রুত মোড সেই ESP সংযোগ গড়ে তোলে যা L2TP বহন করবে। সার্ভার প্রথমটি গ্রহণ করে দ্বিতীয়টি প্রত্যাখ্যান করতে স্বাধীন, তাই আধা-সঠিক প্রোফাইল আপনার প্রত্যাশার চেয়ে দেরিতে ব্যর্থ হয় এবং ভিন্ন বাগের মতো দেখায়।

Phase 1: 3des-sha1-modp1024!
Phase 2: 3des-sha1!

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

একটি ক্ষেত্র বদলান, তারপর পরীক্ষাটি পুনরাবৃত্তি করুন

বর্তমান প্লাগিনে সবচেয়ে দ্রুত প্রথম পরীক্ষা হলো দুটি প্রস্তাব ক্ষেত্র সম্পূর্ণ খালি করে আবার সংযোগ করা, কারণ সরবরাহকৃত ডিফল্ট তালিকা ইতিমধ্যেই সাধারণ Windows ও Apple সমন্বয়গুলো ধরে। পুরোনো প্লাগিনে সেগুলো খালি করলে নিয়ন্ত্রণ ফিরে যায় এমন ডেমনে যা আপনার সার্ভারের জোর দেওয়া অ্যালগরিদম বাদ দিয়ে থাকতে পারে, আর ব্যর্থতা আরও খারাপ হয়।

খালি করলে কাজ না হলে আপনার সার্ভার যে কঠোর জোড়া নথিভুক্ত করে তা একবারে একটি ফেজ করে সেট করুন। ফেজ 1 বদলান, আবার সংযোগ করুন, এবং ফেজ 2 স্পর্শ করার আগে লগ পড়ুন। কোনো সমন্বয় শেষ পর্যন্ত কাজ করলে তা সার্ভার মডেল ও প্লাগিন সংস্করণের পাশে লিখে রাখুন, কারণ ডিফল্টগুলো আবার সরে যাবে এবং সেই নোটই পরের আপগ্রেডকে পাঁচ মিনিটের পরীক্ষায় পরিণত করে।

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