ایک لمحے لیپ ٹاپ دفتر کے Wi-Fi پر ہے، اگلے لمحے فون سے جڑا ہے، اور آپ کھڑکیاں بدلنا مکمل کرنے سے پہلے ہی ٹنل کا اشارہ پھر سبز ہے۔ سبز روشنی صرف یہ بتاتی ہے کہ ٹنل دوبارہ جڑ گئی؛ اُس وقفے میں روٹنگ اور بلاکنگ پالیسی نے کیا کیا، یہ الگ سوال ہے۔ وہ پالیسی اُن مطابقت شرائط کا مجموعہ ہے جو آخری تنصیب کے وقت ترتیب دی گئی تھیں، اور یہ اُس انٹرفیس، پتہ اور پتہ خاندان کا نام لیتی ہے جنہیں منتقلی نے ابھی ہٹایا ہے۔ اِس لیے وہی تبدیلی تین نتائج دیتی ہے جو ایک جیسے دکھتے ہیں: بلاکنگ جاری رہتی ہے، پالیسی اپنی ہی بحالی کو روک دیتی ہے، یا ایسا راستہ کھل جاتا ہے جسے کوئی چیز نہیں ڈھانپتی۔

اسکرین پر کوئی چیز اُن تین حالتوں کو الگ نہیں کرتی، اِس لیے یہ پوچھیں کہ اصول کن شناختوں پر لگائے گئے تھے، نہ کہ اشارہ کون سا رنگ دکھاتا ہے۔ Linux پر کوئی اصول کسی انٹرفیس کا نام لے سکتا ہے یا اُس سے بھرا ipset؛ Android پر VpnService کو setUnderlyingNetworks کے ذریعے بتایا جا سکتا ہے کہ کن بنیادی نیٹ ورکس کی پیروی کرنی ہے۔ ہر بندھن اُس کڑی کی طرف اشارہ کرتا ہے جو ابھی بدلی جانے والی ہے، اور ہر ایک کو بعد میں دوبارہ جانچنا ہوتا ہے۔

منتقلی دراصل کیا دوبارہ لکھتی ہے

جب پرانی کڑی غائب ہوتی ہے تو کرنل اُس کے پتے ہٹا دیتا ہے، اُس سے گزرنے والے راستے واپس کھینچ لیتا ہے، اور جو بچتا ہے اُس سے ماخذ پتے کا انتخاب دوبارہ بناتا ہے۔ ڈیفالٹ راستہ نئے گیٹ وے پر منتقل ہوتا ہے، اور پرانے اصولوں نے جس انٹرفیس انڈیکس کا حوالہ دیا تھا وہ جا چکا ہے یا کسی دوسرے آلے کے لیے دوبارہ استعمال ہوا ہے۔ ہر کڑی کے ریزالور بھی تازہ ہوتے ہیں، اگرچہ راستوں کے اسی لمحے نہیں۔ یہ سب VPN کلائنٹ کے نیچے ہوتا ہے، اِس لیے جو کلائنٹ صرف اپنی ٹنل کی حالت دیکھتا ہے اُسے اِس میں سے کچھ نظر نہیں آتا۔

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

سوراخ کیے بغیر بیرونی ٹنل دوبارہ بنانا

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

کلائنٹ یہاں اُس طرح مختلف ہیں جو تشخیص کے وقت اہم ہے۔ کچھ پہلے حل کرتے ہیں اور پھر اصول لگاتے ہیں، اِس لیے منتقلی پر نظر آنے والی رکاوٹ آتی ہے اور پھر خودبخود ٹھیک ہو جاتی ہے؛ دوسرے بلاک کو قائم رکھتے ہیں اور تلاش ڈھونے کے لیے بچی ہوئی ٹنل پر انحصار کرتے ہیں، جو کڑی کے ساتھ ٹنل مرنے پر بالکل ناکام ہو جاتا ہے۔ کنیکٹیویٹی واپس لانے کے لیے چوڑا سیدھا ڈیفالٹ راستہ شامل کرنا امتحان ہمیشہ پاس کراتا ہے اور آپ جس رساؤ کو روک رہے تھے وہ ہمیشہ رہ جاتا ہے۔

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

ip route get 1.1.1.1
ip -6 route get 2606:4700:4700::1111

جب نئی کڑی IPv6 لاتی ہے اور اصول نہیں

سیلولر اور مہمان نیٹ ورک اکثر عالمی IPv6 سابقہ دیتے ہیں، چاہے دفتر کا تار والا LAN کبھی ایسا نہ کیا ہو۔ صرف IPv4 اصولوں کے طور پر لکھی گئی پالیسی — ہاتھ سے بنی زیادہ تر iptables اور nftables ترکیبوں کی ڈیفالٹ شکل — اِس میں سے کچھ نہیں ڈھانپتی۔ ٹنل جڑی رہتی ہے، IPv6 رسائی والی ایپلیکیشنز اُس سے باہر نکل جاتی ہیں، اور اشارہ فرق نہیں دکھا سکتا کیونکہ ٹنل واقعی چل رہی ہے۔ اُلٹا معاملہ بھی اُتنا ہی عام ہے: صرف IPv6 کے لیے اصولوں کا مجموعہ ایسے نیٹ ورک پر کچھ نہیں کرتا جو v6 نہیں دیتا۔

