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

انتشار فیلتر بسته nftables 0.9.9 منتشر شده است که رابط های فیلتر بسته را برای IPv4، IPv6، ARP و پل های شبکه یکپارچه می کند (با هدف جایگزینی iptables، ip6table، arptables و ebtables). در همان زمان، انتشار کتابخانه همراه libnftnl 1.2.0 منتشر شد که یک API سطح پایین برای تعامل با زیرسیستم nf_tables ارائه کرد. تغییرات مورد نیاز برای اجرای nftables 0.9.9 در هسته لینوکس 5.13-rc1 گنجانده شده است.

بسته nftables شامل اجزای فیلتر بسته است که در فضای کاربر اجرا می شود، در حالی که کار در سطح هسته توسط زیرسیستم nf_tables ارائه می شود که از زمان انتشار 3.13 بخشی از هسته لینوکس بوده است. سطح هسته تنها یک رابط عمومی مستقل از پروتکل ارائه می دهد که عملکردهای اساسی را برای استخراج داده ها از بسته ها، انجام عملیات داده و کنترل جریان ارائه می دهد.

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

نوآوری های اصلی:

  • توانایی انتقال پردازش جدول جریان به سمت آداپتور شبکه، با استفاده از پرچم "offload" فعال شده است. Flowtable مکانیزمی برای بهینه‌سازی مسیر تغییر مسیر بسته‌ها است که در آن عبور کامل تمام زنجیره‌های پردازش قانون فقط به اولین بسته اعمال می‌شود و همه بسته‌های دیگر در جریان مستقیماً ارسال می‌شوند. جدول ip global { flowtable f { hook ingress priority filter + 1 device = { lan3, lan0, wan } flags offload } chain forward { type filter hook front priority filter; پذیرش سیاست ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; پذیرش سیاست بالماسکه oifname "wan" } }
  • پشتیبانی اضافه شده برای اتصال پرچم مالک به جدول برای اطمینان از استفاده انحصاری از جدول توسط یک فرآیند. هنگامی که یک فرآیند خاتمه می یابد، جدول مربوط به آن به طور خودکار حذف می شود. اطلاعات مربوط به فرآیند در dump قوانین به شکل یک نظر نمایش داده می شود: جدول ip x { # progname nft flags مالک زنجیره y { type filter hook input priority filter; پذیرش سیاست بسته های شمارنده 1 بایت 309 } }
  • پشتیبانی اضافه شده برای مشخصات IEEE 802.1ad (VLAN stacking یا QinQ)، که وسیله ای را برای جایگزینی چندین تگ VLAN در یک فریم اترنت تعریف می کند. به عنوان مثال برای بررسی نوع فریم اترنت خارجی 8021ad و vlan id=342، می توانید از ساخت ... ether type 802.1ad vlan id 342 برای بررسی نوع خارجی فریم اترنت 8021ad/vlan id=1، nested 802.1 استفاده کنید. q/vlan id=2 و کپسوله سازی بسته IP بیشتر: ... نوع اتر 8021ad vlan id 1 vlan نوع 8021q vlan id 2 vlan نوع ip counter
  • پشتیبانی برای مدیریت منابع با استفاده از سلسله مراتب یکپارچه cgroups v2 اضافه شده است. تفاوت اصلی بین cgroups v2 و v1 استفاده از یک سلسله مراتب مشترک cgroups برای همه انواع منابع، به جای سلسله مراتب جداگانه برای تخصیص منابع CPU، برای تنظیم مصرف حافظه و برای I/O است. به عنوان مثال، برای بررسی اینکه آیا اجداد یک سوکت در سطح اول cgroupv2 با ماسک "system.slice" مطابقت دارد یا خیر، می توانید از ساختار زیر استفاده کنید: ... سوکت cgroupv2 سطح 1 "system.slice"
  • قابلیت بررسی اجزای بسته های SCTP اضافه شده است (عملکرد مورد نیاز برای این کار در هسته لینوکس 5.14 ظاهر می شود). به عنوان مثال، برای بررسی اینکه آیا یک بسته حاوی یک قطعه با نوع 'data' و فیلد 'type' است: ... sctp chunk data وجود دارد ... sctp chunk type data 0
  • اجرای عملیات بارگذاری قانون تقریباً دو برابر با استفاده از پرچم "-f" تسریع شده است. خروجی لیست قوانین نیز تسریع شده است.
  • یک فرم فشرده برای بررسی اینکه آیا بیت های پرچم تنظیم شده اند ارائه شده است. به عنوان مثال، برای بررسی اینکه بیت های وضعیت snat و dnat تنظیم نشده اند، می توانید تعیین کنید: ... ct status ! snat,dnat برای بررسی اینکه بیت syn در bitmask syn,ack: ... tcp flags syn / syn,ack برای بررسی اینکه بیت‌های fin و rst در bitmask syn,ack,fin,rst تنظیم نشده‌اند: ... پرچم های tcp ! = fin,rst / syn,ack,fin,rst
  • اجازه دادن به کلمه کلیدی "حکم" در تعاریف نوع مجموعه/نقشه: نقشه xm را اضافه کنید { typeof iifname . پروتکل ip dport : حکم ;}

منبع: opennet.ru

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