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

پہچانیں کہ آلے نے اصل میں کیا ناپا

سب سے عام جھوٹا الارم لنک-لوکل پتہ ہے، جو fe80: سے شروع ہوتا ہے اور ہر IPv6 کے قابل انٹرفیس پر موجود ہوتا ہے، چاہے مشین IPv6 کے ذریعے انٹرنیٹ تک پہنچے یا نہ پہنچے۔ یہ انٹرفیس فہرستوں اور بعض ایپلیکیشن تشخیص میں ظاہر ہوتا ہے، اور آپ کے ٹریفک راستے کے بارے میں کچھ نہیں بتاتا۔

دوسرا جھوٹا الارم fc00::/7 کے اندر ایک منفرد مقامی پتہ ہے، جو نیٹ ورک کے اندر استعمال ہونے والی نجی رینج ہے۔ ہوسٹ کے ہر پتے کو چھاپنے والا آلہ اسے عوامی پتے کے ساتھ خوشی سے فہرست کرے گا۔ جو جلدی پڑھے وہ اسے لیک کہتا ہے، پھر ایسی مشکل پر ایک گھنٹہ صرف کرتا ہے جو موجود ہی نہیں۔

تیسرا کوئی جھوٹا الارم نہیں ہے۔ ٹنل سے باہر انٹرنیٹ تک پہنچنے والا عالمی پتہ ہی اصل لیک ہے، اور کچھ بھی طے کرنے سے پہلے اسے ناپنا مناسب ہے:

ip -6 addr show scope global
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co

اگر پہلی کمانڈ عالمی پتہ چھاپے اور تیسری ایسا عوامی IPv6 پتہ واپس کرے جو ٹنل کا نہیں، تو ٹنل سے باہر آپ کا اصل راستہ ہے۔ اگر پہلی لنک-لوکل اندراجات کے سوا کچھ نہ چھاپے، تو ٹھیک کرنے کے لیے کوئی لیک کبھی نہیں تھی۔

کنٹرول تین شرطیں طے کرتی ہیں

فیصلہ "IPv6 اچھا" یا "IPv6 برا" نہیں ہے۔ فیصلہ یہ ہے کہ آپ تین حالتوں میں سے کس میں ہیں، اور ہر ایک کا درست جواب مختلف ہے اور غلطی پر قیمت بھی مختلف ہے۔

SituationCorrect controlCost if you disable IPv6 instead
Exit has no IPv6, host doesBlock IPv6 deliberately in the tunnel policySame visible result, no documentation of intent
Exit carries IPv6, host leaksRoute IPv6 into the tunnel and verifyYou lose IPv6 reachability entirely
Access network is IPv6-onlyChange nothing; use the tunnel's IPv6Machine loses connectivity completely

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

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

اگر ایگزٹ میں IPv6 نہیں ہے تو جان بوجھ کر بلاک کریں

کلائنٹ کی اپنی تدبیر کو ترجیح دیں، کیونکہ یہ ٹھیک اس وقت تک لاگو ہوتی ہے جب تک ٹنل قائم ہے اور ٹنل گرنے پر واپس ہٹ جاتی ہے۔ OpenVPN کے پاس اس کے لیے آپشن ہے، اور دیگر کلائنٹس کے لیے iptables کے پاس مساوی قاعدہ ہے:

block-ipv6
ip6tables -A OUTPUT -o eth0 -j REJECT --reject-with ipv6-port-unreachable

ہدایت پروفائل میں رہتی ہے؛ قاعدہ اس فائر وال میں رہتا ہے جسے آپ دیکھ اور ہٹا سکتے ہیں۔ دونوں بند حالت میں ناکام ہوتے ہیں، جو آپ چاہتے ہیں، اور دونوں کنفیگریشن ڈف میں نظر آتے ہیں، جو اسٹارٹ اپ اسکرپٹ میں دفن کرنل sysctl نہیں آتا۔

لکھیں کہ یہ کیوں موجود ہے۔ بغیر تبصرہ بلاکنگ قاعدہ اگلا وہ شخص ہٹا دیتا ہے جسے IPv6 کسی غیر متعلق کام کے لیے درکار ہو، اور پھر لیک خاموشی سے واپس آ جاتی ہے۔

اگر ایگزٹ IPv6 لے جاتا ہے تو اسے روٹ کریں اور دونوں خاندان جانچیں

سرور حمایت کرے تو IPv6 لے جانا بہتر جواب ہے، اور یہ زیادہ مشکل نہیں۔ شرط یہ ہے کہ ٹنل انٹرفیس کے پاس اس خاندان کا پتہ ہو اور اس کا ڈیفالٹ راستہ جسمانی انٹرفیس سے باہر نہیں، ٹنل کے اندر کی طرف ہو:

ip -6 route get 2606:4700:4700::1111
ip -6 route show default
curl -6 -sS --max-time 6 https://ifconfig.co
curl -4 -sS --max-time 6 https://ifconfig.co

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

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

اگر ایکسیس نیٹ ورک صرف IPv6 ہے تو اسے چھوڑ دیں

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

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

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

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