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

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

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

التغييرات الرئيسية:

  • بالنسبة لأنظمة Linux 6.2+ ، تمت إضافة دعم لمطابقة بروتوكول vxlan و geneve و gre و gretap ، مما يسمح للتعبيرات البسيطة بفحص الرؤوس في الحزم المغلفة. على سبيل المثال ، للتحقق من عنوان IP في رأس حزمة متداخلة من VxLAN ، يمكنك الآن استخدام القواعد (دون الحاجة إلى إلغاء تغليف رأس VxLAN أولاً وربط المرشح بواجهة vxlan0): ... udp dport 4789 بروتوكول vxlan ip udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24 / 4789 ... udp dport 1.2.3.4 vxlan ip saddr. vxlan ip daddr {4.3.2.1. XNUMX}
  • تم تنفيذ الدعم للدمج التلقائي للمخلفات بعد الحذف الجزئي لعنصر قائمة المجموعة ، والذي يسمح بحذف عنصر أو جزء من نطاق من نطاق موجود (سابقًا ، كان النطاق يمكن حذفه بالكامل فقط). على سبيل المثال ، بعد إزالة العنصر 25 من قائمة مجموعة ذات نطاقات 24-30 و40-50 ، ستبقى 24 و 26-30 و40-50 في القائمة. سيتم تقديم الإصلاحات اللازمة لعمل الدمج التلقائي في الإصدارات التصحيحية للفروع الثابتة 5.10+ للنواة. # nft list ruleset table ip x {set y {typeof tcp dport flags الفاصل auto-merge element = {24-30، 40-50}}} # nft delete element ip xy {25} # nft list ruleset table ip x {set y {typeof tcp dport flags الفاصل الزمني لعناصر الدمج التلقائي = {24، 26-30، 40-50}}}
  • السماح باستخدام جهات الاتصال والنطاقات في تعيين ترجمة العنوان (NAT). الجدول ip nat {chain prerouting {type nat hook prerouting priority dstnat؛ قبول السياسة ؛ dnat إلى ip daddr. خريطة dport tcp {10.1.1.136. 80: 1.1.2.69. 1024 ، 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049} مستمر}}
  • تمت إضافة دعم للتعبير "الأخير" ، والذي يسمح لك بمعرفة الوقت الذي تم فيه استخدام عنصر القاعدة أو عنصر قائمة المجموعة آخر مرة. تم دعم هذه الميزة منذ Linux kernel 5.14. الجدول ip x {set y {typeof ip daddr. tcp dport size 65535 أعلام ديناميكية ، timeout last time 1h} chain z {type filter hook output filter ذي الأولوية ؛ قبول السياسة ؛ تحديثy {ip daddr. tcp dport}}} # nft list set ip xy table ip x {set y {typeof ip daddr. tcp dport size 65535 أعلام ديناميكية ، المهلة الأخيرة 1 ساعة = {172.217.17.14. آخر استخدام لـ 443 مللي ثانية 1 ثانية 591 مللي ثانية تنتهي مهلة ساعة واحدة 1 دقيقة 59 ثانية 58 مللي ثانية ، 409. 172.67.69.19 آخر استخدام 443s4ms المهلة 636 ساعة تنتهي 1m59s55ms ، 364. 142.250.201.72 آخر استخدام 443s4ms المهلة 748 ساعة تنتهي 1m59s55ms ، 252. 172.67.70.134 آخر استخدام 443s4ms المهلة 688 ساعة تنتهي 1m59s55ms ، 312. آخر استخدام لـ 35.241.9.150: 443s5ms مهلة 204 ساعة تنتهي 1m59s54ms، 796. 138.201.122.174 آخر استخدام 443s4ms مهلة 537 ساعة تنتهي 1 دقيقة 59 ثانية 55 مللي ثانية ، 463. تم استخدام 34.160.144.191 آخر مرة 443 ثوانٍ و 5 ملي ثانية تنتهي مهلة ساعة واحدة و 205 دقيقة 1 ثانية و 59 ثانية و 54. 795 آخر استخدام 130.211.23.194s443ms المهلة 4 ساعة تنتهي 436m1s59ms}}}
  • تمت إضافة القدرة على تحديد الحصص في قوائم المجموعة. على سبيل المثال ، لتحديد حصة مرور لكل عنوان IP مستهدف ، يمكنك تحديد: جدول netdev x {set y {typeof ip daddr size 65535 quota over 10000 mbytes} chain y {type filter hook egress device "eth0" filter؛ قبول السياسة ؛ ip daddry drop}} # nft add element inet xy {8.8.8.8} # ping -c 2 8.8.8.8 # nft list list table netdev x {set y {type ipv4_addr size 65535 quota over 10000 mbytes element = {8.8.8.8. 10000 حصة تزيد عن 196 ميجابايت مستخدمة 0 بايت}} سلسلة y {نوع مرشح خطاف خروج جهاز "ethXNUMX" مرشح الأولوية ؛ قبول السياسة ؛ ip daddry drop}}
  • يسمح باستخدام الثوابت في قوائم الضبط. على سبيل المثال ، عند استخدام قائمة عنوان الوجهة ومعرف VLAN كمفتاح ، يمكنك تحديد رقم VLAN مباشرةً (daddr. 123): جدول netdev t {set s {typeof ether saddr. حجم معرف vlan 2048 أعلام ديناميكية ، مهلة المهلة 1 متر} سلسلة ج {نوع مرشح ربط جهاز إدخال eth0 أولوية 0 ؛ قبول السياسة ؛ نوع الأثير! = 8021q updates {ether daddr. 123} عداد}}
  • تمت إضافة أمر "إتلاف" جديد لحذف الكائنات دون قيد أو شرط (على عكس أمر الحذف ، فإنه لا يُنشئ EnOENT عند محاولة حذف كائن مفقود). يتطلب على الأقل Linux 6.3-rc kernel للعمل. تدمير مرشح ip الجدول

المصدر: opennet.ru

إضافة تعليق