دو بالکل مختلف کام پروگرامی VPN کے نام کے تحت آتے ہیں، اور ان میں سے صرف ایک ہی دونوں موبائل پلیٹ فارمز پر عام ایپ کے لیے دستیاب ہے۔ پہلا وہ پروفائل آن کرنا ہے جو صارف پہلے ہی محفوظ کر چکا ہے؛ دوسرا اپنی پروسیس کے اندر ٹنل بنانا ہے۔ Android دوسرا VpnService کے ذریعے دیتا ہے اور iOS دوسرا Network Extension حق کے ذریعے دیتا ہے، جبکہ پہلا سسٹم، ڈیوائس کے مالک یا MDM سرور کے پاس رہتا ہے۔ یہ جاننا کہ آپ کو واقعی کون سا چاہیے، عام طور پر منصوبے کو چھوٹا کر دیتا ہے۔

ایک ہی نام کے دو کام

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

کوئی بھی موبائل پلیٹ فارم پہلا کام SDK ایپ کے سامنے نہیں کھولتا۔ وہ کنکشن جو صارف کے کچھ کیے بغیر ظاہر ہو، مالویئر سے الگ نہیں پہچانا جا سکتا، اس لیے دونوں سسٹم ٹریفک لے جانے والی ہر ایپ کے سامنے رضامندی کا دروازہ رکھتے ہیں۔

Android: رضامندی کا دروازہ، اور کوئی پروفائل API نہیں

VpnService Android 4.0 سے موجود ہے اور ایپ کو tun انٹرفیس بنانے دیتا ہے، پھر پیکٹ پڑھتا اور لکھتا ہے۔ سروس کو BIND_VPN_SERVICE کے ساتھ اعلان کرنا ضروری ہے، اور VpnService.prepare() وہ سسٹم ڈائیلاگ بناتا ہے جو صارف سے اجازت مانگتا ہے۔ پلیٹ فارم کا نمونہ ToyVpn مطلوبہ شکل کا سب سے واضح بیان ہے: آپ کا کوڈ انٹرفیس اور اس سے گزرنے والی ہر چیز کا مالک ہے۔

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

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

iOS: حق ہی حد ہے

iOS وہی کام مختلف طریقے سے تقسیم کرتا ہے۔ VPN کلائنٹ Network Extension فریم ورک کے تحت پیکٹ ٹنل فراہم کنندہ یا ایپ پراکسی نافذ کرتا ہے، اور متعلقہ حق ڈویلپر اکاؤنٹ کو دینا ضروری ہے۔ سادہ صورت کے لیے NEVPNManager کے ذریعے ذاتی VPN کنفیگریشن موجود ہے، اور یہ اب بھی اسی اجازت ماڈل میں چلتی ہے۔ Apple پوری سطح Network Extension حوالہ میں دستاویز کرتا ہے، کام کا دائرہ طے کرنے سے پہلے اسے پڑھنا مناسب ہے۔

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

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

ڈیسک ٹاپ زیادہ دور تک پہنچتا ہے، مگر ملکیت نہیں بدلتی

Windows اجازت دینے والی صورت ہے۔ Add-VpnConnection بلند PowerShell سیشن سے فون بک اندراج بناتا ہے، اور rasdial اسکرپٹ سے اسے جوڑتا یا کاٹتا ہے۔ ایپ وینڈر کے کلائنٹ کو اس کی دستاویزی کمانڈ لائن کے ذریعے بھی چلا سکتی ہے۔ پروفائل بنانا اب بھی انتظامی عمل ہے، کیونکہ اندراج پوری مشین کے اسٹور میں رہتا ہے۔

macOS دیگر اوزاروں کے ساتھ ایسا ہی برتاؤ کرتا ہے۔ scutil --nc start اور stop پہلے سے موجود سروسز پر کام کرتے ہیں، جبکہ ایک بنانا سسٹم ایڈمنسٹریشن کا کام ہے۔ لیپ ٹاپ پر پروسیس کی ملکیت آپ کو کنفیگریشن کا مالک نہیں بناتی۔

اس کے بجائے کیا بنائیں

اگر اصل ضرورت یہ ہے کہ آپ کی ایپ کسی داخلی API تک پہنچے، تو صارف کی پہلے سے چل رہی ٹنل کافی ہے۔ عام HTTPS درخواستیں بھیجیں، راستہ سسٹم کو چننے دیں، اور ٹنل کو کنٹرول کرنے کی کوشش بند کریں۔ اگر ضرورت یہ ہے کہ صرف آپ کی ایپ کا ٹریفک ٹنل استعمال کرے، تو مینجمنٹ چینل سے فی ایپ VPN مانگیں، یا ایپ کے اندر ایسی سروس کے سامنے TLS ختم کریں جو اس کے بغیر قابل رسائی ہے۔

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

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