يوفر مستوى 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