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

শূন্য কাউন্টার আসলে কী প্রমাণ করে

একটি CHILD SA হলো একটি সিলেক্টর জোড়া এবং সেই পরিসরের ভেতরে পড়া ট্রাফিক এনক্রিপ্ট করা কী ও SPI। এটি ইনস্টল করার অর্থ কেবল এই যে দুই পিয়ার ওই পরিসর ও উদ্ভূত কী-তে একমত হয়েছে; কার্নেল একটিও প্যাকেট না এসেও এটি ঘণ্টার পর ঘণ্টা ধরে রাখবে। সুতরাং প্রশ্ন কখনও টানেল আছে কি না নয়, বরং আপনার পরীক্ষার পাঠানো কোনো প্যাকেট দুই পিয়ারের সম্মত পরিসরের ভেতরে পড়েছে কি না। না পড়লে কাউন্টার শূন্যেই থাকে এবং অ্যাসোসিয়েশন তার জীবদ্দশার শেষে অব্যবহৃত অবস্থায় শেষ হয়।

এই পার্থক্যই বদলে দেয় আপনি আগে কী দেখবেন। প্রত্যাখ্যাত প্রস্তাব, প্রমাণীকরণের ব্যর্থতা বা মৃতপ্রায় IKE SA—সবই লগে বা SA তালিকায় প্রকাশ পায়, নীরব শূন্য হিসেবে নয়। যে টানেল পরিষ্কারভাবে সমঝোতা করে পরে নিষ্ক্রিয় থাকে, সেটি বরং মেলানো, রাউটিং বা পরীক্ষার ট্রাফিকের উৎসের দিকে ইঙ্গিত করে।

পাঠানোর আগে যে ফ্লো বর্ণনা করতে পারেন, তা পাঠান

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

সোর্স ঠিকানা হলো সেই মান যা মানুষ এড়িয়ে যায়, আর সেটিই পরীক্ষাটি সবচেয়ে বেশি নষ্ট করে। তারযুক্ত ঠিকানা, Wi-Fi ঠিকানা ও টানেল ঠিকানাযুক্ত ল্যাপটপ রুট অনুসন্ধানের উপর নির্ভর করে এদের যেকোনোটি বাঁধতে পারে, আর কেবল একটি-ই সম্মত পরিসরের ভেতরে থাকতে পারে। এমন টুল ব্যবহার করুন যা সোর্স পিন করতে দেয়, যেমন ping -I 10.1.0.5 10.2.0.9 বা curl --interface 10.1.0.5, যাতে প্যাকেট চুপচাপ অন্য ঠিকানা বেছে নিতে না পারে। যখন পিন করা রান কাউন্টার নড়ায় আর পিন না করা রান নড়ায় না, তখন আপনি রাউটিং সমস্যা পেয়েছেন, IPsec সমস্যা নয়।

কোন সংখ্যা পড়বেন, আর তারা কোথায় থাকে

Linux-এ ip -s xfrm state প্রতিটি অ্যাসোসিয়েশন একটি lifetime current: লাইনসহ ছাপে যার মোট বাইট ও মোট প্যাকেট কেবল সেই SA-এর, তার পরে রিপ্লে ও ত্রুটি গণনার জন্য একটি stats: লাইন থাকে। strongSwan পিয়ারে swanctl --list-sas প্রতিটি ইনস্টল করা চাইল্ডের জন্য একটি in লাইন ও একটি out লাইন দেখায়, প্রতিটি বাইট গণনা ও প্যাকেট গণনায় শেষ হয়; পুরোনো stroke টুল একই জোড়াকে bytes_i ও bytes_o বলে। দুই দিক আলাদা করে পড়ুন, কারণ যে দিকটি সমতল থেকেছে সেটিই ফলাফল। দুটোকে যোগ করলে আপনি যে অসমতলতা খুঁজছেন ঠিক সেটিই ঢাকা পড়ে।

দুই দৃশ্যই প্রতি অ্যাসোসিয়েশনের, তাই রিকি নতুন SPI জোড়া ইনস্টল করে এবং কিছু না ভেঙেই আপনার ভিত্তিরেখা শূন্যে ফিরে যায়। রিকি টাইমার চালু হওয়ার আগেই আপনি যে SPI পর্যবেক্ষণ করছেন তা লিখে রাখুন, নইলে পুরোনো সংখ্যার সঙ্গে নতুন SA তুলনা করবেন। যদি আউটবাউন্ড বাড়ে আর ইনবাউন্ড সমতল থাকে, তাহলে সিলেক্টর মিলেছে এবং উত্তর কখনও ফেরেনি, যা তদন্তকে পিয়ারের ফরওয়ার্ডিং ও তার নিজের পলিসির দিকে নিয়ে যায়। strongSwan-এর IKEv2 কনফিগারেশন ডকুমেন্টেশন চাইল্ড SA-এর জীবনচক্র ও এই সংখ্যার পেছনের রিকি সময় কভার করে।

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

রুট, সিলেক্টর এবং প্যাকেটের জন্মস্থান

তিনটি জিনিস পাশাপাশি মিলিয়ে দেখুন: আপনার গন্তব্যের জন্য কার্নেল যে রুট বেছে নেয়, যে পলিসি ট্রাফিককে টানেলে চালায়, এবং চাইল্ড যে সিলেক্টর জোড়ায় সম্মত হয়েছে। ip route get 10.2.0.9 from 10.1.0.5 সেই ইন্টারফেস ও সোর্সের নাম বলে যা কার্নেল ব্যবহার করত, আর সেটি প্রায়ই আপনার ধরে নেওয়া জোড়া নয়। ip xfrm policy লোকালি ইনস্টল করা টেমপ্লেট ও সিলেক্টর দেখায়, আর swanctl --list-sas দেখায় পিয়ার কীতে সম্মত হয়েছে। যে লুকআপ প্যাকেটকে ফিজিক্যাল ইন্টারফেস দিয়ে বের করে দেয় তা পলিসিতে পৌঁছায়ই না, তাই কাউন্টার নড়তে পারে না।

অমিলগুলো কয়েক রকমের হয় যা কাউন্টার থেকে একই দেখায়। IPv4 সিলেক্টরের বাইরে IPv6 গন্তব্য, ভুল সাবনেটের সোর্স ঠিকানা এবং চাইল্ডের চেয়ে সরু পলিসি—সবই একই শূন্য উৎপন্ন করে। আগে সবচেয়ে সরু কারণটি সারান, কারণ কেবল একটি সংখ্যা সরানোর জন্য সিলেক্টর চওড়া করা টানেল যা সুরক্ষা দেয় তা বদলে দেয়।

তারপর আছে প্যাকেটের উৎস, যে ফাঁদ একটি গেটওয়ে নিজের অপারেটরের জন্য পাতে। গেটওয়ে নিজে যে ট্রাফিক তৈরি করে তা আউটপুট পলিসির সঙ্গে মেলানো হয়, আর ক্লায়েন্টের জন্য সে যে প্যাকেট ফরওয়ার্ড করে তা ফরওয়ার্ড পলিসির সঙ্গে মেলানো হয়, তাই বক্স থেকে পাঠানো ping এমন পথে সফল হতে পারে যা কোনো ক্লায়েন্ট কখনও নেয় না।

একটি প্রত্যাবর্তনযোগ্য পরিবর্তন এবং এমন প্রতিবেদন যা পর্যালোচনা টিকিয়ে রাখে

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

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

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