strongSwan کنفیگریشن میں کسی کنکشن کو درج کرنا صرف یہ ثابت کرتا ہے کہ ایک تعریف بار ہوئی۔ اس کا مطلب یہ نہیں کہ ساتھی سے رابطہ کیا گیا، کہ IKE SA موجود ہے یا کہ کوئی ٹریفک محفوظ ہے۔ ڈیمن تعریفات اور زندہ ایسوسی ایشنز کو الگ الگ اشیاء سمجھتا ہے، اور ان کے درمیان فاصلہ ایک سوچا سمجھا ڈیزائن فیصلہ ہے۔ یہ جاننا کہ آپ کون سی شے دیکھ رہے ہیں، ایک مبہم خرابی کو اگلے مخصوص حکم میں بدل دیتا ہے۔

بار کرنا جڑنا نہیں ہے

بار کردہ کنکشن اس بات کا بیان ہے کہ آگے کس چیز پر بات چیت ہو سکتی ہے: ساتھی کے پتے، اسناد، تجاویز اور ٹریفک کے منتخب کنندگان۔ اس بیان میں کچھ بھی ڈیمن کے کسی کو فون کرنے کا تقاضا نہیں کرتا۔ گیٹ وے دوسری طرف کا انتظار کر سکتا ہے، آغاز پر خود پہل کر سکتا ہے یا مناسب ٹریفک کے جگانے کا انتظار کر سکتا ہے۔ تینوں درست ہیں اور تینوں کنفیگریشن فائل میں اس وقت تک یکساں نظر آتے ہیں جب تک آپ آغاز کی پالیسی نہ پڑھیں۔

آپریٹرز تعریفات کی فہرست کو حالت کی فہرست سمجھ کر پڑھنے سے مشکل میں پڑتے ہیں۔ پروفائل موجود ہے، لہٰذا ٹنل کو فعال سمجھا جاتا ہے، اور اگلا گھنٹہ ایسی ایسوسی ایشن کے روٹس کی خرابی دور کرنے میں جاتا ہے جو کبھی بنائی ہی نہیں گئی۔

اس کے برعکس غلطی بھی اتنی ہی عام ہے۔ غائب پروفائل لوگوں کو نیٹ ورک کی خرابی ڈھونڈنے بھیجتا ہے جبکہ کنفیگریشن کبھی بار ہی نہیں ہوئی۔ شے کا نام لیں اور پھر وہ حکم چلائیں جو اس کا مشاہدہ کرتا ہے۔

تین اشیاء، تین مشاہدے

strongSwan ایک بار کردہ تعریف، ایک IKE SA اور ایک CHILD SA رکھتا ہے۔ پہلی کنفیگریشن ہے، دوسری تصدیق شدہ کنٹرول تعلق اور تیسری منتخب ٹریفک کے لیے طے شدہ تحفظ ہے۔ ان کے الگ الگ نام بھی ہیں، چنانچہ hq نامی پروفائل کے پاس hq-lan نامی child ہو سکتا ہے۔

جدول ہر طبقے کو اس حکم سے جوڑتا ہے جو اسے دکھاتا ہے۔ لاگ پڑھنے سے پہلے قطار پڑھیں۔

LayerWhat it containsCommand
DefinitionPeer addresses, credentials, proposals, and traffic selectorsswanctl --list-conns
IKE SAOne authenticated control channel to the peerswanctl --list-sas
CHILD SAKeys and selectors for the traffic being protectedChild rows under the IKE SA

child کی درخواست پہلے اس کی والد IKE SA بناتی ہے جب کوئی موجود نہ ہو۔ صرف IKE SA کی درخواست ایک اور کال ہے۔ درست تصدیق کرنے والا کنٹرول چینل درخواست کردہ child کی ضمانت نہیں دیتا۔

یہ فرق جزوی خرابی کے دوران اہم ہے۔ IKE SA صحت مند ہو سکتا ہے جبکہ child منتخب کنندہ کے عدم مطابق یا ایسی تجویز کی وجہ سے ناکام ہو جاتا ہے جو ساتھی قبول نہیں کرتا۔ دونوں اشیاء مختلف وجوہات سے ناکام ہوتی ہیں، اس لیے وہ الگ مشاہدوں کی حقدار ہیں۔

آغاز کا عمل سوچ سمجھ کر چنیں

