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

کیا VPN فعال ہے — اس کے تین جواب

سروس کی حالت کنٹرول طیارے کی حقیقت ہے۔ macOS جانتا ہے کہ ترتیب جڑی ہوئی ہے کیونکہ اس کے کلائنٹ عمل نے ایسا کہا۔ راستہ ڈیٹا طیارے کی حقیقت ہے: کرنل اس منزل کو اسی انٹرفیس سے بھیجے گا۔ رسائی ایک سرے سے دوسرے سرے تک کی حقیقت ہے، اور یہ ایسی وجوہات سے ناکام ہو سکتی ہے جو باقی دو میں سے کوئی نہیں دیکھتا۔

SignalAnswersBlind spot
scutil --nc statusIs the service connected?Third-party clients, wrong routes
route -n getWhere would this go?The peer may be down
A request to the far sideDoes it work now?Slow, and it changes state

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

شناخت کنندہ پڑھیں، ظاہری نام نہیں

scutil --nc list
scutil --nc status "Office"

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

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

تیسری پارٹی کا کلائنٹ فہرست سے چھپ جاتا ہے

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

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

حالت روٹنگ نہیں ہے

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

ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20

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

نام رکھنا ایک الگ مسئلہ ہے

دوسری مشینیں Mac تک نام سے نہیں پہنچ سکتیں جبکہ اس کا پتہ کام کرتا ہے، اور یہ VPN کی خرابی بتایا جاتا ہے۔ مقامی ہوسٹ نام، ہوسٹ نام اور DNS ریکارڈ تین مختلف چیزیں ہیں۔ scutil --get LocalHostName Bonjour نام دکھاتا ہے؛ sudo scutil --set HostName mac-office وہ نام مقرر کرتا ہے جو سسٹم بتاتا ہے۔

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

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

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