strongSwan کا trap موڈ: IPsec ٹنل ٹریفک کا انتظار کیوں کرتا ہے
غیر فعال آن ڈیمانڈ IPsec ٹنل کوئی CHILD SA نہیں دکھاتا جب تک کوئی پیکٹ اس کی trap پالیسی سے نہ ملے۔ حالت پڑھیں، ٹرگر جانچیں اور جانیں کہ start کب موزوں ہے۔
حالت کے آؤٹ پٹ میں کوئی CHILD SA ظاہر نہیں ہوتا، ٹنل مردہ لگتا ہے، اور پھر دور کے سب نیٹ پر ایک ping اسے اوپر لے آتا ہے۔ آن ڈیمانڈ IPsec ترتیب میں یہی ترتیب ڈیزائن ہے، کوئی خرابی نہیں۔ trap پالیسی ایک منتخب کنندہ نصب کرتی ہے اور انتظار کرتی ہے، اور اسی سے ملنے والا پہلا پیکٹ IKE اور CHILD SA گفت و شنید شروع کرتا ہے۔
الجھن کا ایک حصہ الفاظ ہیں: «up» دو مختلف حالتوں کے لیے استعمال ہوتا ہے۔ تشکیل لوڈ ہو چکی ہے اور کرنل پالیسی موجود ہے، مگر ڈیٹا ایسوسی ایشن نہیں۔ صرف فعال SA گننے والا مانیٹر کسی صحت مند سائٹ کو ڈاؤن بتائے گا جب تک کوئی وہاں ٹریفک نہ بھیجے۔
غیر فعال آن ڈیمانڈ ٹنل کے پاس دکھانے کے لیے کوئی CHILD SA نہیں
trap اندراج بذات خود کچھ تصدیق نہیں کرتا۔ یہ کرنل سے کہتا ہے کہ منتخب ٹریفک کے لیے پالیسی رکھے اور جب پیکٹ کو وہ پالیسی درکار ہو تو acquisition اٹھائے۔ ڈیمن acquisition وصول کرتا ہے، اسے child تعریف سے ملاتا ہے اور وہیں سے گفت و شنید کرتا ہے۔ اس لمحے تک دکھانے کے لیے IKE SA بھی نہیں ہوتا، اسی لیے دونوں فہرستیں بیک وقت خالی ہو سکتی ہیں۔
یہی ترتیب لاگز کو پڑھنے کے قابل بناتی ہے۔ پہلے acquisition آتا ہے، پھر IKE_SA_INIT اور IKE_AUTH، پھر CHILD SA۔ اگر لاگ acquisition کے فوراً بعد ختم ہو تو ٹرگر نے کام کیا۔ گفت و شنید ناکام ہوئی، اور اگلا سوال trap کے بارے میں نہیں بلکہ اسناد، تجاویز یا رسائی کے بارے میں ہے۔
Linux کرنل بیک اینڈ کے ساتھ آپ کسی بھی SA سے پہلے پالیسی دیکھ سکتے ہیں۔ یہ چلائیں ip xfrm policy اور out سمت اور کنکشن کی طرف اشارہ کرنے والے ٹیمپلیٹ والا منتخب کنندہ تلاش کریں۔ وہی اندراج آن ڈیمانڈ حالت ہے، اور اس کی موجودگی پہلی چیز ہے جس کی تصدیق کرنی ہے۔
start_action طے کرتا ہے کہ کوئی چیز انتظار کرے گی یا نہیں
ہر child swanctl.conf میں start_action. start تشکیل لوڈ ہونے پر شروع ہوتا ہے، trap پالیسی نصب کرتا ہے اور انتظار کرتا ہے، اور none آغاز کسی اور کے سپرد کرتا ہے۔ صرف trap اوپر بیان کردہ «ping اور وہ اوپر آ جاتا ہے» رویہ پیدا کرتا ہے۔
children {
office-lan {
local_ts = 192.168.50.0/24
remote_ts = 192.168.70.0/24
start_action = trap
}
}
دو ٹریفک منتخب کنندہ طے کرتے ہیں کہ کیا دلچسپ سمجھا جائے، اور ان پریفکس سے باہر کے میزبان کا پیکٹ trap نہیں چھیڑتا؛ وہ معمول کے مطابق روٹ ہوتا ہے۔ ٹرگر کو زیادہ شوقین بنانے کے لیے منتخب کنندگان کو وسیع کرنا اس دائرے کو بھی وسیع کرتا ہے جس کا ٹنل تحفظ کا دعوی کرتا ہے، اس لیے انہیں اسی ٹریفک سے لیں جسے آپ واقعی خفیہ کرنا چاہتے ہیں۔
یہاں swanctl.conf حوالہ قابل قبول اقدار کی فہرست دیتا ہے، ساتھ ہی الگ close اور DPD کارروائیاں جو SA بننے کے بعد کیا ہوتا ہے طے کرتی ہیں۔
معلوم کریں کہ ٹرگر آخر چلا یا نہیں
اس سے شروع کریں: swanctl --list-conns اور تصدیق کریں کہ child آپ کی مطلوبہ کارروائی کے ساتھ لوڈ ہوا ہے۔ پھر local_ts کے اندر میزبان سے remote_ts کے اندر پتے پر ایک پیکٹ بھیجیں اور swanctl --list-sas دیکھیں۔ اگر آؤٹ پٹ نہ بدلے تو کوئی acquisition ڈیمن تک نہیں پہنچا۔
خاموش trap کی دو عام وجوہات: پیکٹ پالیسی تک پہنچنے سے پہلے source-NAT ہو گیا اور اب local_ts سے نہیں ملتا، یا نحوی یا اسناد کی غلطی سے کنکشن کبھی لوڈ نہیں ہوا۔ منتخب کنندگان کو چھونے سے پہلے swanctl --load-all دوبارہ چلائیں اور اس کا آؤٹ پٹ پڑھیں۔ جو کنکشن لوڈ نہیں ہوا وہ کوئی پالیسی نصب نہیں کرتا، اس لیے ٹریفک کے چھیڑنے کو کچھ نہیں۔
سمت بھی اہم ہے: باہر جانے والی ٹریفک کے لیے نصب trap اندر آنے والے پیکٹ پر شروع نہیں ہوتا۔ اگر دور کا فریق ٹنل اوپر لانا ہے، تو اسے اپنا trap چاہیے، یا اس فریق کو start.
پہلے پیکٹ کا انتظار ہمیشہ درست سودا نہیں
تعاملی نشستیں سیٹ اپ کی لاگت محسوس کرتی ہیں۔ پہلی درخواست IKE تبادلے اور CHILD گفت و شنید کی قیمت دیتی ہے، اور کم مہلت والا کلائنٹ SA بننے سے پہلے ہار مان سکتا ہے۔ فعال start وہ پہلے پیکٹ کی تاخیر ہٹا دیتا ہے۔ مگر ایسی ٹریفک کے لیے ٹنل کھلا رکھتا ہے جو شاید کبھی نہ آئے۔
تین حقائق فیصلہ کرتے ہیں: راستہ کتنی بار استعمال ہوتا ہے، پہلی درخواست کی مہلت کتنی تنگ ہے، اور بوٹ کے وقت ساتھی قابل رسائی ہے یا نہیں۔ کبھی کبھار آنے والی بیچ ٹریفک اور بوٹ پر آف لائن ہو سکنے والا ساتھی دونوں trap کے حق میں ہیں۔ تاخیر کے لیے حساس کلائنٹ اور ہمیشہ قابل رسائی ساتھی start کے حق میں ہیں۔ اگر دونوں فریق شروع کر سکیں تو طے کریں کہ ٹرگر کس کا ہے تاکہ دوہری گفت و شنید نہ ہو۔
نصب شدہ پالیسی بھی رساؤ سے محفوظ ضمانت نہیں۔ اگر تقاضا fail-closed ہے تو فائر وال کو بغیر SA ٹریفک گرانا ہوگا، اور وہ قاعدہ child تعریف سے باہر رہتا ہے۔
اگلی بحث ختم کرنے والی تین سطریں لکھیں
منتخب کنندگان، آغاز کی کارروائی اور وہ کمانڈ آؤٹ پٹ لکھیں جو SA کے بغیر پالیسی موجود دکھاتا ہے۔ وہ تین سطریں اگلی بار کوئی ٹنل کو ڈاؤن بتائے تو «آن ڈیمانڈ اور غیر فعال» کو «لوڈ نہیں ہوتا» سے الگ کرتی ہیں۔ انہیں درج کرنے میں ایک منٹ لگتا ہے۔ ان کے بغیر وہی تحقیق صفر سے شروع ہوتی ہے۔
ایسے میزبان سے جانچیں جو واقعی منتخب کنندہ کے اندر ہے۔ خود راؤٹر سے کیا گیا ping اکثر الگ راستہ لیتا ہے اور اس کے پیچھے کے سب نیٹ کی حفاظت کرنے والی پالیسی کے بارے میں کچھ ثابت نہیں کرتا۔