يبدو تصدير ملف تعريف VPN من Android كخطوة نسخ احتياطي، والقائمة التي تتيح ذلك لا تفعل شيئاً لتصحيح هذا الانطباع. ما تحصل عليه هو مُدخل لمُحلّل، ومفتاح قد لا يعيده نظام التشغيل أبداً، وتفويض صادر لذلك الهاتف تحديداً. افصل هذه الثلاثة وسيظهر السؤال المفيد: أي جزء ما زال ناقصاً على الجهاز الجديد؟

الملف هو الجزء السهل. أما الاثنان الآخران فيحددان ما إذا كانت عملية الترحيل ستنجح.

ما يحتويه ملف التعريف المصدَّر فعلاً

افتح الملف في محرر نصوص قبل أن تثق به. ملف تعريف 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>، ولا يقرؤها إلا معرّف المستخدم لذلك التطبيق. لا توجد طريقة مدعومة لنسخ مجلد خاص بتطبيق آخر من هاتف غير مُروّت، وقد توقف adb backup عن كونه حلاً عاماً بعد أن ألغاه Android 12 وبدأ العملاء يعلنون allowBackup="false". لذا فإن التصدير من عميل Android يعني ما يطبّقه ذلك العميل، وليس نسخاً من نظام الملفات.

تقع طبقة الهوية تحت التطبيق. إذا استورد عميل مفتاحك إلى Android Keystore، تُولَّد المادة هناك أو تُغلَّف، ويمكن للتصديرات اللاحقة أن تحمل إشارة إلى اسم مستعار في Keystore بدلاً من البايتات. صُممت المفاتيح المدعومة بالعتاد بحيث لا يستطيع حتى التطبيق المالك قراءتها، كما توضح Keystore documentation، لذا فإن ملف تعريف يشير إلى ذلك الاسم المستعار يُستورد بنجاح على الهاتف نفسه ويفشل في كل مكان آخر.

هذا ليس تصديراً معطوباً. إنه الخاصية التي طُلب من المنصة توفيرها.

ما لا يستطيع ملف التعريف نقله

قارن العناصر بما سيقبله الجهاز الهدف:

العنصرهل ينتقل؟السبب
البروتوكول ونقطة النهايةنعم، إذا كان عميل الوجهة يدعمهنص عادي في ملف التعريف
شهادة CA والتحقق من اسم المضيفعادةًمادة عامة، لكن اسم المضيف يجب أن يطابق الشهادة
شهادة العميلنعم، إلا إذا كانت مرتبطة بجهاز معينالشهادات قابلة للنقل؛ والمُصدر يقرر عدد الأجهزة التي يجوز استخدامها
المفتاح الخاصفقط إذا وُلّد خارج Keystoreالمفاتيح المدعومة بالعتاد لا يمكن تصديرها، بل استبدالها فقط
الحساب والمصادقة الثنائية وجلسة SSOلاتنتهي صلاحية الرموز وتبقى مرتبطة بالجهاز الذي حصل عليها
المسارات وDNS ونطاق التطبيقاتكنص إعداد فقطيطبّقها Android عند الاتصال عبر VpnService.Builder
قائمة تطبيقات النفق المنقسمنادراًتختلف أسماء الحزم بين الأجهزة، والقائمة حالة خاصة بالعميل

صفّان يسببان معظم الالتباس. المفتاح المولَّد على الجهاز والمعلَّم كغير قابل للتصدير يزول فعلاً مع بيانات التطبيق، لذا فإن البديل هو مفتاح جديد وشهادة صادرة له. أما رمز الجلسة المنسوخ إلى هاتف جديد فينتهي عادةً عند أول تحديث، وهو ما يبدو كفشل في الاستيراد.

الاستيراد تحليل ثم طلب موافقة

على جانب الاستقبال، الاستيراد تحليل يتبعه تنفيذ. يقرأ العميل الإعداد، ويتحقق من وجود كل كتلة مُشار إليها، ثم يكتب تعريف النفق في منطقته المعزولة، ولهذا فإن الملف الذي اخترته من التنزيلات ليس ما يتصل بعد ذلك.

ثم تأتي خطوة تفويض لا يمكن لأي ملف تجاوزها. يشترط Android أن يستدعي التطبيق VpnService.prepare() ويحصل على موافقتك قبل أن ينشئ نفقاً، لذا يعرض ملف تعريف مُستورد حديثاً نافذة النظام مرة واحدة. ثم يُبنى النفق صراحةً عبر addAddress وaddRoute وaddDnsServer، وaddAllowedApplication أو addDisallowedApplication لتوجيه كل تطبيق. لا شيء من ذلك تستلزمه نقطة النهاية، لذا قد ينتج الملف نفسه مجموعة مسارات فعالة مختلفة في عميلين.

تضيف الإعدادات القائمة على الشهادات تفرّعاً آخر. عندما يصدر الخادم شهادة لجهاز معين، كما تفعل تسجيلات MDM وSCEP، فإن إعادة استخدامها على هاتف ثانٍ إما تنجح حتى يفرض الخادم جلسة واحدة لكل هوية أو تفشل عند مصافحة TLS. تحقق من سياسة المُصدر قبل أن تخطط لإعادة استخدامها.

تحقق من الجهاز الجديد قبل سحب القديم

أبقِ الهاتف القديم متصلاً حتى يجتاز الجديد شيئاً أفضل من أيقونة خضراء. تأكد من عنوان الخروج من الجهاز الجديد ومن محلّل DNS الذي استخدمه فعلاً. إذا كان split tunneling مهماً، فشغّل تطبيقاً يجب أن يتجاوز النفق وآخر لا يجب أن يتجاوزه، ثم انظر أيهما يصل إلى مزود الخدمة.

فحص واحد يحسم عنوان الخروج. افتح https://ifconfig.me في متصفح الهاتف، ثم نفّذ curl -s https://ifconfig.me من حاسوب محمول على شبكة Wi-Fi نفسها وقارن الإجابتين بالعنوان الذي خصصه مزوّدك.

عندها فقط اسحب الهوية القديمة، واسحبها عبر المُصدر: أبطِل الشهادة أو أزل الجهاز من الحساب. حذف ملف من التنزيلات لا ينهي شيئاً، لأن جهازين يحملان الشهادة نفسها يبدوان متطابقين في سجل الخادم.

إذا تبيّن أن التصدير غير قابل للنقل، فالإصلاح هو تسجيل جديد لا حزمة إعداد عامة. اطلب ملف تعريف لجهاز ثانٍ، أو ولّد زوج المفاتيح على الهاتف الجديد وقدّم طلب CSR؛ إنه أبطأ، وهو المسار الذي يدعمه المُصدر.

شغّل قائمة التحقق قبل أن تحذف أي شيء: الجهاز الجديد يتصل، وعنوان الخروج وDNS متطابقان، ونطاق كل تطبيق كما أردت، والهوية القديمة مُبطَلة، وأي ملف إعداد احتفظت به موجود في تخزين مشفّر.

مقالات ذات صلة