تبدو خانة الاختيار وكأنها القرار كله، لكنها على Android ليست كذلك. الحزمة نفسها المحددة تعني «هذا التطبيق وحده يستخدم VPN» في أساس التضمين فقط، وتعني «هذا التطبيق يتجاوز VPN» في أساس استبعاد المحدد. يثبّت الناس برنامجًا عميلًا، ويجدون قائمة بعنوان التطبيقات المسموح بها، ويحدّدون الحزمة الوحيدة التي تهمهم، ثم يذهبون بسياسة تفعل العكس. نادرًا ما يفيد تغيير البرامج العميلة؛ الذي يفيد هو اختيار الأساس قبل لمس القائمة.

الأساس هو السياسة، لا خانة الاختيار

مع VpnService من Android، يضبط البرنامج العميل التوجيه لكل تطبيق عبر addAllowedApplication أو addDisallowedApplication. الأول يحصر النفق في الحزم المدرجة، والثاني ينفق كل شيء عداها. تغلّف البرامج العميلة الاثنين بواجهة قد تبدو متطابقة تقريبًا، وبعضها يسمّي القسم باسم القائمة لا بالوضع، لذا لا يستطيع عنوان القسم وحده أن يخبرك أي أساس نشط.

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

What the client showsWhat a checked app gets
Allowed apps, include-only baselineThe app uses the tunnel; unchecked apps do not
Allowed apps, exclude-selected baselineThe app bypasses the tunnel; everything else uses it
No list configuredClient or profile default, commonly all apps

هذا الجدول هو الأسطورة كلها. تحديد التطبيق عبارة عن حزمة واحدة؛ والأساس يقرر ما إذا كانت العبارة «ضمّنه» أم «استبعده».

اختر الوضع، ثم الحزمة

اعمل بهذا الترتيب، لأن تحديدًا جرى في ظل أساس ما قد يبقى بعد تغيير الوضع ويقلب أثره صامتًا:

  1. حدّد الحزمة الحقيقية وما إذا كانت نسخة الملف الشخصي أم نسخة ملف العمل.
  2. افتح إعدادات اختيار التطبيقات للملف الشخصي للـ VPN الذي تتصل به تحديدًا.
  3. اضبط الأساس الذي يعني «التطبيقات المحددة وحدها تستخدم VPN».
  4. ضمّن الحزمة المقصودة وأبعد التطبيقات غير ذات الصلة عن المجموعة.
  5. أعد الاتصال ليعيد البرنامج العميل بناء الواجهة بالقائمة الجديدة.

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

أعد الاتصال قبل أن تحكم على النتيجة

يقرأ VpnService قوائم التطبيقات عند إنشاء واجهة النفق. النفق العامل لا يلتقط تعديل القائمة بالضرورة، وتختلف البرامج العميلة في إعادة البناء تلقائيًا أو انتظارك لتقطع الاتصال وتعيده.

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

قد يخرج سير عملك من التطبيق

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

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

اختبر الجانبين، ثم دوّن السياسة

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

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

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