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

سياستان وجهاز واحد

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

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

اكتب قائمة التطبيقات قبل القاعدة

اسرد البرامج التي يجب أن تستخدم النفق، وتلك التي يجب أن تمر مباشرة، والأسماء أو الوجهات التي يجب ألا تظهر أبدًا في أي من القائمتين. أدرج سلوك المحلل وجانب IPv6 بشكل منفصل، لأن كليهما قد يتبع سياسة مختلفة عن حركة الصفحات.

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

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

ما يفعله العميل أثناء الانقطاع

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

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

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

ثلاث لحظات: النفق يعمل، النفق معطل، إعادة الاتصال

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

curl -sS --max-time 8 https://api.ipify.org
curl -sS --max-time 8 --interface tun0 https://api.ipify.org
dig +short example.com

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

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

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