منتقلی کے دونوں طرف موازنہ کریں کہ کڑی کیا دیتی ہے اور پالیسی کیا بتاتی ہے۔ یہ احکام وہی حقائق چھاپتے ہیں جن کے ساتھ کلائنٹ کام کرتا ہے:

ip -4 route show default
ip -6 route show default
sudo nft list ruleset | grep -c 'ip6 '

اگر دوسرا حکم ڈیفالٹ راستہ چھاپے اور تیسرا صفر واپس دے، تو نئی کڑی مشین کو IPv6 کے ذریعے باہر لے جا سکتی ہے اور کوئی اصول اُس پر نظر نہیں رکھ رہا۔ تبدیلی کے بعد تینوں دوبارہ چلائیں، کیونکہ دلچسپ عدد دونوں چلانے کا فرق ہے۔ اگر دوسرا کچھ نہ چھاپے تو اُلٹا معاملہ لاگو ہے اور وہاں کوئی بھی v6 بھاری پالیسی محض سجاوٹ ہے۔

ریزالور سیشن کے بیچ میں ہاتھ بدلتا ہے

جدید نظاموں میں ریزالور کڑیوں سے جڑے ہوتے ہیں، اِس لیے نئی کڑی نئے ریزالور مجموعے کے ساتھ اور ممکنہ طور پر مختلف split-DNS منظر کے ساتھ آتی ہے۔ systemd-resolved ہر کڑی کے لیے ایک اسکوپ رکھتا ہے اور راستے کے مطابق اُن میں سے چنتا ہے، جبکہ macOS ڈائنامک اسٹور سے scoped ریزالور پڑھتا ہے اور انٹرفیس کی ترتیب کا احترام کرتا ہے۔ اپنا ریزالور لگانے والا کلائنٹ کڑی والے سے مقابلہ کرتا ہے، اور جن ترجیحی اصولوں کو کوئی نہیں دیکھتا وہی فاتح طے کرتے ہیں۔ پھر نام کا حل ٹوٹ سکتا ہے جبکہ پیکٹ فلٹرنگ ٹھیک وہی کر رہی ہو جس کے لیے اُسے لکھا گیا تھا۔

ترتیب شدہ ریزالور کی بجائے فعال ریزالور پڑھیں۔ systemd ہوسٹ پر status ذیلی حکم بتاتا ہے کہ ہر اسکوپ کس کڑی سے آیا اور private-DNS نام نافذ ہے یا نہیں:

resolvectl status --no-pager
resolvectl query intranet.example.com

اگر استفسار ٹنل کی بجائے جسمانی کڑی سے باہر جائے تو کلائنٹ ترجیح کا مقابلہ ہار گیا ہے اور کوئی فائر وال ترتیب نام درست نہیں کرے گی۔ منتقلی کے دونوں طرف استفسار کا راستہ موازنہ کریں کہ کون سا ہٹا۔ جو نام ایسے نجی پتے پر حل ہو جسے نیا نیٹ ورک روٹ نہیں کر سکتا، وہ تیسرا معاملہ ہے، اور وہ غلطی کی بجائے وقت ختم ہونے کے طور پر ظاہر ہوتا ہے۔

منتقلی کی مشق کریں اور ریکارڈ رکھیں

تبدیلی کا انتظار کرنے کی بجائے اُسے جان بوجھ کر دہرائیں۔ پہلی کڑی پر ٹنل چلائیں، طویل منتقلی اور بار بار تلاش شروع کریں، پھر کڑی بدلیں اور دیکھیں کون بچتا ہے۔ پرانی کڑی کے غائب ہونے اور ٹنل کے جڑے ہونے کی اطلاع کے درمیان وقفہ لکھیں، کیونکہ اسی کھڑکی میں پالیسی ٹکی یا نہ ٹکی۔ نتیجہ یک طرفہ نہ ہو اِس لیے ترتیب کو دوسری سمت بھی چلائیں۔

استثناؤں کا اپنا مرحلہ چاہیے، کیونکہ پرانے نیٹ ورک پر جائز بائی پاس نیا پر خودبخود جائز نہیں ہوتا۔ گھر کے LAN پر پرنٹر، NAS یا captive portal سیلولر پر برابر کا نہیں رکھتے، اور جو استثنا اُن تک پہنچتا تھا وہ برابر کے بغیر اصول بن جاتا ہے۔

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

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