دليل nftables الشامل 2026: بناء جدار حماية حديث على لينكس وترحيل آمن من iptables

دليل عملي شامل لإتقان nftables في 2026: من المفاهيم الأساسية إلى بناء جدار حماية إنتاجي مع المجموعات الديناميكية، NAT، حماية DDoS، والترحيل الآمن من iptables.

nftables 2026: دليل جدار الحماية الكامل

دعنا نكون صريحين: إذا كنت لا تزال تعتمد على iptables لبناء جدار الحماية على خوادم لينكس في 2026، فأنت تتمسك بتقنية في طور التقاعد منذ سنوات. أتذكر أول مرة لمست فيها nftables على خادم إنتاج قبل بضع سنوات — كنت متردداً، صراحةً، لكن بعد أسبوع من الاستخدام، لم أعد قادراً على العودة. لقد أصبح nftables هو الواجهة الرسمية المعتمدة في نواة لينكس لتصفية الحزم، ومعتمَد افتراضياً في Debian 11+، وUbuntu 22.04+، وRHEL 9+، وFedora، وArch Linux.

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

لماذا nftables؟ ولماذا الآن تحديداً؟

تم تطوير nftables منذ 2014 ليحل محل المجموعة القديمة من الأدوات: iptables, ip6tables, arptables, ebtables. الفائدة الجوهرية ليست مجرد تغيير في صيغة الأوامر (هذا الجزء السهل)، بل تحسين بنيوي عميق في الأداء والمرونة.

المزايا الرئيسية مقارنة بـ iptables

  • أداء أعلى: يستخدم nftables آلة افتراضية (VM) في النواة بدلاً من التقييم المتسلسل للقواعد، مما يقلل بشكل ملحوظ زمن المعالجة عند وجود آلاف القواعد.
  • صيغة موحدة: أمر واحد nft يحل محل أربع أدوات منفصلة، ويدعم IPv4 وIPv6 معاً في قاعدة واحدة من نوع inet. هذه نقطة كبيرة، صدقني.
  • الخرائط والمجموعات (sets & maps): هياكل بيانات أصلية للبحث السريع O(1) بدلاً من القوائم الخطية.
  • التحديث الذري: يمكن تحميل ملف قواعد كامل دون قطع الاتصال أو ترك ثغرة زمنية مفتوحة — وهذا وحده يستحق الترحيل.
  • تتبع الاتصالات الأفضل: تكامل مع conntrack بصيغة أوضح وأكثر تعبيراً.

متى تبقى مع iptables؟

سؤال عادل. إذا كنت تدير أنظمة قديمة جداً (RHEL 7، Ubuntu 18.04 أو أقدم) أو تعتمد على أدوات تنسيق (orchestration) لم تتبنَّ nftables بعد، فقد تحتاج إلى الإبقاء عليه مؤقتاً. لكن لأي نشر جديد في 2026؟ الإجابة واضحة: nftables هو الخيار الصحيح، نقطة.

التحضير: التحقق من البيئة وتثبيت nftables

تأتي معظم التوزيعات الحديثة مع nftables مثبتاً مسبقاً. لنبدأ بالتحقق من الإصدار:

# فحص إصدار nftables والنواة
nft --version
uname -r

# التأكد من تحميل وحدة النواة
lsmod | grep nf_tables

إذا لم يكن مثبتاً (نادراً، لكن يحدث)، استخدم الأمر المناسب لتوزيعتك:

# Debian / Ubuntu
sudo apt update && sudo apt install -y nftables

# RHEL / Rocky / AlmaLinux / Fedora
sudo dnf install -y nftables

# Arch Linux
sudo pacman -S nftables

# تفعيل الخدمة وبدء تشغيلها تلقائياً
sudo systemctl enable --now nftables

تعطيل iptables-legacy لتجنب التعارض

على الأنظمة التي ترقت من إصدارات قديمة، قد تكون لديك قواعد iptables تعمل بالتوازي عبر طبقة التوافق iptables-nft. هذا مصدر صداع شائع جداً. للتأكد من حالة نظامك:

# عرض البديل النشط حالياً
sudo update-alternatives --display iptables

# على Debian/Ubuntu: التحويل إلى nftables بالكامل
sudo update-alternatives --set iptables /usr/sbin/iptables-nft
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-nft

# إيقاف الخدمات القديمة إن وجدت
sudo systemctl disable --now ufw 2>/dev/null
sudo systemctl disable --now firewalld 2>/dev/null

