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

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

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

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

  • تمت إضافة دعم لعدادات الحزم وحركة المرور المرتبطة بعناصر المجموعة إلى المجموعات. يتم تمكين العدادات باستخدام الكلمة الأساسية "counter":

    جدول الملكية الفكرية س {
    مجموعة ص {
    نوع الملكية الفكرية الصدر
    مواجهة
    العناصر = {192.168.10.35 ، 192.168.10.101 ، 192.168.10.135}
    }

    سلسلة ض {
    نوع مرشح هوك مرشح الأولوية الإخراج؛ قبول السياسة؛
    إب دادر @y
    }
    }

  • لتعيين القيم الأولية للعدادات، على سبيل المثال، لاستعادة العدادات السابقة بعد إعادة التشغيل، يمكنك استخدام الأمر “nft -f”:

    # مجموعة قواعد القط.nft
    جدول الملكية الفكرية س {
    مجموعة ص {
    نوع الملكية الفكرية الصدر
    مواجهة
    العناصر = { 192.168.10.35 حزم العداد 1 بايت 84، 192.168.10.101 \
    العداد ص 192.168.10.135 حزم العداد 0 بايت 0 }
    }

    سلسلة ض {
    نوع مرشح هوك مرشح الأولوية الإخراج؛ قبول السياسة؛
    إب دادر @y
    }
    }
    # nft -f القواعد.nft
    مجموعة قواعد قائمة #nft
    جدول الملكية الفكرية س {
    مجموعة ص {
    نوع الملكية الفكرية الصدر
    مواجهة
    العناصر = { 192.168.10.35 حزم العداد 1 بايت 84، 192.168.10.101 \
    العداد ص 192.168.10.135 حزم العداد 0 بايت 0 }
    }

    سلسلة ض {
    نوع مرشح هوك مرشح الأولوية الإخراج؛ قبول السياسة؛
    إب دادر @y
    }
    }

  • تمت إضافة الدعم المضاد أيضًا إلى جدول التدفق:

    الجدول ip foo {
    شريط قابل للتدفق {
    أولوية دخول الخطاف -100
    الأجهزة = { eth0, eth1 }
    مواجهة
    }

    سلسلة إلى الأمام {
    اكتب عامل التصفية مرشح الأولوية للأمام ؛
    أضف التدفق @bar counter
    }
    }

    يمكنك عرض قائمة العدادات باستخدام الأمر "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 حزم=9 بايت=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 حزم=8 بايت=428 علامة [OFFLOAD=0 \
    secctx=استخدام فارغ=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    الحزم=1005763 بايت=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    الحزم = 967505 بايت = 50310268 علامة [OFFLOAD] = 0 secctx = استخدام فارغ = 2

  • في مجموعات التسلسل (التسلسل، وحزم معينة من العناوين والمنافذ التي تبسط المقارنة)، من الممكن استخدام التوجيه "typeof"، الذي يحدد نوع بيانات العناصر للأجزاء المكونة لعناصر المجموعة:

    الجدول ip foo {
    ضبط القائمة البيضاء {
    نوع الملكية الفكرية الصدر . tcp dport
    العناصر = { 192.168.10.35 . 80، 192.168.10.101. 80}
    }

    شريط سلسلة {
    نوع مرشح هوك prerouting الأولوية مرشح ؛ انخفاض السياسة
    عنوان IP قبول tcp dport @whitelist
    }
    }

  • ينطبق توجيه typeof الآن أيضًا على عمليات الانضمام في قوائم الخرائط:

    الجدول ip foo {
    عنوان الخريطة
    نوع الملكية الفكرية الصدر . tcp dport: علامة التعريف
    العناصر = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    شريط سلسلة {
    نوع مرشح هوك prerouting الأولوية مرشح ؛ انخفاض السياسة
    تعيين علامة التعريف IP Daddr . قبول خريطة tcp dport @addr2mark
    }
    }

  • تمت إضافة دعم لصلات النطاق في مجموعات مجهولة (غير مسماة):

    # nft إضافة قاعدة مرشح إنت لإدخال IP Daddr . منفذ برنامج التعاون الفني\
    { 10.0.0.0/8 . 10-23، 192.168.1.1-192.168.3.8. 80-443 } قبول

  • يتم توفير القدرة على تجاهل الحزم التي تحمل إشارات 802.1q (VLAN) عند معالجة جسور الشبكة:

    # nft إضافة قاعدة جسر foo bar ether type vlan رفض مع إعادة تعيين TCP

  • تمت إضافة دعم للمطابقة بواسطة معرف جلسة TCP (معرف conntrack). لتحديد معرف conntrack، يمكنك استخدام خيار "--output id":

    # conntrack -L - معرف الإخراج
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 حزمة=2 \
    بايت=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 حزمة=2 بايت=320 \
    [مؤكد] علامة = 0 استخدام = 1 معرف = 2779986232

    # nft إضافة قاعدة foo bar ct معرف 2779986232 عداد

المصدر: opennet.ru

إضافة تعليق