گزشتہ ماہ دو لوگوں نے مجھ سے متضاد نتائج مانگے: ایک چاہتا تھا کہ IPv6 VPN سے ڈھکا جائے، دوسرا چاہتا تھا کہ دفتر کا پرنٹر چلتا رہے۔ ایک ہی ::/0 راستہ دونوں خود نہیں دے سکتا۔ یہ راستہ سرنگ کے اندر آتا ہے یا نہیں، تین شرطوں پر منحصر ہے، اور پہلی شرط زیادہ تر تجارتی اخراج کے لیے اسے خارج کر دیتی ہے۔ اگر اخراج IPv6 نہیں اٹھاتا، تو ڈیفالٹ راستہ وہاں بھیجنے سے آپ کی ٹریفک ایسی سرنگ میں چھپ جاتی ہے جہاں اسے بھیجنے کی کوئی جگہ نہیں۔

تین شرطیں جواب کا تعین کرتی ہیں

ڈیفالٹ راستہ ایک سطر ہے، ::/0، اور یہ کسی بھی ایسی IPv6 منزل سے میل کھاتا ہے جس کا زیادہ مخصوص راستہ نہ ہو (RFC 4291)۔ اسے نصب کرنا آسان ہے۔ آپ کو یہ کرنا چاہیے یا نہیں، یہ فیصلہ تین شرطوں پر آتا ہے۔

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

ہر شرط اپنے اپنے انداز میں ناکام ہوتی ہے، اسی لیے اندازہ لگانے میں پوری شام لگ جاتی ہے۔ ناکام پہلی شرط آپ کو خاموشی اور درست دکھنے والی روٹ جدول دیتی ہے۔ ناکام دوسری شرط شروع ہونے کے چند سیکنڈ بعد ہی ہینڈ شیک کو مار دیتی ہے۔ ناکام تیسری شرط چلتی سرنگ اور پرنٹر کے پاس ایک ناخوش ساتھی چھوڑ دیتی ہے۔

What you seeDecision
Exit answers IPv6 probes, no local IPv6 devices to protectRoute ::/0 into the tunnel
Exit answers IPv6 probes, printer or NAS reachable by a global addressRoute ::/0, then give those prefixes a route of their own
Exit is IPv4-only inside the tunnelDo not route ::/0; block IPv6 on the client
Endpoint is reached over IPv6 and sits inside ::/0Install a host route for the endpoint first

کیا اخراج واقعی IPv6 اٹھاتا ہے؟

IPv6 پتے والا سرنگ انٹرفیس دوسری طرف کے بارے میں کچھ ثابت نہیں کرتا۔ بہت سے تجارتی پروفائل اندر سے صرف IPv4 ہیں: سرور آپ کو v4 پتہ دیتا ہے اور باقی سب پھینک دیتا ہے۔ اس کے اوپر AllowedIPs سے ڈیفالٹ راستہ رکھیں اور کرنل خوشی سے IPv6 ایسے انٹرفیس میں بھیجے گا جس کا ساتھی اسے کبھی نہیں دیکھتا۔

سرنگ چلنے کے دوران کلائنٹ سے جانچیں۔ ping -6 -c 3 2001:4860:4860::8888 اور ip -6 route get 2001:4860:4860::8888 مختلف سوالوں کے جواب دیتے ہیں: کہ جواب واپس آتا ہے یا نہیں، اور کرنل نے کون سا آلہ چنا۔ جب دوسرا آپ کی سرنگ کا نام لے اور پہلا کچھ واپس نہ دے، تو مسئلہ راستے میں نہیں، اخراج میں ہے۔

اگر آپ خود اخراج چلاتے ہیں، تو کلائنٹ جانچ پاس ہو سکتی ہے اور راستہ پھر بھی بند گلی میں ختم ہو سکتا ہے۔ گیٹ وے پر net.ipv6.conf.all.forwarding=1 فعال ہونے اور یہ کہ اس کا فائر وال سرنگ سے آگے بھیجے گئے پیکٹ قبول کرتا ہے، کی تصدیق کریں۔ آگے بھیجنے سے انکار کرنے والے اخراج کی طرف درست طریقے سے روٹ کیا گیا پیکٹ کلائنٹ کی جانب سے بالکل روٹنگ خرابی جیسا دکھائی دیتا ہے۔

کیا کلائنٹ آخری نقطے تک اپنا راستہ رکھ سکتا ہے؟

یہی وہ واقعہ ہے جس نے مجھے ایسے لیپ ٹاپ پر پکڑا جس کا WireGuard آخری نقطہ صرف IPv6 تھا۔ آخری نقطے کا پتہ ایک عام عالمی پتہ ہے، اس لیے یہ ::/0 کے اندر آتا ہے۔ پورا سابقہ انٹرفیس میں روٹ کریں اور ہینڈ شیک پیکٹ خود کو اسی سرنگ میں دھکیل دیں گے جسے وہ ابھی بنانے کی کوشش کر رہے ہیں۔ سرنگ کبھی نہیں اٹھتی، اور کلائنٹ کے آؤٹ پٹ میں کچھ نہیں بتاتا کہ کیوں۔