المفاهيم الأساسية في nftables

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

1. العائلات (Families)

تحدد العائلة نوع الحزم التي ستتم معالجتها:

  • ip — IPv4 فقط
  • ip6 — IPv6 فقط
  • inet — IPv4 وIPv6 معاً (الأكثر استخداماً للجدران النارية، وما ستستعمله في 90% من الحالات)
  • arp — حزم ARP
  • bridge — جسر الشبكة (Layer 2)
  • netdev — معالجة مبكرة جداً على مستوى الواجهة (مثالي لـ DDoS)

2. الجداول (Tables)

الحاوية الرئيسية لجميع القواعد والسلاسل ضمن عائلة محددة. بسيطة لكنها ضرورية.

3. السلاسل (Chains)

مجموعة من القواعد. تنقسم إلى نوعين:

  • Base chains: مرتبطة بمعالج (hook) في النواة مثل input, output, forward, prerouting, postrouting.
  • Regular chains: سلاسل مساعدة يتم القفز إليها عبر jump أو goto.

4. القواعد (Rules)

الجملة الفعلية التي تطابق الحزم وتقرر الإجراء (accept, drop, reject, log... إلخ).

بناء جدار حماية إنتاجي خطوة بخطوة

حسناً، لنشمر عن السواعد. سننشئ الآن ملف تكوين كامل لخادم ويب نموذجي يخدم SSH وHTTP وHTTPS. الملف الرئيسي يقع في /etc/nftables.conf:

#!/usr/sbin/nft -f

# مسح أي قواعد سابقة بشكل ذري
flush ruleset

table inet filter {

    # مجموعة لعناوين IP الموثوقة (للإدارة)
    set admin_ipv4 {
        type ipv4_addr
        flags interval
        elements = { 10.0.0.0/24, 192.168.1.100 }
    }

    # مجموعة للعناوين المحظورة (يمكن التحديث ديناميكياً)
    set blacklist_v4 {
        type ipv4_addr
        flags dynamic, timeout
        timeout 24h
        size 65536
    }

    # سلسلة INPUT الرئيسية
    chain input {
        type filter hook input priority filter; policy drop;

        # قبول الاتصالات القائمة والمرتبطة
        ct state established,related accept
        ct state invalid drop

        # السماح بحركة المرور المحلية (loopback)
        iif "lo" accept

        # حماية ضد الانتحال على loopback
        iif != "lo" ip daddr 127.0.0.0/8 drop
        iif != "lo" ip6 daddr ::1 drop

        # السماح بـ ICMP الأساسي (ping) مع تحديد المعدل
        ip protocol icmp icmp type { echo-request, destination-unreachable, time-exceeded } limit rate 5/second accept
        ip6 nexthdr icmpv6 icmpv6 type { echo-request, destination-unreachable, packet-too-big, time-exceeded, parameter-problem, nd-neighbor-solicit, nd-router-advert, nd-neighbor-advert } accept

        # رفض الحزم من القائمة السوداء قبل أي شيء آخر
        ip saddr @blacklist_v4 drop

        # SSH: من الإدارة فقط مع حماية من القوة الغاشمة
        tcp dport 22 ip saddr @admin_ipv4 ct state new limit rate 4/minute accept
        tcp dport 22 ct state new add @blacklist_v4 { ip saddr timeout 1h } log prefix "[NFT-SSH-BAN] " drop

        # خدمات الويب العامة
        tcp dport { 80, 443 } accept

        # حماية ضد فحوص المنافذ (port scanning)
        tcp flags & (fin|syn|rst|ack) == syn ct state new limit rate over 60/second burst 20 packets log prefix "[NFT-SCAN] " drop

        # تسجيل وإسقاط كل شيء آخر
        limit rate 5/minute log prefix "[NFT-DROP] " level info
        counter drop
    }

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

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

تحميل التكوين والتحقق منه

لا تقم بتحميل قواعد لم تختبر صياغتها أولاً. تعلمت هذا الدرس بالطريقة الصعبة:

# التحقق من صحة الصياغة قبل التحميل
sudo nft -c -f /etc/nftables.conf

# تحميل القواعد
sudo systemctl reload nftables

# عرض القواعد النشطة
sudo nft list ruleset

# عرض العدادات (للتشخيص)
sudo nft list ruleset -a

المجموعات والخرائط: قوة nftables الحقيقية

هنا يحدث السحر. هذه الميزة هي السبب الرئيسي لتفوق nftables على iptables من حيث الأداء والوضوح.

المجموعات الديناميكية لـ Fail2ban بدون Fail2ban

نعم، قرأت ذلك بشكل صحيح. يمكنك بناء آلية حظر تلقائي على مستوى النواة بدون أي خدمة خارجية:

# إضافة عنوان IP إلى القائمة السوداء يدوياً
sudo nft add element inet filter blacklist_v4 { 203.0.113.45 timeout 24h }

# عرض محتويات المجموعة
sudo nft list set inet filter blacklist_v4

# حذف عنوان
sudo nft delete element inet filter blacklist_v4 { 203.0.113.45 }

الخرائط: التوجيه حسب الخدمة

مثال على خريطة verdict تربط منافذ بأفعال مختلفة (لاحظ كم هذا أنظف من iptables):

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

        tcp dport vmap {
            22 : jump ssh_chain,
            80 : accept,
            443 : accept,
            3306 : drop
        }
    }

    chain ssh_chain {
        ip saddr @admin_ipv4 accept
        log prefix "[NFT-SSH-DENY] " drop
    }
}

