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

الرد يُوجَّه ولا يُتذكَّر

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

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

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

ip route show default
sysctl net.ipv4.conf.all.rp_filter net.ipv4.conf.eth0.rp_filter
nft list ruleset | grep -A3 'hook forward'

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

ثلاث طرق للحفاظ على مسار العودة

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

إعادة التوجيه بالسياسات هي الجواب العام. قاعدة مبنية على عنوان المصدر أو على علامة جدار الحماية تختار جدولاً يشير مساره الافتراضي إلى بوابة WAN، بينما تواصل اتصالات الخادم نفسه استخدام النفق. أبقِ الأولوية صريحة كي لا تُحجب القاعدة لاحقاً.

ip rule add from 203.0.113.25/32 table 100 priority 100
ip route add default via 192.0.2.1 dev eth0 table 100
ip route get 198.51.100.7 from 203.0.113.25

يبني الأمران الأولان المسار البديل للردود الصادرة من العنوان العام. يسأل الثالث النواة عن المسار الذي سيسلكه ذلك المصدر والوجهة بالتحديد، وهكذا تتأكد أن للقاعدة أثراً.

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

حين يقوم الصندوق أيضاً بالتوجيه لشبكة محلية

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

عندها يرى تتبع الاتصالات رداً لتدفق لم يسجّله قط فيُسقطه. تسليم ترجمة الوجهة الاتصال الوارد إلى الجهاز، وتجعل ترجمة المصدر الرد يبدو صادراً من الموجه نفسه.

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

ثلاثة فحوص تفصل الأسباب

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

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

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

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