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: فهو يغطي معظم المهام.