NAT وإعادة التوجيه باستخدام nftables

إذا كنت تستخدم الخادم كبوابة (gateway) أو موجه (router)، فهذا التكوين يوفر NAT كاملاً:

table inet nat {
    chain prerouting {
        type nat hook prerouting priority dstnat;

        # إعادة توجيه منفذ خارجي إلى خادم داخلي
        iifname "eth0" tcp dport 8080 dnat to 192.168.1.50:80
    }

    chain postrouting {
        type nat hook postrouting priority srcnat;

        # SNAT للشبكة الداخلية
        oifname "eth0" ip saddr 192.168.1.0/24 masquerade
    }
}

ولا تنسَ تفعيل إعادة توجيه IP في النواة — هذه الخطوة تُنسى كثيراً:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-forward.conf
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.d/99-forward.conf
sudo sysctl -p /etc/sysctl.d/99-forward.conf

الحماية من هجمات DDoS باستخدام عائلة netdev

عائلة netdev تعمل في أقرب نقطة ممكنة لبطاقة الشبكة، مما يوفر أسرع إسقاط ممكن قبل أن تستهلك الحزم موارد النظام. هذه ميزة لم يكن لها مكافئ في iptables:

table netdev raw {
    chain ingress {
        type filter hook ingress device "eth0" priority -500;

        # إسقاط حزم SYN flood السريعة
        tcp flags syn tcp option maxseg size 1-535 drop

        # حماية ضد ICMP flood
        ip protocol icmp limit rate over 100/second drop

        # إسقاط الحزم المشوهة
        ip frag-off & 0x1fff != 0 drop
    }
}

تسجيل الأحداث ومراقبتها

تخرج رسائل التسجيل افتراضياً إلى /var/log/kern.log أو journald. لفصلها في ملف مخصص (مفيد جداً عند التشخيص):

# إنشاء ملف تكوين rsyslog
sudo tee /etc/rsyslog.d/10-nftables.conf <<EOF
:msg, contains, "[NFT-" /var/log/nftables.log
& stop
EOF

sudo systemctl restart rsyslog

# مراقبة مباشرة
sudo tail -f /var/log/nftables.log

# للتحليل المتقدم
sudo journalctl -k --grep "NFT-" --since "1 hour ago"

الترحيل من iptables إلى nftables تلقائياً

إذا كان لديك ملف قواعد iptables ضخم، فلديك حليف: أدوات الترحيل الرسمية:

# تصدير قواعد iptables الحالية
sudo iptables-save > /tmp/iptables-rules.v4
sudo ip6tables-save > /tmp/iptables-rules.v6

# تحويلها إلى صيغة nftables
sudo iptables-restore-translate -f /tmp/iptables-rules.v4 > /tmp/nft-rules.v4
sudo ip6tables-restore-translate -f /tmp/iptables-rules.v6 > /tmp/nft-rules.v6

# مراجعة الناتج يدوياً قبل التطبيق
less /tmp/nft-rules.v4

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

