فیلتر بسته nftables 0.9.9 منتشر شده است. این فیلتر، رابطهای فیلتر بسته را برای IPv4، IPv6، ARP و پلهای شبکه (که به عنوان جایگزینی برای iptables، ip6table، arptables و ebtables هدف قرار گرفتهاند) یکپارچه میکند. کتابخانه libnftnl 1.2.0 همراه آن، که یک API سطح پایین برای تعامل با زیرسیستم nf_tables ارائه میدهد، به طور همزمان منتشر شده است. تغییرات مورد نیاز برای nftables 0.9.9 در هسته گنجانده شده است. Linux ۵.۱۶-rc۱.
بسته nftables شامل اجزای فیلتر بسته است که در فضای کاربر عمل میکنند، در حالی که کار در سطح هسته توسط زیرسیستم nf_tables که بخشی از هسته است، ارائه میشود. Linux از زمان انتشار نسخه ۳.۱۳، تنها یک رابط عمومی مستقل از پروتکل در سطح هسته ارائه شده است که قابلیتهای اولیه برای استخراج دادهها از بستهها، انجام عملیات داده و کنترل جریان را فراهم میکند.
خودِ قوانین فیلترینگ و کنترلکنندههای مختص پروتکل در فضای کاربر به بایتکد کامپایل میشوند، پس از آن این بایتکد با استفاده از رابط 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 اضافه شد (قابلیتهای مورد نیاز برای عملیات در هسته ظاهر میشوند) Linux ۵.۱۴). برای مثال، برای بررسی اینکه آیا یک بسته حاوی تکهای با نوع «داده» و فیلد «نوع» است: … تکه داده sctp وجود دارد … تکه داده sctp نوع ۰
- اجرای عملیات بارگذاری قانون تقریباً دو برابر با استفاده از پرچم "-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
