nftables حزمة مرشح 0.9.3 الإصدار

نشرت الافراج عن مرشح الحزمة نفتابل 0.9.3، تم تطويره كبديل لـ iptables وip6table وarptables وebtables من خلال توحيد واجهات تصفية الحزم لـ IPv4 وIPv6 وARP وجسور الشبكة. تتضمن حزمة nftables مكونات مرشح حزمة مساحة المستخدم، بينما يتم توفير العمل على مستوى kernel بواسطة النظام الفرعي nf_tables، والذي كان جزءًا من Linux kernel منذ الإصدار 3.13. تم تضمين التغييرات المطلوبة لتشغيل إصدار nftables 0.9.3 في فرع Linux 5.5 kernel القادم.

يوفر مستوى kernel فقط واجهة عامة مستقلة عن البروتوكول توفر وظائف أساسية لاستخراج البيانات من الحزم وتنفيذ عمليات البيانات والتحكم في التدفق. يتم تجميع منطق التصفية نفسه والمعالجات الخاصة بالبروتوكول في كود بايت في مساحة المستخدم، وبعد ذلك يتم تحميل هذا الكود الثانوي في النواة باستخدام واجهة Netlink وتنفيذه في جهاز ظاهري خاص يذكرنا بـ BPF (مرشحات حزم بيركلي). يتيح لك هذا الأسلوب تقليل حجم كود التصفية الذي يعمل على مستوى kernel بشكل كبير ونقل جميع وظائف قواعد التحليل والمنطق للعمل مع البروتوكولات إلى مساحة المستخدم.

الابتكارات الرئيسية:

  • دعم مطابقة الحزم حسب الوقت. يمكنك تحديد النطاقين الزمني والتاريخي الذي سيتم فيه تشغيل القاعدة، ويمكنك تكوين التشغيل في أيام فردية من الأسبوع. تمت أيضًا إضافة خيار جديد "-T" لعرض الوقت التاريخي بالثواني.

    الوقت التعريفي \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    الساعة التعريفية \"17:00\" - \"19:00\"
    اليوم التعريفي \"الجمعة\"

  • دعم استعادة علامات SELinux وحفظها (secmark).

    ct secmark تعيين علامة التعريف
    مجموعة meta secmark ct secmark

  • دعم قوائم خريطة Synproxy، مما يسمح لك بتحديد أكثر من قاعدة واحدة لكل واجهة خلفية.

    الجدول ip foo {
    سينبروكسي https-synproxy {
    مللي 1460
    مقياس 7
    الطابع الزمني كيس بيرم
    }

    Synproxy أخرى Synproxy {
    مللي 1460
    مقياس 5
    }

    سلسلة قبل {
    اكتب ربط مرشح الأولوية الأولية؛ قبول السياسة؛
    TCP dport 8888 أعلام TCP Syn Notrack
    }

    شريط سلسلة {
    اكتب عامل التصفية مرشح الأولوية للأمام ؛ قبول السياسة؛
    حالة ct غير صالحة، اسم Synproxy غير متعقب IP Saddr Map { 192.168.1.0/24 : "https-synproxy"، 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • القدرة على إزالة عناصر المجموعة ديناميكيًا من قواعد معالجة الحزم.

    nft إضافة قاعدة ... حذف @set5 { ip6 Saddr . IP6 أبي}

  • دعم تعيين VLAN بواسطة المعرف والبروتوكول المحدد في البيانات التعريفية لواجهة جسر الشبكة؛

    ميتا إيبرفيد 100
    ميتا ibrvproto شبكة محلية ظاهرية

  • الخيار "-t" ("--terse") لاستبعاد عناصر مجموعات المجموعة عند عرض القواعد. سيؤدي تشغيل "مجموعة قواعد قائمة nft -t" إلى إخراج:

    جدول الملكية الفكرية س {
    مجموعة ص {
    اكتب ipv4_addr
    }
    }

    ومع "مجموعة قواعد قائمة nft"

    جدول الملكية الفكرية س {
    مجموعة ص {
    اكتب ipv4_addr
    العناصر = { 192.168.10.2، 192.168.20.1،
    192.168.4.4, 192.168.2.34 }
    }
    }

  • القدرة على تحديد أكثر من جهاز في سلاسل netdev (يعمل فقط مع kernel 5.5) للجمع بين قواعد التصفية الشائعة.

    إضافة جدول netdev x
    إضافة سلسلة netdev xy {\
    اكتب أجهزة دخول خطاف المرشح = { eth0, eth1 } الأولوية 0;
    }

  • القدرة على إضافة أوصاف لأنواع البيانات.

    #nft وصف ipv4_addr
    نوع البيانات ipv4_addr (عنوان IPv4) (عدد صحيح للنوع الأساسي)، 32 بت

  • القدرة على بناء واجهة CLI باستخدام مكتبة linenoise بدلاً من libreadline.

    ./configure --with-cli=linenoise

المصدر: opennet.ru

إضافة تعليق