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

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

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

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

  • مُحسِّن القواعد، الذي يتم استدعاؤه عند تحديد الخيار "-o/—optimize"، يحتوي على تعبئة تلقائية للقواعد من خلال دمجها وتحويلها إلى خريطة وتعيين القوائم. على سبيل المثال، القواعد # cat Ruleset.nft table ip x { chain y { type filter Hook input Priority filter; إسقاط السياسة؛ Meta iifname eth1 ip Saddr 1.1.1.1 ip Daddr 2.2.2.3 قبول Meta iifname eth1 ip Saddr 1.1.1.2 ip Daddr 2.2.2.4 قبول Meta iifname eth1 ip Saddr 1.1.1.2 ip Daddr 2.2.3.0/24 قبول Meta iifname eth1 ip Saddr 1.1.1.2 .2.2.4.0 ip Daddr 2.2.4.10-2 قبول meta iifname eth1.1.1.3 ip Saddr 2.2.2.5 ip Daddr 4 قبول } } بعد تنفيذ "nft -o -c -f Ruleset.nft" سيتم تحويله إلى ما يلي: مجموعة القواعد . nft:17:74-1: meta iifname eth1.1.1.1 ip Saddr 2.2.2.3 ip Daddr 5 قبول القواعد.nft:17:74-1: meta iifname eth1.1.1.2 ip Saddr 2.2.2.4 ip Daddr 6 قبول القواعد.nft : 17:77-1: Meta iifname eth1.1.1.2 ip Saddr 2.2.3.0 ip Daddr 24/7 قبول القواعد.nft:17:83-1: meta iifname eth1.1.1.2 ip Saddr 2.2.4.0 ip Daddr 2.2.4.10-8 قبول القواعد.nft:17:74-2: meta iifname eth1.1.1.3 ip Saddr 2.2.2.5 ip Daddr 1 قبول في: iifname . ايب صدر. إب دادر { eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1, eth1.1.1.2 . 2.2.3.0. 24/1, eth1.1.1.2 . 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } قبول
  • يمكن للمُحسِّن أيضًا تحويل القواعد التي تستخدم بالفعل قوائم مجموعات بسيطة إلى نموذج أكثر إحكاما، على سبيل المثال القواعد: # cat Ruleset.nft table ip filter { chain input { type filter Hook input Priority filter; إسقاط السياسة؛ iifname "lo" قبول حالة ct المنشأة، قبول التعليق "في حركة المرور، نحن ننشئ، نحن نثق" iifname "enp0s31f6" ip Saddr { 209.115.181.102، 216.197.228.230 } ip adddr 10.0.0.149 udp sport 123 udp dport 32768-65535 قبول iifname "enp0s31f6" ip Saddr { 64.59.144.17, 64.59.150.133 } ip Daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 Accept } } بعد تنفيذ "nft -o -c -f Ruleset.nft" سيتم تعبئته على النحو التالي : Ruleset.nft:6:22-149: iifname "enp0s31f6" ip Saddr { 209.115.181.102, 216.197.228.230 } ip Daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 قبول القواعد.nft:7:22 - 143: iifname "enp0s31f6" ip Saddr { 64.59.144.17, 64.59.150.133 } ip Daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 قبول في: iifname . ايب صدر. عنوان IP رياضة. UDP dport { enp0s31f6 . 209.115.181.102. 10.0.0.149. 123. 32768-65535، enp0s31f6. 216.197.228.230. 10.0.0.149. 123. 32768-65535، enp0s31f6. 64.59.144.17. 10.0.0.149. 53. 32768-65535، enp0s31f6. 64.59.150.133. 10.0.0.149. 53. 32768-65535 } قبول
  • تم حل مشكلة إنشاء رمز البايت لدمج الفواصل الزمنية التي تستخدم أنواعًا ذات ترتيب بايت مختلف، مثل IPv4 (ترتيب بايت الشبكة) وعلامة التعريف (ترتيب بايت النظام). جدول ip x {خريطة w {نوع ip Saddr. علامة التعريف: أعلام الحكم عناصر العداد الفاصلة = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : قبول، 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : قبول، } } chain k { نوع عامل التصفية، مرشح أولوية إدخال الخطاف؛ إسقاط السياسة؛ ايب صدر. علامة التعريف vmap @w } }
  • تحسين المقارنة بين البروتوكولات النادرة عند استخدام التعبيرات الأولية، على سبيل المثال: meta l4proto 91 @th,400,16 0x0 Accept
  • تم حل المشكلات المتعلقة بتمكين القواعد على فترات زمنية: أدخل القاعدة xy tcp sport { 3478-3497, 16384-16387 } قبول العداد
  • تم تحسين JSON API لتشمل دعم التعبيرات في قوائم المجموعة والخريطة.
  • تسمح الامتدادات لمكتبة nftables python بتحميل مجموعات القواعد للمعالجة في وضع التحقق ("-c") وإضافة دعم للتعريف الخارجي للمتغيرات.
  • يُسمح بإضافة التعليقات في مجموعة عناصر القائمة.
  • يسمح حد معدل البايت بتحديد قيمة صفر.

المصدر: opennet.ru

إضافة تعليق