انتشار فیلتر بسته nftables 1.0.6

انتشار فیلتر بسته nftables 1.0.6 منتشر شده است که رابط های فیلتر بسته را برای IPv4، IPv6، ARP و پل های شبکه یکپارچه می کند (با هدف جایگزینی iptables، ip6table، arptables و ebtables). بسته nftables شامل اجزای فیلتر بسته است که در فضای کاربر اجرا می شود، در حالی که کار در سطح هسته توسط زیرسیستم nf_tables ارائه می شود که از زمان انتشار 3.13 بخشی از هسته لینوکس بوده است. سطح هسته تنها یک رابط عمومی مستقل از پروتکل را فراهم می کند که عملکردهای اساسی را برای استخراج داده ها از بسته ها، انجام عملیات داده و کنترل جریان ارائه می دهد.

قوانین فیلتر و کنترل کننده های خاص پروتکل در بایت کد در فضای کاربر کامپایل می شوند، پس از آن این بایت کد با استفاده از رابط Netlink در هسته بارگذاری می شود و در هسته در یک ماشین مجازی ویژه که یادآور BPF (فیلترهای بسته برکلی) است، اجرا می شود. این رویکرد به شما این امکان را می دهد که اندازه کدهای فیلترینگ در حال اجرا در سطح هسته را به میزان قابل توجهی کاهش دهید و تمام عملکردهای تجزیه قوانین و منطق کار با پروتکل ها را به فضای کاربر منتقل کنید.

تغییرات اصلی:

  • بهینه‌ساز قواعد که با مشخص شدن گزینه «-o/—optimize» فراخوانی می‌شود، دارای بسته‌بندی خودکار قوانین با ترکیب آنها و تبدیل آنها به فهرست‌های نقشه و مجموعه است. برای مثال، قوانین # cat ruleset.nft جدول ip x { chain y { type filter hook input priority filter; کاهش سیاست؛ متا iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 قبول متا iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 قبول متا iifname eth1 ip saddr 1.1.1.2. ip sadr 2.2.3.0 .24 ip daddr 1-1.1.1.2 accept meta iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 2 accept } } پس از اجرای "nft -o -c -f ruleset.nft" به قوانین زیر تبدیل می شود: nft:1.1.1.3:2.2.2.5-4: meta iifname eth17 ip saddr 74 ip daddr 1 accept ruleset.nft:1.1.1.1:2.2.2.3-5: meta iifname eth17 ip saddr 74 ip daddr.1 قوانین را قبول کنید. : 1.1.1.2:2.2.2.4-6: meta iifname eth17 ip saddr 77 ip daddr 1/1.1.1.2 accept ruleset.nft:2.2.3.0:24-7: meta iifname eth17 ip saddr 83 ip daddr 1/1.1.1.2 قبول قوانین set.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2. قبول ruleset.nft:1.1.1.3:2.2.2.5-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 1 قبول به: iifname . ip sadr. ip daddr { eth1.1.1.2 . 2.2.2.4. 1، eth1.1.1.2. 2.2.3.0. 24، eth1. 1.1.1.2. 2.2.4.0/2.2.4.10، eth2. 1.1.1.3. 2.2.2.5-XNUMX، ethXNUMX. XNUMX. XNUMX } قبول کنید
  • بهینه‌ساز همچنین می‌تواند قوانینی را که قبلاً از لیست‌های مجموعه ساده استفاده می‌کنند، به شکل فشرده‌تری تبدیل کند، برای مثال قوانین: # cat ruleset.nft جدول 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 daddr 10.0.0.149ud123p32768 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 6-22 -execut -execut -149 پس از آن بسته می شود. را دنبال می کند : ruleset.nft:0:31-6: iifname "enp209.115.181.102s216.197.228.230f10.0.0.149" ip saddr { 123, 32768 } ip daddr 65535 udp7 udp sport 22ftn 143 0:31-6: iifname "enp64.59.144.17s64.59.150.133f10.0.0.149" ip saddr { 53, 32768 } ip daddr 65535 udp sport 0 udp dport 31-6 قبول در: iif. ip sadr. آی پی بابا ورزش udp udp dport { enp209.115.181.102s10.0.0.149f123 . 32768. 65535. 0. 31-6، enp216.197.228.230s10.0.0.149f123. 32768. 65535. 0. 31-6، enp64.59.144.17s10.0.0.149f53. 32768. 65535. 0. 31-6، enp64.59.150.133s10.0.0.149f53. 32768. 65535. XNUMX. XNUMX-XNUMX } قبول کنید
  • حل مشکل تولید بایت کد برای ادغام فواصل که از انواع با ترتیب بایت های مختلف استفاده می کنند، مانند IPv4 (ترتیب بایت شبکه) و علامت متا (ترتیب بایت سیستم). جدول ip x { map w { typeof ip saddr . متا مارک : حکم پرچم عناصر شمارنده فاصله = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122: قبول، 192.168.0.10-192.168.1.20. 0x0000aa00-0x0000aaff : قبول، } } chain k { type filter hook input priority filter; کاهش سیاست؛ ip sadr. متا مارک vmap @w } }
  • مقایسه بهبود یافته پروتکل های کمیاب هنگام استفاده از عبارات خام، به عنوان مثال: meta l4proto 91 @th,400,16 0x0 accept
  • مشکلات مربوط به فعال کردن قوانین در فواصل زمانی حل شده است: درج قانون xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API بهبود یافته است تا شامل پشتیبانی از عبارات در لیست های مجموعه و نقشه باشد.
  • برنامه های افزودنی کتابخانه پایتون nftables اجازه بارگیری مجموعه قوانین را برای پردازش در حالت اعتبارسنجی ("-c") و اضافه کردن پشتیبانی برای تعریف خارجی متغیرها را می دهد.
  • افزودن نظرات در عناصر فهرست مجموعه مجاز است.
  • محدودیت نرخ بایت اجازه تعیین مقدار صفر را می دهد.

منبع: opennet.ru

اضافه کردن نظر