যেভাবে IPsec NAT ট্রাভার্সাল ESP-কে UDP-এর ভিতরে মোড়ে
ESP-এর কোনও পোর্ট নেই, তাই NAT ট্রাভার্সাল এটিকে 4500-এ UDP-এর ভিতরে মুড়ে দেয়। নিয়ন্ত্রণ বিনিময় এবং মোড়ানো ডেটা পথকে দুটি আলাদা ধাপ হিসেবে পরীক্ষা করুন।
একই রাউটারের পেছনে থাকা দুই ক্লায়েন্ট একটি IPsec গেটওয়ের সঙ্গে কথা বলে, আর একটি বারবার সংযোগ হারায় যখন অন্যটি সচল থাকে। নিজস্ব ESP হলো 50 নম্বর IP প্রোটোকল, যার কোনও পোর্ট নেই, তাই একই ঠিকানা একাধিক ক্লায়েন্ট ভাগ করে নিলে অনুবাদকের হাতে ম্যাপিংয়ের জন্য ধরার মতো কিছু থাকে না। NAT ট্রাভার্সাল 4500-এ ESP-কে UDP-এর ভিতরে মুড়ে দিয়ে এই ফাঁক বন্ধ করে, আর ওই হেডার পরবর্তী বেশিরভাগ উপসর্গ ব্যাখ্যা করে। এটি যে ডিভাইসটি বদলাতে হবে সেটিও দেখিয়ে দেয়।
কেন ডেটা প্লেন 4500 পোর্টে সরে যায়
সেটআপের সময় IKEv2 প্রতিটি পক্ষ যে ঠিকানা ও পোর্ট ব্যবহার করছে বলে মনে করে, সেগুলোকে নিজের NAT সনাক্তকরণ বিজ্ঞপ্তিতে হ্যাশ বিনিময় করে মিলিয়ে দেখে। হ্যাশগুলো না মিললে পথের কোথাও একটি অনুবাদক বসে আছে, আর দুই পক্ষই সুরক্ষিত ট্রাফিককে UDP এনক্যাপসুলেশনে সরিয়ে নেয়। তাই যে সেশন একটি অনুবাদকের মুখোমুখি হয়েছে তা যে সেশন হয়নি তার থেকে আলাদা দেখায়।
মোড়কটি একটি খাম, প্রোটোকলের পরিবর্তন নয়: ESP নিজের হেডার, অখণ্ডতা যাচাই ও এনক্রিপশন ধরে রাখে, আর UDP কেবল সেই পোর্টগুলো সরবরাহ করে যেগুলো অনুবাদকের দরকার। 500 পোর্ট IKE বিনিময় বহন করে; 4500 সনাক্তকরণের পর মোড়ানো ডেটা এবং প্রায়ই পরবর্তী IKE বার্তাও বহন করে। কোনও পোর্টই প্রবাহটিকে TCP সংযোগে পরিণত করে না, এই ধারণাটিই ক্যাপচার পড়া বেশিরভাগ মানুষকে ভুল পথে চালায়।
দুটি ধাপ ক্রমান্বয়ে পরীক্ষা করুন
আগে নিয়ন্ত্রণ বিনিময় প্রমাণ করুন, তারপর ডেটা পথ, আর আপনার নোটে দুটিকে আলাদা রাখুন। যে ক্যাপচার 500-এ ট্রাফিক দেখায় কিন্তু 4500-এ কখনও দেখায় না, তা সাধারণত বোঝায় ডেটা পথ ফিল্টার করা হচ্ছে, তাই সমাধান ক্লায়েন্টে নয়, ফায়ারওয়াল নিয়মে করতে হবে।
tcpdump -ni any 'udp port 500 or udp port 4500' দিয়ে দুই পোর্টই দেখুন, আর সেশন চালু থাকার সময় রাউটারের অনুবাদ সারণি পড়ুন। ওই সারণি দেখায় গেটওয়ে আসলে কোন সোর্স পোর্ট দেখবে, আর ল্যাপটপের ক্যাপচার স্বাভাবিকভাবেই আলাদা: ল্যাপটপ 500 মনে করে, অথচ গেটওয়ে অনূদিত সোর্স পোর্টসহ 4500 দেখে, এবং দুটোই সঠিক। একই প্রবাহ, অনুবাদের আগে ও পরে:
client 192.0.2.10:500 -> router 203.0.113.7:62000 -> gateway 198.51.100.9:4500
মোড়ক যে উপসর্গ ব্যাখ্যা করে, আর যে দুটি করে না
এমন রাউটার যা নিয়ন্ত্রণ বিনিময়ের অনুমতি দেয় কিন্তু মোড়ানো ডেটা ব্লক করে সেটি 'টানেল উঠেছে, কিছুই পার হচ্ছে না' রিপোর্ট তৈরি করে। ম্যাপিং সারণির মেয়াদ শেষ হয়, তাই নিষ্ক্রিয় সেশনকে দুই পক্ষের ইচ্ছাকৃতভাবে পাঠানো কিপঅ্যালাইভ ট্রাফিক দরকার, আর ওই প্যাকেটগুলো স্বাস্থ্য পরীক্ষা নয়। একটি গেটওয়ের পেছনের একাধিক ক্লায়েন্ট একসঙ্গে ব্যর্থ হলে ওই গেটওয়ের অনুবাদ এবং কোনও পুরনো পাসথ্রু সুবিধা পরীক্ষা করুন। মোড়ক এমন অ্যাপ্লিকেশন ব্যাখ্যা করে না যা টানেল ওঠার পর প্রতিটি ক্লায়েন্টে ব্যর্থ হয়, বা ব্লক পৃষ্ঠার সার্টিফিকেট সতর্কতা; দুটোই এই স্তরের উপরে থাকে।
একসঙ্গে দুই ক্লায়েন্টের জন্য ম্যাপিং সারণি পড়ুন: দুটোই একই অনূদিত পোর্ট দেখালে ডিভাইসটি গেটওয়ে যেভাবে চায় সেভাবে তাদের আলাদা করছে না। যে পাসথ্রু মোড কেবল একটি হোস্টকে নিজস্ব ESP দেয়, তা একাধিক অনূদিত ক্লায়েন্টকে সেবা দেওয়ার সমতুল্য নয়, যদিও বিক্রেতারা দুটোকেই IPsec-বান্ধব বলে বর্ণনা করে। ডাবল NAT একটি ম্যাপিং স্তর ও আরেকটি মেয়াদ শেষের বিন্দু যোগ করে, কিন্তু বহির্গামী সংযোগ স্বয়ংক্রিয়ভাবে ভেঙে দেয় না।
কিপঅ্যালাইভ ট্রাফিক পরিচালনা নির্দেশিকায় নিজের একটি লাইন প্রাপ্য, কারণ এটিই নিষ্ক্রিয় সময়ে উত্তরের পথ খোলা রাখে। বিক্রেতা যেখানে নথিভুক্ত করেছে সেখানে এটি চালু করুন, আর সেশন প্রথম ব্যবহারে নয় বরং কয়েক মিনিট নীরবতার পর মরে গেলে সেটিই আগে পরীক্ষা করুন।
ম্যাপিংয়ের মালিক বদলান, তারপর আবার পরীক্ষা করুন
পোর্ট অনুমান না করে দুই পক্ষেই সমর্থিত NAT ট্রাভার্সাল সেটিংস অনুসরণ করুন। একটি ক্লায়েন্টে স্থানীয় সোর্স পোর্ট সম্পাদনা করে অন্যপ্রান্তে শোনা সেবা বদলানো যায় না, আর তাতে সাধারণত ইতিমধ্যে তৈরি ম্যাপিং ভেঙে যায়। ক্লায়েন্ট যদি আপনার নিয়ন্ত্রণের বাইরের কোনও ডিভাইসের পেছনে থাকে, তবে পরিবর্তনটি তার মালিকের।
যেকোনো পরিবর্তনের পর দুটি ধাপের পরীক্ষাই আবার করুন এবং নিশ্চিত করুন যে একটি ডেটা প্যাকেট পার হচ্ছে, কেবল স্টেটাস স্ক্রিন সবুজ হয়েছে তা নয়। টিউপল, ম্যাপিং সারণির আউটপুট এবং নিয়মের পরিবর্তন এক নোটে রাখুন, যাতে পরের ব্যক্তি নিয়ন্ত্রণ বিনিময় থেকে আবার শুরু না করেন। strongSwan-এর NAT ট্রাভার্সাল নোট দুটি ধাপের পেছনের এনক্যাপসুলেশন ও কিপঅ্যালাইভ সেটিংস কভার করে।