جدول VPN الفارغ لا يحجب شيئًا بذاته
جدول سياسات لا يجد مسارًا مطابقًا لا يُسقط الحزم؛ بل يستمر البحث. أضف إجراءً نهائيًا، ثم اختبر حالتي الفشل.
قاعدة سياسة ترسل الحزم المعلَّمة إلى جدول مخصص، والافتراض المعتاد أن فقدان مسار VPN يحجبها. لكن الآلية تفعل شيئًا آخر. عندما لا يحتوي الجدول على مسار مطابق، يستمر البحث إلى القاعدة التالية بدلًا من التوقف، ولا يزال الجدول main يحمل مسارًا افتراضيًا عاديًا للوصلة الصاعدة. النتيجة إعداد يبدو fail-closed لكنه يتصرف كـ fail-open.
لا شيء معطوب؛ هكذا تُحدَّد توجيهات السياسات.
البحث يستمر عندما لا يجد الجدول شيئًا
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 lookup default 32766: from all lookup main
خذ مجموعة القواعد تلك: بحث معلَّم يذهب إلى الجدول 42، وقاعدة لاحقة ترسل العلامة نفسها إلى جدول اسمه default. وما دام الجدول 42 يحمل مسارًا افتراضيًا صالحًا، يوفّر البحث الأول المسار. وعندما يختفي ذلك المسار ولا يطابق شيء آخر في الجدول 42، لا يصبح البحث عملية إسقاط؛ بل تنتقل المعالجة إلى القاعدة التالية، وعندما لا تجد تلك شيئًا أيضًا، تصل إلى الجدول main. لا شيء في ذلك التسلسل يبلّغ أي قاعدة أنتجت الإجابة النهائية، لذلك يبدو الاتصال العامل كسياسة عاملة.
الجدول 253، الذي يُسمى تقليديًا default، هو جدول توجيه عادي ويكون فارغًا عادةً. اسمه ليس أمرًا بإسقاط الحزم، وليس الشيء نفسه كمسار وجهة افتراضي داخل جدول.
الإجراءات النهائية تُنهي البحث
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 prohibit 32766: from all lookup main
يمكن لقاعدة نهائية أن تلي بحث VPN بدلًا من البحث في جدول فارغ. بالعلامة نفسها، إجراء prohibit الموضوع بعد قاعدة الجدول 42 ينهي البحث عندما لا يُنتج ذلك الجدول شيئًا، فيعيد رفضًا إداريًا بدلًا من منح الجدول main فرصة أخرى. وunreachable وblackhole نهائيان أيضًا، مع سلوك خطأ مختلف للمرسِل.
المسار من النوع throw مختلف: داخل ذلك الجدول يتصرف كما لو أن لا شيء طابق، لذا تحصل القواعد اللاحقة على دورها. هذا يجعل throw مفيدًا للرجوع المتعمد وخاطئًا كحاجز نهائي.
تحقّق بالعلامة والواجهة الفعليتين
ip -4 rule show ip -4 route show table 42 ip -4 route get 198.51.100.20 from 10.44.0.2 iif lan0 mark 0x36
افحص القواعد والجدول الفعليين بدلًا من مخطط، ثم استعلم عن التدفق بالسياق الحقيقي للمصدر والعلامة والدخل. بحث للقراءة فقط موجَّه إلى وجهة، يُعطى عنوان المصدر والواجهة والعلامة، يبلّغ عن المسار الذي سيختاره النواة دون أن تخرج حزمة. إعطاء علامة في الاستعلام لا يثبت أن جدار الحماية يعلّم حركة المرور الفعلية؛ ذلك فحص منفصل لقواعد التعليم. أكّد القيمة بعدّاد أو سجل قبل استخلاص استنتاجات من الاستعلام.
الطلبات المولَّدة محليًا تحتاج سياقها الخاص، لأن مسار تعليمها يختلف غالبًا عن مسار الحركة المُمرَّرة. افحصها بواجهة الخروج التي سيستخدمها التطبيق فعليًا.
حالتا فشل، لا حالة واحدة
إحدى حالتي الفشل هي اختفاء مسار VPN وانتقال الحركة إلى الوصلة الصاعدة. والنفق الميت الذي يبقى مساره مثبتًا حالة أخرى: تبقى الحزم موجَّهة إلى مسار غير صالح بدلًا من الانتقال، والعَرَض هو فقدان صامت لا اتصال مباشر مرئي. اختبر الحالتين، واختبر أيضًا سلوك البدء وإعادة الاتصال وإيقاف الخدمة.
مثل هذه القاعدة تفيد فقط ما دامت موجودة وما دامت الحزم تحمل العلامة التي تختارها. سكربت إيقاف يحذف القاعدة، أو مسار يزيل العلامة، يعيد السلوك المفتوح. تستحق تلك الانتقالات التدريب.
طبّق السياسة على IPv6 بشكل منفصل، وأبقِ استثناءات نقاط النهاية المعتمدة صريحة لا ضمنية.