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

تتبَّع حزمة واحدة عبر الخادم

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

Forwarding pathWho decidesWhat the host firewall sees
Kernel routing between clientsHost routing table and forward rulesEvery inner packet, with interface names
Peer forwarding inside the server processThe VPN daemon's own peer tableOnly the outer encrypted transport

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

اختبار العدّاد الذي يحسم أي مسار جرى

أرفق عدّادًا بالقاعدة التي ينبغي أن تنطبق، وشغّل نقلًا بين عميلين ينبغي لتلك القاعدة أن تحجبه، ثم اقرأ العدّاد بعد ذلك.

sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward

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

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

المبدّل ليس قائمة وصول

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

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

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

اختيار نقطة التمرير

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

اختر التمرير داخل العملية عندما تكون حركة الأقران إما مسموحة كلها أو مرفوضة كلها ويكون الخادم بمقاس ذلك. الكلفة أن العدّادات وتخصصات الانتظار وتتبع الاتصالات لم تعد تصف التدفقات الداخلية؛ وهذا مقبول فقط إن لم يعتمد عليه أحد لاحقًا.

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

ما يجب التحقق منه قبل تغيير القواعد

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

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

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