root وہ چیز نہیں جو Android VPN ایپ کو ٹریفک لے جانے، لیک روکنے یا ری بوٹ کے بعد چلنے کی اجازت دیتی ہے۔ لوگ یہ سب „ایپ کے پاس VPN اجازت ہے“ میں سمیٹ دیتے ہیں، جو تین الگ میکانزم چھپاتا ہے: صارف کی رضامندی، سسٹم کا بنایا ہوا پیکٹ انٹرفیس، اور پلیٹ فارم کی بلاکنگ پالیسی جسے طے کرنا ایپ کا کام نہیں۔ Android VPN ڈیزائن کا جائزہ لینے کا مطلب یہ پوچھنا ہے کہ کوئی دعویٰ درحقیقت ان تینوں میں سے کس پر کھڑا ہے، کیونکہ ہر ایک کا مالک اور ناکامی کا طریقہ الگ ہے۔

رضامندی سسٹم کی سرگرمی کے ذریعے آتی ہے

VpnService.prepare() کچھ نہیں دیتا۔ رضامندی نہ ہونے پر یہ سسٹم کی رضامندی کی سرگرمی کو intent واپس کرتا ہے، اور ایپ وہ ڈائیلاگ کھولتی ہے تاکہ صارف خدمت کی منظوری دے سکے۔ ایپ کا اپنا عمل شروع کرنا، مینی فیسٹ میں اجازت شامل کرنا، یا اپنی مرضی کی „VPN فعال کریں“ اسکرین دکھانا اجازت پیدا نہیں کرتا۔

اجازت کا دائرہ بھی محدود ہے۔ یہ صارف پروفائل میں ایک پیکیج کی ہے، اس لیے ذاتی نقل اور کام کی نقل الگ فیصلے ہیں، اور ڈیوائس کا مالک منظم پروفائل کو ذاتی سے مختلف طریقے سے تیار کر سکتا ہے۔ اگر ڈائیلاگ کبھی نظر نہ آئے اور prepare() null واپس کرے، تو اس پروفائل میں اس پیکیج کے لیے رضامندی پہلے سے موجود ہے؛ یہ ایپ کے قابلِ اعتماد ہونے کا ثبوت نہیں، صرف یہ کہ اجازت موجود ہے۔

انٹرفیس وہ درخواست ہے جو سسٹم پوری کرتا ہے

رضامندی کے بعد ایپ VpnService.Builder کے ذریعے بتاتی ہے کہ کیا چاہیے: پتے، راستے، DNS سرورز، MTU اور جہاں معاونت ہو، شامل یا خارج کرنے والی ایپس۔ establish() سسٹم سے ٹنل انٹرفیس بنانے اور مماثل ٹریفک اس میں منتقل کرنے کی درخواست کرتا ہے۔ روٹنگ کا فیصلہ سسٹم کا ہے؛ ایپ فائل ڈسکرپٹر وصول کرتی ہے اور پھر پیکٹوں کے ساتھ کچھ مفید کرنا ہوتا ہے۔

What you observeWho actually owns it
VPN consent dialogThe system, triggered by prepare()
Routes, DNS and app listsThe app requests them; the system applies them
One active VPN per profileThe platform; a new service replaces the old one
Always-on and block-without-VPNDevice policy enforced by the platform

یہ جدول ایک ہی جگہ پر فن تعمیر ہے۔ ایپ پیکٹ ہینڈلنگ میں شریک ہوتی ہے؛ انٹرفیس، روٹنگ جدول یا چلنے والی خدمات کی تعداد اس کی نہیں۔

ٹنل ساکٹ کو اپنے ہی ٹنل سے بچ نکلنا ہوتا ہے

خفیہ کردہ ٹریفک لے جانے والا کنکشن خود ایک ساکٹ ہے۔ اگر یہ اسی انٹرفیس میں واپس بھیجا جائے جو ایپ نے ابھی بنایا، تو ٹنل ٹنل پر منحصر ہو کر رک جاتا ہے۔ VpnService.protect() اس ساکٹ کو نیچے کے نیٹ ورک سے باندھتا ہے تاکہ یہ گرفت سے بچ جائے، اسی لیے درست کلائنٹ پہلے ہینڈ شیک سے پہلے اپنا بیرونی ساکٹ محفوظ کرتا ہے۔

adb shell dumpsys connectivity | grep -i -A5 vpn
adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

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

بلاکنگ پلیٹ فارم کی ہو سکتی ہے

Android ایسی پالیسی کی دستاویز کرتا ہے جو VPN استعمال نہ کرنے والے کنکشن بلاک کرتی ہے۔ وہ نفاذ پلیٹ فارم کا معاہدہ ہے، ایپ کا لوپ میں کنکشن دوبارہ آزمانا نہیں۔ سوئچ ڈیوائس کی VPN ترتیبات میں „VPN کے بغیر کنکشن بلاک کریں“ کے طور پر ہے، اور منظم ڈیوائس پر مالک اسے پورے پروفائل کے لیے آن کر سکتا ہے۔ مارکیٹنگ کے دعوے کا جائزہ لیتے وقت یہ فرق اہم ہے: کلائنٹ تالے کا آئیکن دکھا کر جارحانہ طور پر دوبارہ جڑ سکتا ہے جبکہ براہ راست ٹریفک اب بھی ممکن ہو، یا ڈھکی ہوئی ایپس آف لائن رہ سکتی ہیں کیونکہ سسٹم لاک ڈاؤن نافذ کر رہا ہے۔

تالے کا آئیکن ایپ بناتی ہے، اس لیے یہ صرف یہ ثابت کرتا ہے کہ ایپ سمجھتی ہے وہ جڑی ہوئی ہے۔ کوئی دوسری ایپ اپنی نیٹ ورک رسائی کھوتی ہے یا نہیں، یہ پلیٹ فارم طے کرتا ہے، اس لیے مفید جانچ یہ دیکھنا ہے کہ ٹنل آن ہونے پر وہ ایپ ناکام ہوتی ہے۔

ایپ اسٹور کا „ہمیشہ آن“ لیبل بھی اس معاہدے کا متبادل نہیں۔ ہمیشہ آن اور لاک ڈاؤن ڈیوائس ترتیبات ہیں، اکثر ڈیوائس کا مالک نافذ کرتا ہے، اور خارج شدہ ایپس کے لیے ان کا رویہ پلیٹ فارم طے کرتا ہے۔ ترتیب پڑھیں، بیج نہیں۔

ڈیزائن کے جائزے کے چار سوال

پہلا، کس نے رضامندی دی: کون سا پیکیج، کون سا پروفائل، اور یہ صارف تھا یا منظم ڈیوائس کی پالیسی؟ دوسرا، ایپ نے کیا مانگا: کون سے راستے، کون سے پتے کے خاندان، کون سی ایپس شامل یا خارج؟ تیسرا، ٹنل دستیاب نہ ہونے پر کیا ہوتا ہے: سسٹم بلاک کرتا ہے یا ٹریفک نیچے کے نیٹ ورک پر واپس جاتا ہے؟ چوتھا، ایپ موصول ہونے والے پیکٹوں کے ساتھ کیا کرتی ہے؟

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

غیر ضروری root درخواست نتیجے کو کل سوئچ کہنے سے جائز نہیں ہوتی، اور رضامندی کا ڈائیلاگ سیکیورٹی آڈٹ نہیں۔ تینوں اجازتیں الگ رکھیں، ہر دعویٰ قابلِ جانچ ہو جاتا ہے۔

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