wg-quick لنکس پر اسے سنبھالتا ہے۔ یہ AllowedIPs سے راستے نکالتا ہے، انہیں اپنی جدول میں نصب کرتا ہے اور ایک پالیسی قاعدہ شامل کرتا ہے تاکہ آخری نقطے کی طرف ٹریفک پہلے مرکزی جدول سے حل ہو: وہ suppress_prefixlength 0 قاعدہ جو آپ کو ip -6 rule میں ملے گا۔ اسی لیے wg-quick up وہاں کامیاب ہوتا ہے جہاں ہاتھ سے لکھا ip -6 route add default dev wg0 آپ کو کاٹ دیتا ہے۔

سرنگ اٹھانے سے پہلے اور بعد میں دونوں حالتوں کو ip -6 route get <endpoint-v6> سے جانچیں۔ اگر جواب آپ کے سرنگ آلے کی طرف بدل جائے، تو آپ نے وہ راستہ ہٹا دیا جو سرنگ کو چاہیے۔ جب آپ راستے خود لکھیں، تو اصل گیٹ وے کے ذریعے آخری نقطے تک ایک ہوسٹ راستہ شامل کریں، یا IPv4 کے ذریعے آخری نقطے سے جڑیں اور IPv6 پے لوڈ پر چھوڑ دیں۔

سرنگ سے باہر کیا رہنا چاہیے؟

زیادہ مخصوص راستے ڈیفالٹ کو ہرا دیتے ہیں، اس لیے لنک پر موجود سابقہ یا اپنا راستہ رکھنے والی ULA حد بغیر اضافی محنت کے چلتی رہتی ہے۔ یہی وہ خاموش وجہ ہے جس کی بنا پر بہت سی مکمل سرنگ IPv4 ترتیبات زندہ رہتی ہیں: LAN سابقے ڈیفالٹ سے زیادہ مخصوص ہیں اور کبھی سرنگ میں داخل نہیں ہوتے۔

یہ تب ٹوٹتا ہے جب کوئی مقامی آلہ عالمی پتے سے قابل رسائی ہو، جو اسی راؤٹر سے عوامی سابقہ پانے والے پرنٹر، NAS یا ٹیلی ویژن کے لیے معمول ہے۔ وہ پتے ::/0 سے میل کھاتے ہیں اور کسی اور سے نہیں، اس لیے وہ باقی سب کے ساتھ سرنگ میں چلے جاتے ہیں اور غائب ہو جاتے ہیں۔

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

اگر جواب نہیں ہے، تو اسے روکیں

IPv6 کو راستے کے بغیر چھوڑنا اسے اکیلا چھوڑنے کے مترادف نہیں۔ چلنے والا IPv6 ڈیفالٹ رکھنے والا ہوسٹ سرنگ کے IPv4 اٹھانے کے دوران بھی اسے استعمال کرتا رہتا ہے، اس لیے ٹریفک VPN کے پہلو سے باہر نکلتی ہے اور IPv6 کو ترجیح دینے والی ہر سروس آپ کا اصل پتہ دیکھتی ہے۔ یہ رساؤ ہے، منقسم سرنگ نہیں۔

ایک چنیں اور لکھیں کہ کون سا چنا۔ ڈیفالٹ روٹ کریں اور اوپر کے سمجھوتے قبول کریں، یا سرنگ جب تک رہے IPv6 بند رکھیں۔ AllowedIPs سے سابقہ چھوڑ دینا اکیلا کافی نہیں، کیونکہ آپریٹنگ سسٹم اپنا ڈیفالٹ رکھتا ہے۔ لنکس پر سخت نسخہ sysctl -w net.ipv6.conf.all.disable_ipv6=1 ہے؛ باریک نسخہ فائر وال قاعدے سے IPv6 کو سرنگ سے باہر گرا دیتا ہے۔ فون کلائنٹ میں واضح IPv6 بلاک کرنے والا ٹوگل ہوتا ہے جو وہی کام کرتا ہے۔

اسے رساؤ کی طرح جانچیں

سرنگ اٹھائیں اور ٹوگل پر بھروسا کرنے کے بجائے حالت پڑھیں۔ ip -6 route show default ایک ڈیفالٹ دکھانا چاہیے، اور آپ کے LAN سے باہر کی منزل کے لیے ip -6 route get سرنگ آلے کا نام لینا چاہیے۔ کنکشن منقطع ہونے کے بعد دونوں دہرائیں: سرنگ سے زیادہ جینے والا ڈیفالٹ ہی وہ خرابی ہے جسے آپ ڈھونڈ رہے تھے۔

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

نتیجہ وہاں لکھیں جہاں اگلا شخص اسے پائے: کون سے سابقے مقامی رہتے ہیں، کیوں، اور کنکشن منقطع ہونے کے بعد کلائنٹ کیا کرتا ہے۔ runbook میں دو سطریں اگلے انجینئر کو آدھی رات آخری نقطے کا چکر دوبارہ دریافت کرنے سے بچاتی ہیں۔

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