Android VPN ایکسپورٹ: نئے فون پر واقعی کیا منتقل ہوتا ہے
Android VPN ایکسپورٹ ترتیبات اور کبھی کبھار ایک چابی بھیجتا ہے، لیکن ڈیوائس کی اجازت کبھی نہیں۔ پرانا فون مٹانے سے پہلے دیکھیں کہ واقعی کیا منتقل ہوتا ہے۔
Android سے VPN پروفائل ایکسپورٹ کرنا بیک اپ مرحلے جیسا لگتا ہے، اور جو مینو یہ پیش کرتا ہے وہ اس تاثر کو درست کرنے کے لیے کچھ نہیں کرتا۔ آپ کے پاس جو رہتا ہے وہ parser ان پٹ، ایک چابی جو آپریٹنگ سسٹم شاید کبھی واپس نہ دے، اور اسی فون کے لیے جاری کردہ اجازت ہے۔ ان تینوں کو الگ کریں اور مفید سوال سامنے آتا ہے: نئی ڈیوائس پر ابھی کون سا حصہ غائب ہے؟
فائل آسان حصہ ہے۔ باقی دو طے کرتے ہیں کہ منتقلی کام کرے گی یا نہیں۔
ایکسپورٹ شدہ پروفائل میں واقعی کیا ہوتا ہے
بھروسہ کرنے سے پہلے فائل کو ٹیکسٹ ایڈیٹر میں کھولیں۔ OpenVPN پروفائل ایک چھوٹی کنفیگریشن زبان ہے: remote، proto، data-ciphers، اور اکثر ان لائن <ca>، <cert>، <key> یا <tls-crypt> بلاک جو کلائنٹ اپنے TLS اسٹیک کو دیتا ہے۔ WireGuard کنفگ زیادہ ہموار ہے: [Interface] میں PrivateKey اور Address ہوتے ہیں، پھر ہر اینڈ پوائنٹ کے لیے ایک [Peer] جو PublicKey، AllowedIPs اور Endpoint لے کر جاتا ہے۔ IKEv2 چابی بلاکس کی جگہ پے لوڈ ڈکشنریوں کے ساتھ .mobileconfig کے طور پر آتا ہے۔
ان میں سے کوئی بھی متن بذات خود اسناد نہیں ہے۔ اسناد نجی چابی ہیں، اور ہر فارمیٹ انہیں اندر چپکاتا ہے یا ایسے عرف کی طرف اشارہ کرتا ہے جو صرف اسی کلائنٹ کے اندر حل ہوتا ہے جس نے اسے بنایا۔
Android میں چابی واقعی کہاں رہتی ہے
Android ایپ ڈیٹا کو /data/data/<package> کے تحت رکھتا ہے، جسے صرف اسی ایپ کا UID پڑھ سکتا ہے۔ root نہ کیے گئے فون سے کسی دوسری ایپ کی نجی ڈائریکٹری کاپی کرنے کا کوئی معاون طریقہ نہیں ہے، اور Android 12 کے اسے ختم کرنے اور کلائنٹس کے allowBackup="false" اعلان کرنا شروع کرنے کے بعد adb backup عام جواب رہنا ختم ہو گیا۔ لہٰذا Android کلائنٹ سے ایکسپورٹ کا مطلب وہ ہے جو وہ کلائنٹ نافذ کرتا ہے، فائل سسٹم کی کاپی نہیں۔
شناخت کی پرت ایپ کے نیچے ہے۔ اگر کسی کلائنٹ نے آپ کی چابی Android Keystore میں درآمد کی ہے تو مواد وہیں پیدا یا لپیٹا جاتا ہے، اور بعد کی ایکسپورٹس بائٹس کی بجائے Keystore عرف کا حوالہ لے جا سکتی ہیں۔ ہارڈویئر کی معاونت والی چابیاں اس طرح بنائی گئی ہیں کہ مالک ایپ بھی انہیں نہیں پڑھ سکتی، جیسا کہ Keystore documentation بیان کرتا ہے، اس لیے اس عرف کی طرف اشارہ کرنے والا پروفائل اسی فون پر صاف درآمد ہوتا ہے اور باقی ہر جگہ ناکام ہوتا ہے۔
یہ ٹوٹی ہوئی ایکسپورٹ نہیں ہے۔ یہ وہ خصوصیت ہے جو پلیٹ فارم سے مانگی گئی تھی۔
پروفائل کیا منتقل نہیں کر سکتا
اشیاء کا موازنہ اس سے کریں جو منزل قبول کرے گی:
| شے | منتقل ہوتی ہے؟ | کیوں |
|---|---|---|
| پروٹوکول اور اینڈ پوائنٹ | ہاں، اگر منزل کا کلائنٹ سمجھتا ہو | پروفائل میں سادہ متن |
| CA سرٹیفکیٹ اور ہوسٹ نام کی جانچ | عام طور پر | عوامی مواد، لیکن ہوسٹ نام کو پھر بھی سرٹیفکیٹ سے میل کھانا چاہیے |
| کلائنٹ سرٹیفکیٹ | ہاں، جب تک یہ ہر ڈیوائس سے بندھا نہ ہو | سرٹیفکیٹ منتقل ہو سکتے ہیں؛ ایک کو کتنی ڈیوائسز استعمال کر سکتی ہیں یہ جاری کنندہ طے کرتا ہے |
| نجی چابی | صرف اگر Keystore سے باہر بنائی گئی ہو | ہارڈویئر کی معاونت والی چابیاں ایکسپورٹ نہیں ہو سکتیں، صرف بدلی جا سکتی ہیں |
| اکاؤنٹ، MFA، SSO سیشن | نہیں | ٹوکن کی مدت ختم ہوتی ہے اور وہ اسی ڈیوائس سے بندھے رہتے ہیں جس نے حاصل کیے |
| راستے، DNS اور ایپ کا دائرہ | صرف کنفیگریشن متن کے طور پر | Android انہیں منسلک ہوتے وقت VpnService.Builder کے ذریعے لاگو کرتا ہے |
| منقسم ٹنل کی ایپ فہرست | شاذ و نادر | پیکج نام ڈیوائسز میں مختلف ہوتے ہیں، اور فہرست کلائنٹ کی حالت ہے |
دو قطاریں زیادہ تر الجھن پیدا کرتی ہیں۔ ڈیوائس پر بنائی گئی اور ناقابلِ ایکسپورٹ نشان زد چابی واقعی ایپ ڈیٹا کے ساتھ چلی جاتی ہے، اس لیے متبادل نئی چابی اور اس کے لیے جاری سرٹیفکیٹ ہے۔ نئے فون پر کاپی کیا گیا سیشن ٹوکن عام طور پر پہلی تجدید پر ہی مر جاتا ہے، جو ناکام درآمد جیسا لگتا ہے۔
درآمد ایک پارس ہے، پھر رضامندی کی درخواست
وصول کرنے والے کی طرف، درآمد ایک پارس ہے جس کے بعد اندراج ہوتا ہے۔ کلائنٹ کنفگ پڑھتا ہے، جانچتا ہے کہ ہر حوالہ شدہ بلاک موجود ہے، پھر ٹنل کی تعریف اپنے سینڈ باکس میں لکھتا ہے، اسی لیے ڈاؤن لوڈز سے منتخب کی گئی فائل وہ نہیں جو بعد میں منسلک ہوتی ہے۔
پھر وہ اجازت کا مرحلہ آتا ہے جسے کوئی فائل نہیں چھوڑ سکتی۔ ٹنل قائم کرنے سے پہلے Android چاہتا ہے کہ ایپ VpnService.prepare() کو کال کرے اور آپ کی رضامندی لے، اس لیے ابھی درآمد شدہ پروفائل بھی ایک بار سسٹم ڈائیلاگ دکھاتا ہے۔ پھر ٹنل واضح طور پر addAddress، addRoute، addDnsServer، اور ہر ایپ راؤٹنگ کے لیے addAllowedApplication یا addDisallowedApplication کے ذریعے بنایا جاتا ہے۔ ان میں سے کوئی بھی اینڈ پوائنٹ سے مترتب نہیں ہوتا، اس لیے وہی پروفائل دو کلائنٹس میں مختلف مؤثر راستوں کا مجموعہ بنا سکتا ہے۔
سرٹیفکیٹ پر مبنی سیٹ اپ ایک اور شاخ جوڑتے ہیں۔ جب سرور کسی مخصوص ڈیوائس کو سرٹیفکیٹ جاری کرتا ہے، جیسا کہ MDM اور SCEP اندراج کرتے ہیں، تو دوسرے فون پر اس کا دوبارہ استعمال یا تو اس وقت تک کام کرتا ہے جب تک سرور ہر شناخت کے لیے ایک سیشن نافذ نہ کرے، یا TLS مصافحے پر ناکام ہو جاتا ہے۔ دوبارہ استعمال کی منصوبہ بندی سے پہلے جاری کنندہ کی پالیسی دیکھیں۔
پرانے کو ریٹائر کرنے سے پہلے نئی ڈیوائس کی تصدیق کریں
پرانے فون کو منسلک رکھیں جب تک نیا فون سبز آئیکن سے بہتر کچھ پاس نہ کر لے۔ نئی ڈیوائس سے ایگریس پتہ اور وہ DNS حل کنندہ جو اس نے واقعی استعمال کیا تصدیق کریں۔ اگر split tunneling اہم ہے تو ایسی ایپ چلائیں جسے ٹنل سے بچنا چاہیے اور ایک جسے نہیں، پھر دیکھیں کون سی آپ کے ISP تک پہنچتی ہے۔
ایک جانچ ایگریس پتہ طے کرتی ہے۔ فون براؤزر میں https://ifconfig.me کھولیں، پھر اسی Wi-Fi پر لیپ ٹاپ سے curl -s https://ifconfig.me چلائیں اور دونوں جوابات کا موازنہ اس پتے سے کریں جو آپ کے فراہم کنندہ نے دیا۔
تب ہی پرانی شناخت ریٹائر کریں، اور یہ جاری کنندہ کے ذریعے کریں: سرٹیفکیٹ منسوخ کریں یا ڈیوائس کو اکاؤنٹ سے ہٹائیں۔ ڈاؤن لوڈز سے فائل مٹانے سے کچھ ختم نہیں ہوتا، کیونکہ ایک ہی سرٹیفکیٹ والی دو ڈیوائسز سرور لاگ میں یکساں نظر آتی ہیں۔
اگر ایکسپورٹ ناقابلِ منتقلی نکلے تو حل عوامی کنفیگریشن بنڈل نہیں بلکہ نیا اندراج ہے۔ دوسری ڈیوائس کے لیے پروفائل مانگیں، یا نئے فون پر چابی جوڑی بنا کر CSR جمع کریں؛ سست ہے، اور یہی وہ راستہ ہے جس کی جاری کنندہ معاونت کرتا ہے۔
کچھ بھی مٹانے سے پہلے چیک لسٹ چلائیں: نئی ڈیوائس منسلک ہوتی ہے، ایگریس پتہ اور DNS میل کھاتے ہیں، ہر ایپ کا دائرہ ویسا ہی ہے جیسا آپ نے چاہا، پرانی شناخت منسوخ ہے، اور رکھی گئی کوئی بھی کنفگ فائل خفیہ شدہ اسٹوریج میں ہے۔