XFRM ডিফল্ট রুট IKE ও ESP গিলে ফেলেছে: বাইরের পথ ধরে রাখুন
সবকিছু সুরক্ষিত করার নীতি টানেল টিকিয়ে রাখা প্যাকেটগুলোও ধরে ফেলতে পারে। IKE ও ESP চিহ্নিত করুন, নয়তো পিয়ার রুট রেখে দিন।
ট্রাফিক সুরক্ষিত, টানেল চালু, তারপর পরের কী নবায়নে তা মরে যায়। XFRM ইন্টারফেস দিয়ে যাওয়া ডিফল্ট রুট আপনি যে ট্রাফিক সুরক্ষিত করতে চেয়েছিলেন তা বর্ণনা করত। এটি সুরক্ষা চালিয়ে যেতে প্রয়োজনীয় প্যাকেটগুলোও গিলে ফেলেছিল।
জড়িত দুটি গন্তব্য পরস্পর বিনিময়যোগ্য নয়। রাউটিংকে তা স্পষ্টভাবে বলতে হবে।
পিয়ার অনুসন্ধান আসলে কোথায় যায়
সক্রিয় নিয়ম, XFRM রুট যে টেবিলে আছে এবং পিয়ারের পাবলিক ঠিকানা লিপিবদ্ধ করুন। তারপর দেখুন বাইরের সংযোগ তার প্রকৃত সোর্স ও মার্ক নিয়ে কোন পথ নেবে। সাধারণ গন্তব্য সেই নিয়ন্ত্রণ পথ সম্পর্কে কিছুই বলে না। কেবল প্রকৃত সোর্স ও মার্কই কাজের উত্তর দেয়।
সফল প্রাথমিক সংযোগও খুব কম প্রমাণ করে। রুট ইনস্টলেশন উত্তর বদলানোর পরেই ব্যর্থতা প্রায়ই দেখা যায়। স্টার্টআপ সফল হয়, তারপর প্রথম নবায়ন সফল হয় না।
ip rule show
ip route show table 220
ip -4 route get 198.51.100.44 from 10.40.0.2
ip xfrm policy list
পিয়ারের জন্য অনুসন্ধান XFRM ইন্টারফেসে গিয়ে পৌঁছালে, বাইরের প্যাকেটগুলো যে টানেল তৈরি করছে সেখানেই রাউট হয়। এটাই লুপ, একটি কমান্ডেই দৃশ্যমান।
আধুনিক গেটওয়েতে বাদ দেওয়ার বিকল্প
strongSwan-এর রুট-ভিত্তিক VPN ডকুমেন্টেশন দুটি ব্যবহারিক উত্তর দেয়। একটি IKE ও ESP চিহ্নিত করে যাতে XFRM টেবিলে নির্দেশ করা নিয়ম তাদের সাথে না মেলে। অন্যটি একটি পিয়ার রুট বা বাদ রাখে যা অনুসন্ধান এখনও পৌঁছাতে পারে।
আপনার নিয়মসমষ্টি যা পার্শ্বপ্রতিক্রিয়া ছাড়া প্রকাশ করতে পারে তা নিন। স্ট্যাকের বাকি অংশ ইতোমধ্যে মার্ক ব্যবহার করলে মার্ক পরিষ্কার। একই মাস্ক অন্য নিয়মে অন্য কিছু বোঝালে তা বিপদ। দুই ধরনের প্যাকেটেরই যেকোনোভাবে এই চিকিৎসা দরকার।
কেবল IKE চিহ্নিত করলে ডেটা প্যাকেটগুলো ধরা পড়া পথেই থাকে। এতে এমন টানেল হয় যা হ্যান্ডশেক করে, তারপর কিছুই বহন করে না।
মার্ক হলো প্যাকেটের fwmark-এ একটি বিট যা গেটওয়েতে অন্য কিছু দাবি করে না: মাস্ক 0x1 সহ 0x1 স্বাভাবিক পছন্দ, আর বাদ দেওয়া কাজ করতে হলে এটি দুটি জায়গায় সেট করতে হয়। Charon-এর এটি IKE সকেটে দরকার, আর চাইল্ড সংযোগের ইনবাউন্ড ও আউটবাউন্ড মার্ক সেটিংসে একই মান দরকার যাতে এনক্যাপসুলেটেড প্যাকেটও মার্ক করা অবস্থায় বেরোয়। 0xffffffff-এর বদলে 0x1 মাস্ক বাকি বিটগুলো মুক্ত রাখে, যা গুরুত্বপূর্ণ যখন অন্য সাবসিস্টেম একই হোস্টে ইতিমধ্যে প্যাকেট মার্ক করে। দুটোই সেট থাকলে নিয়মটি বাদ হিসেবে লেখা হয়, তাই মার্ক করা প্যাকেট XFRM রুটের টেবিল এড়িয়ে মূল টেবিলে নেমে যায়:
ip rule add not fwmark 0x1/0x1 lookup 220 pref 1000
ip -4 route get 198.51.100.44 from 10.40.0.2 mark 0x1
তারপর মার্ক প্রয়োগ করে উত্তরটি পড়ুন। এটি ছাড়া আপনি সুরক্ষিত ট্রাফিক যে পথ নেয় তা দেখেন, যা এই অংশের প্রশ্নের উল্টো।
স্বয়ংক্রিয় ইনস্টলেশন নির্মাণ সম্পর্কে কী ধরে নেয়
XFRM ইন্টারফেসের জন্য স্বয়ংক্রিয় রুট ইনস্টলেশন strongSwan সংস্করণ ও তার কনফিগারেশনের উপর নির্ভর করে। ইন্টারফেস আইডি, ইনস্টল করা নীতি এবং অ্যাসোসিয়েশন—সবকেই অভীষ্ট অবজেক্ট নির্দেশ করতে হবে। অমিল ধরা পড়ে এমন রুট হিসেবে যা চুপচাপ সত্যিকারের কোনো জায়গায় নির্দেশ করে।
অন্য গেটওয়ে থেকে টেবিল নম্বর বা মার্ক মাস্ক কপি করাই সংঘর্ষ শুরু হওয়ার উপায়। আগে দেখুন এটি ইতিমধ্যে কী ব্যবহার করছে। সংঘর্ষ আপনি যে টানেল বদলাতে চেয়েছিলেন তার অনেক বাইরের ট্রাফিকেও প্রভাব ফেলে, আর উপসর্গ খুব কমই কপির দিকে নির্দেশ করে।
পিয়ার ঠিকানা পরিবর্তন নকশার অংশ। গতকালের ঠিকানার জন্য হোস্ট রুট এন্ডপয়েন্ট পুনরুদ্ধারের পরিকল্পনা নয়, অথচ মার্ক সেই পরিবর্তন টিকে থাকে।
প্রথম নবায়ন লক্ষ্য করুন
সুরক্ষিত রুট ইনস্টল হওয়ার পর বাইরের পথ দেখুন, আগে নয়। তারপর পরের নবায়ন ও একটি অ্যাপ্লিকেশন বিনিময় লক্ষ্য করুন। ব্যর্থতা সাধারণত স্টার্টআপে নয়, সেই পরিবর্তনের সময়েই দেখা যায়।
ip -4 route get 198.51.100.44
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or esp'
সুরক্ষিত ডিফল্ট সাময়িকভাবে সরালে সাধারণত সংযোগ ফিরে আসে। সেই ফলাফল রোগনির্ণায়ক, চূড়ান্ত নয়।
লক্ষ্য হলো ভেতরের ট্রাফিক আর তা বহনকারী বাইরের প্যাকেটের মধ্যে স্থিতিশীল বিভাজন। বাছাই করা প্রক্রিয়া ও তার টেবিল বা মার্ক গেটওয়ের নোটে লিখে রাখুন। নইলে নিয়মগুলোতে হাত দেওয়া পরের ব্যক্তি লুপটি আবার ফিরিয়ে আনবে।