مفتاح إيقاف لكل تطبيق مقابل إغلاق الجهاز بالكامل: ما الذي يتغير
قرّر بحسب المجموعة المحمية، لا بحسب التسمية: ما الذي يتوقف للتطبيقات المستثناة والمساعدات الخلفية والاتصالات الجديدة، وكيف تختبر كل حالة.
يبدو مفتاح الإيقاف لكل تطبيق كالخيار الحذر: عميل العمل وحده يفقد شبكته عند سقوط النفق، ويبقى كل شيء آخر يعمل. ثم يلاحظ أحدهم أن المتصفح الشخصي حمّل صفحة مع ذلك، وأن مساعد المزامنة المرفق بالحزمة نفسها ظل يعيد المحاولة، وأن اسمًا مخزنًا في الذاكرة المؤقتة ظل يُحلّ إلى عنوان لم يمسّ النفق قط. والتسمية الموجودة على الميزة ومجموعة الاتصالات التي تحميها فعليًا أمران مختلفان. حدّد المجموعة المحمية أولًا، لأنها هي التي تقرر ما إذا كان التنفيذ لكل تطبيق أو الإغلاق على مستوى الجهاز هو الوصف الصادق.
ابدأ بالمجموعة، لا بالتسمية
تحمي سياسة لكل تطبيق تطبيقات مختارة. ويستهدف إغلاق الجهاز حدًا شبكيًا أوسع، مع استثناءات موثقة عادةً للطباعة المحلية وحركة الإدارة وبوابات الالتقاط. ولا تكتمل أي من التسميتين حتى تستطيع الإجابة عن ثلاثة أسئلة: ما الذي يحدث للتطبيقات المستثناة، وما الذي يحدث للمساعدات التي تشغلها تلك التطبيقات، وما الذي يحدث للاتصالات التي تُفتح بينما الحماية غير متاحة.
اكتب هذه الإجابات قبل أن تلمس أي إعداد في العميل. إذا كان الشرط هو "ألا يتحدث عميل الرواتب هذا إلى الإنترنت خارج النفق أبدًا، بينما يجوز لمتصفحي ذلك"، فالمجموعة صغيرة والتنفيذ لكل تطبيق مناسب. وإذا كان الشرط هو "ألا يصل شيء على هذا الجهاز إلى الإنترنت دون حماية، باستثناء خدمة التحديث"، فلن تنتجه أي سياسة لكل تطبيق، لأن التطبيقات التي لم تسمّها هي المشكلة.
التنفيذ لكل تطبيق يطابق المعرّفات، لا أسماء البرامج
يتيح Android شبكة VPN لكل تطبيق عبر الحزم، ويشرح توثيق VpnService كيفية تفاعل ذلك مع التشغيل الدائم والحظر. ويُعدّ iOS شبكة VPN لكل تطبيق عبر ملف إدارة، ويطابق بحسب التطبيق أو بحسب النطاق. ولا يملك Windows وLinux أي مسار لكل عملية على الإطلاق، لذا تُقارب الفكرة نفسها بقاعدة جدار حماية مقصورة على برنامج أو بقاعدة تطابق المستخدم المالك.
الحد هو المعرّف، والمعرّفات يسهل الالتفاف حولها. فالتطبيق الذي يسلّم عنوان URL إلى متصفح النظام، أو يفتح مستندًا في عارض، يعبر إلى عملية لم تسمّها سياستك قط. كما أن خيار الإنهاء عند السقوط ليس مرشّح حزم أيضًا: فهو يقتل التطبيق الذي أعددته، بينما قد تبقي عملية فرعية أو عامل طابور أو علامة تبويب في المتصفح مقبسًا قائمًا حيًّا.
الإغلاق يغطي ما لا تستطيع سياسة لكل تطبيق رؤيته
يزيل الإغلاق على مستوى الجهاز الخيار. فكل حزمة صادرة لا تنتمي إلى النفق تُسقط، بما في ذلك حركة من عمليات لم تعرفها سياسة تطبيقاتك قط. وعلى Android يكون ذلك شبكة VPN دائمة التشغيل مقترنة بإعداد حظر الاتصالات، ويحدث التنفيذ في النظام لا في نافذة العميل. وعلى سطح المكتب تكون القاعدة جدار حماية دائمًا أو مسارًا افتراضيًا يشير إلى بوابة لا يمكن الوصول إليها.
الكلفة هي أن كل شيء آخر يتوقف، لذا تصبح الاستثناءات جزءًا من التصميم لا فكرة لاحقة. فالطابعات المحلية واكتشاف الخدمات وتسجيل الدخول في بوابات الالتقاط ووكلاء الإدارة وتحديثات نظام التشغيل تحتاج كلها إلى ثقب موثق، لأن كلًا منها مسار يبقى مفتوحًا عندما يكون النفق معطلًا. والإغلاق ليس أقوى من أقصر بند في تلك القائمة.
DNS وIPv6 والمساعدات الخلفية تخفي التسريبات
فشل تطبيق محمي في حلّ اسم لا يثبت أن الإجابات المخزنة أو حركة IP المباشرة محظورة. فإذا كان المحلل لا يزال متاحًا خارج النفق، يُحلّ الاسم ويفشل الاتصال، وهو ما يبدو كمفتاح إيقاف يعمل وليس كذلك. والأسوأ أن سجلًا مخزنًا قد يشير إلى عنوان لا يحمله النفق، فيخرج الاتصال مباشرة بينما يبلّغ التطبيق عن خطأ VPN.
يحتاج IPv6 إلى قاعدته الخاصة على كل منصة تشغّله، لأن قاعدة إسقاط v4 لا تغطي مسار v6. وعلى الهاتف المحمول، يمكن لإعداد DNS خاص أن ينقل الحلّ إلى قناة مشفرة لا تفحصها سياسة الجهاز. أما المساعدات الخلفية فهي الجاني المعتاد على سطح المكتب: فعملية تحديث أو أيقونة مزامنة تبدأ قبل عميل VPN وتحتفظ باتصالها الخاص، فلا ترى المسار المتغير أبدًا.
اختبر ثلاثة تطبيقات وانتقالين
| Test | What it proves |
|---|---|
| Included app, by name and by direct IP | the policy is applied, not just the resolver |
| Excluded app, same checks | the exclusion is intentional and documented |
| Helper or updater process | nothing inherited an older route |
| Tunnel drop, then Wi-Fi to cellular | the block survives the transition |
نفّذ كل صف مرتين، مرة باسم مضيف ومرة بعنوان صريح، ومرة أخرى عبر IPv6 إن كانت الشبكة تتيحه. النجاح يعني أن التطبيق المشمول توقف، وأن التطبيق المستثنى تصرف كما كتبت، وأن المساعد لم يتسلل للخروج. سجّل السلوك المباشر الذي قررت أنه مقبول، ليستطيع المسؤول التالي التمييز بين استثناء مقصود وفشل.
ثم صف النتيجة في جملة واحدة تسمّي التطبيقات والظروف، مثلًا: لا يملك عميل الرواتب أي مسار خارج النفق، والمتصفح مباشر بحكم التصميم، وكل شيء آخر يتوقف عندما يكون النفق معطلًا. وإذا كان كتابة تلك الجملة صعبًا، فالسياسة لا تزال سياستين تتصارعان.