swanctl.conf میں child کا start_action بار ہونے کے بعد کا رویہ طے کرتا ہے۔ پہلے سے طے شدہ none تعریف کو دستی آغاز یا responder کے طور پر استعمال کے لیے چھوڑ دیتا ہے۔ start اسے ڈائل کرتا ہے، جبکہ trap ایسی پالیسی چھوڑتا ہے جو مناسب ٹریفک نمودار ہوتے ہی بات چیت کرتی ہے۔

لہٰذا «بار کرنا کبھی ٹنل شروع نہیں کرتا» اور «بار کرنا ہمیشہ ایک شروع کرتا ہے» دونوں غلط ہیں۔ عمل پروفائل کا حصہ ہے اور اسے ساتھی کے کردار سے مطابقت رکھنی چاہیے۔ دو گیٹ ویز جو دونوں دوسری طرف کا انتظار کریں خاموشی پیدا کرتے ہیں، ٹنل نہیں۔

trap کے ساتھ ٹریفک کو منتخب کنندگان سے مطابقت رکھنی ہوتی ہے، اس لیے غیر متعلق ping کچھ نہیں جگائے گا۔ start کے ساتھ ساتھی کا پتہ قابل استعمال ہونا چاہیے اور دونوں فریقوں کو تصدیق اور تجاویز پر متفق ہونا چاہیے۔ دونوں میں سے کوئی عمل ان شرائط کی جانچ کی جگہ نہیں لیتا۔

بازیابی ایک الگ پالیسی ہے

آغاز کوئی keepalive نہیں ہے۔ مردہ ساتھی کی نشاندہی، ساتھی کی جانب سے واضح بندش، کلیدوں کی تجدید اور عمل کی دوبارہ شروعات زندگی کے چکر کے مختلف واقعات ہیں جن کی اپنی ترتیبات ہیں۔ ہر ایک کو سوچ سمجھ کر ترتیب دیں، بجائے اس کے کہ ابتدائی آغاز سے سب ڈھکنے کی توقع رکھیں۔

ایک ٹنل جو بوٹ پر اٹھتی ہے اور ایک گھنٹے بعد مر جاتی ہے، بازیابی کا سوال ہے۔ آغاز کی پالیسی نے اپنا کام کیا اور پھر اہم رہنا چھوڑ دیا۔ ابتدائی بات چیت کو قصوروار ٹھہرانے سے پہلے DPD اور کلیدوں کی تجدید کی ترتیبات دیکھیں۔

بار کردہ تعریفات کو بدلنا ایک الگ عمل ہے۔ غیر طے شدہ آغاز کی پالیسیوں کے دستاویزی الٹے عمل ہوتے ہیں، اور دوبارہ بار کرنا ایک عملی تبدیلی ہے نہ کہ یہ مفروضہ کہ ہر ایسوسی ایشن موقع پر ہی اپ ڈیٹ ہوئی۔ دوبارہ بار کرنے مرحلہ وار کریں، جہاں دوبارہ جڑنا قابل قبول ہو۔ پرانی کنفیگریشن نئی کے ثابت ہونے تک رکھیں۔

روٹنگ کی خرابی دور کرنے سے پہلے دیکھیں کہ کیا موجود ہے

تینوں مشاہدے ترتیب سے کریں: بار کردہ تعریفات، فعال IKE SA اور child اندراجات۔ ہر جواب اگلے سوال کو تنگ کرتا ہے۔ ایک قدم چھوڑ دیں تو آخر میں ایسی تہہ کی خرابی دور کریں گے جو کبھی بنی ہی نہیں۔

اس سے شروع کریں جو بار ہے اور جو واقعی قائم ہے:

swanctl --list-conns
swanctl --list-sas

اگر child غائب ہے جبکہ پروفائل درست ہے، تو اسے نام سے شروع کریں اور دیکھیں کیا ہوتا ہے۔ آؤٹ پٹ عموماً بتاتا ہے کہ والد پہلے اٹھا یا نہیں۔

swanctl --initiate --child hq-lan

فعال CHILD SA آخری لکیر نہیں ہے۔ فارورڈنگ کے قواعد، روٹس اور اطلاق کی اپنی اجازت کو اب بھی میل کھانا ہے۔ زندگی کا چکر بتاتا ہے کہ کس چیز پر بات چیت ہوئی؛ یہ فیصلہ نہیں کر سکتا کہ کون سروس استعمال کر سکتا ہے۔

متعلقہ مضامین