Skip to content
VDS · الشبكة وعنوان IP والنطاقات

nftables: قواعد أكثر تعقيداً

عندما لا يعود ufw كافياً: بنية جداول وسلاسل nftables، وإعداد جاهز للعمل، ومجموعات العناوين، وتحديد المعدل، وتحويل المنافذ.

آخر تحديث 23 أغسطس 2026

nftables هو الآلية الأساسية في النواة التي يعمل ufw فوقها. استخدمه مباشرة عندما تحتاج إلى مجموعات عناوين مسمّاة، أو تحديد المعدل، أو سياسات مختلفة لكل واجهة، أو إعادة توجيه المنافذ — أي عندما لا تعود قواعدك تتسع في «السماح بمنفذ».

لا حاجة لاستخدام الأداتين معًا: قبل التبديل، عطّل ufw بالأمر ufw disable، وإلا فستتداخل القواعد وتشوّش عليك أثناء تصحيح الأخطاء.

البنية

تعيش القواعد في الجداول، والجداول تحتوي على السلاسل، والسلاسل تحتوي على القواعد. ترتبط السلسلة بمرحلة معالجة الحزم (input، forward، output) ولها سياسة افتراضية.

apt install -y nftables
systemctl enable --now nftables
nft list ruleset

إعداد فعّال

الملف /etc/nftables.conf:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    set admins {
        type ipv4_addr
        elements = { 203.0.113.5, 198.51.100.7 }
    }

    chain input {
        type filter hook input priority 0; policy drop;

        iif lo accept
        ct state established,related accept
        ct state invalid drop

        ip protocol icmp icmp type echo-request limit rate 5/second accept

        tcp dport 22 ip saddr @admins accept
        tcp dport 22 ct state new limit rate 6/minute accept
        tcp dport { 80, 443 } accept
    }

    chain forward {
        type filter hook forward priority 0; policy drop;
    }

    chain output {
        type filter hook output priority 0; policy accept;
    }
}

طبّق واحفظ:

nft -c -f /etc/nftables.conf
nft -f /etc/nftables.conf
systemctl restart nftables

الخيار -c يتحقق من الصياغة فقط دون تطبيق القواعد. استخدمه دائمًا: سياسة drop مع خطأ مطبعي تقطع الوصول، وستضطر للعودة عبر وحدة التحكم في لوحة /hosting/vds/m/<id>.

مجموعات العناوين وتحديد المعدل

تُعدَّل المجموعة المسمّاة فورًا، دون إعادة تحميل القواعد:

nft add element inet filter admins { 192.0.2.10 }
nft delete element inet filter admins { 198.51.100.7 }
nft list set inet filter admins

المجموعة الديناميكية مع مهلة زمنية مفيدة للحظر المخصص:

set blocked {
    type ipv4_addr
    flags timeout
    timeout 1h
}

إعادة التوجيه واستبدال العناوين

يلزم ذلك إذا كان هناك حاوية أو نفق يعمل بالداخل:

table ip nat {
    chain prerouting {
        type nat hook prerouting priority -100;
        tcp dport 8443 dnat to 10.10.0.2:443
    }
    chain postrouting {
        type nat hook postrouting priority 100;
        oifname "eth0" masquerade
    }
}

أخطاء شائعة

الخطأالنتيجةالحل
غياب قاعدة ct state establishedقطع الردود على الطلبات الصادرةأضفها كأول قاعدة
نسيان iif lo acceptتعطّل الخدمات وقواعد البيانات المحليةاسمح بواجهة الاسترجاع
تطبيق القواعد دون حفظهاكل شيء مفتوح بعد إعادة التشغيلاكتب إلى /etc/nftables.conf
ufw وnftables معًانتيجة غير متوقعةأبقِ أداة واحدة فقط

اختبر مجموعة القواعد الجديدة في جلسة منفصلة دون إغلاق جلستك العاملة. احتياط بسيط: sleep 300 && nft flush ruleset في الخلفية — إذا حجبت نفسك، يعود الوصول من تلقاء نفسه.

إذا لم تكن بحاجة إلى هذه التفاصيل، فعُد إلى ufw: فهو يغطي معظم المهام.