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

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

موضعان، نتيجتان مختلفتان

insert تضع قاعدة قبل القاعدة المُشار إليها. add تضعها بعدها. إذا كانت القاعدة المُشار إليها هي الإسقاط النهائي للتدفق، فإن هذين الأمرين ينتجان نتيجتين متعاكستين رغم تطابق نص القاعدة.

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

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

المعرّف يدلّ على قاعدة، لا على رقم سطر

المعرّف مثل 42 هو مُعرِّف في حالة مجموعة القواعد الحالية. ليس القاعدة الثانية والأربعين، وليس مستقرًا عبر المضيفين أو إعادات البناء أو مدير يعيد تحميل إعداداته.

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

iptables --version
nft -a list ruleset

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

اعثر على السلسلة والقاعدة التي تُسقط فعلًا

اقرأ hook الإدخال وأولوية السلسلة والقاعدة التي ترفض تدفق هذا المستمع. قد يحمل جدول inet عائلتي العناوين، لكن قاعدة مفردة قد تطابق IPv4 فقط.

خذ قرينًا واحدًا معتمدًا، باستخدام 198.51.100.25 من نطاق التوثيق كمثال. يمكن لملف أصلي مُراجَع أن يضع سماحًا خارجيًا قبل المعرّف 42:

insert rule inet filter input handle 42 iifname "eth0" ip saddr 198.51.100.25 udp dport { 500, 4500 } counter accept

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

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

القبول محدود النطاق، والإسقاط نهائي

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

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

تلك القاعدة تغطي تبادل المستمع الخارجي فقط. ESP المغلف بالنقل وESP الأصلي وأقران IPv6 والحركة المفكوكة داخل النفق كلها تحتاج سياسات خاصة بها. إنها ليست جدار حماية كاملًا لموقع VPN.

افحص الملف، ثم تحقّق من النتيجة الحيّة

شغّل فحصًا للصياغة والمعاملة على الملف المُدقّق قبل تطبيقه. يبيّن وضع الفحص ما إذا كان nft يستطيع تحليل التغيير وتهيئته؛ وهو لا يطبّقه ولا يثبت أن hook آخر سيسمح بالحزمة. يبقى الملف اقتراحًا حتى يطبّقه المالك:

nft -c -f reviewed-vpn-rule.nft

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

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

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