أفضل الممارسات الأمنية لـ nftables في 2026

  1. اعتمد سياسة drop كافتراضية ثم اسمح بما تحتاجه فقط. هذا غير قابل للتفاوض.
  2. استخدم inet family لتغطية IPv4 وIPv6 في قاعدة واحدة، وتجنب الفجوات الأمنية الناتجة عن نسيان IPv6.
  3. طبّق rate limiting على SSH وأي خدمة إدارة لمنع هجمات القوة الغاشمة.
  4. سجّل المحاولات المرفوضة مع تحديد المعدل لتجنب امتلاء القرص (تعلمت هذا بعد امتلاء قرص بحجم 100GB في ليلة واحدة).
  5. اختبر القواعد دائماً باستخدام nft -c -f قبل التحميل.
  6. احتفظ بجلسة SSH ثانية مفتوحة أثناء تعديل القواعد عن بُعد، أو استخدم at لتطبيق rollback تلقائي.
  7. راجع القواعد دورياً باستخدام nft list ruleset -a لتحديد القواعد غير المستخدمة عبر العدادات.
  8. أتمتة النشر عبر Ansible أو SaltStack باستخدام قوالب nftables بدلاً من iptables-modules.

استكشاف الأخطاء وإصلاحها

المشكلة: انقطاع SSH بعد تطبيق القواعد

كابوس كل مسؤول نظام. الحل؟ استخدم آلية rollback تلقائي:

# جدولة استعادة القواعد القديمة بعد 5 دقائق
sudo nft list ruleset > /tmp/rules-backup.nft
echo "nft -f /tmp/rules-backup.nft" | sudo at now + 5 minutes

# الآن طبّق القواعد الجديدة بأمان
sudo nft -f /etc/nftables.conf

# إذا نجح كل شيء، ألغِ المهمة المجدولة
sudo atq
sudo atrm JOB_ID

المشكلة: القواعد لا تستمر بعد إعادة التشغيل

تأكد من تفعيل الخدمة وأن /etc/nftables.conf يحتوي على القواعد الفعلية وليس مجرد قواعد افتراضية:

sudo systemctl status nftables
sudo systemctl is-enabled nftables
cat /etc/nftables.conf

المشكلة: تعارض مع Docker

آه، Docker. يكتب قواعده الخاصة في iptables-nft. للتعايش معه بسلام، تجنب التداخل مع جدول nat الخاص به، أو عطّل إدارة Docker للجدار باستخدام --iptables=false في /etc/docker/daemon.json (مع تحمل مسؤولية التكوين اليدوي بنفسك).

الأسئلة الشائعة (FAQ)

ما الفرق بين nftables وiptables؟

nftables هو الخليفة الرسمي لـ iptables منذ نواة لينكس 3.13. يستخدم آلة افتراضية في النواة بدلاً من تقييم القواعد المتسلسل، ويدعم IPv4 وIPv6 وARP وBridge في إطار موحد. iptables ما يزال مدعوماً عبر طبقة التوافق iptables-nft، لكن التطوير الفعّال توقف ولا تُضاف ميزات جديدة إليه.

هل nftables أسرع من iptables فعلاً؟

نعم، خاصةً عند وجود عدد كبير من القواعد. اختبارات نشرها فريق Netfilter أظهرت تحسناً يصل إلى 30% في إنتاجية الحزم عند استخدام المجموعات والخرائط بدلاً من القواعد الخطية. الفرق يصبح ملحوظاً جداً عند تجاوز 1000 قاعدة.

هل يمكنني تشغيل nftables وiptables معاً؟

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

كيف أحفظ قواعد nftables بشكل دائم؟

على معظم التوزيعات، احفظ القواعد في /etc/nftables.conf وتأكد من تفعيل خدمة nftables.service. على Debian/Ubuntu يمكنك أيضاً استخدام: sudo nft list ruleset > /etc/nftables.conf. على RHEL/Fedora استخدم: sudo systemctl enable --now nftables ثم احفظ القواعد في الملف.

هل nftables يدعم تتبع الاتصالات (connection tracking)؟

نعم، بشكل أصلي وبصيغة أوضح من iptables. استخدم ct state established,related accept للسماح بحركة المرور الراجعة، وct state invalid drop لرفض الحزم المشوهة. يمكنك أيضاً الوصول إلى علامات conntrack وخصائص الجلسة مباشرة في القواعد.

الخلاصة

nftables ليس مجرد بديل لـ iptables، بل إعادة تصميم جذرية لطريقة تعامل لينكس مع تصفية الشبكة. مع المجموعات الديناميكية، والخرائط، والتحديث الذري، وعائلة netdev للأداء الفائق، يوفر nftables أدوات لبناء جدران حماية متطورة كانت تتطلب سابقاً سكربتات معقدة أو خدمات خارجية مثل fail2ban.

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

عن الكاتب Editorial Team

Our team of expert writers and editors.