انتشار فیلتر بسته nftables 1.1.6 منتشر شده است که رابط های فیلتر بسته را برای IPv4، IPv6، ARP و پل های شبکه یکپارچه می کند (با هدف جایگزینی iptables، ip6table، arptables و ebtables). در همان زمان، انتشار کتابخانه همراه libnftnl 1.3.1 منتشر شد که یک API سطح پایین برای تعامل با زیرسیستم nf_tables ارائه کرد.
بسته nftables شامل اجزای فیلتر بسته است که در فضای کاربر عمل میکنند، در حالی که کار در سطح هسته توسط زیرسیستم nf_tables که بخشی از هسته است، ارائه میشود. Linux از زمان انتشار نسخه ۳.۱۳، تنها یک رابط عمومی مستقل از پروتکل در سطح هسته ارائه شده است که قابلیتهای اولیه برای استخراج دادهها از بستهها، انجام عملیات داده و کنترل جریان را فراهم میکند.
خودِ قوانین فیلترینگ و کنترلکنندههای مختص پروتکل در فضای کاربر به بایتکد کامپایل میشوند، پس از آن این بایتکد با استفاده از رابط Netlink در هسته بارگذاری شده و در هسته به صورت خاصی اجرا میشود. ماشین مجازییادآور BPF (فیلترهای بسته برکلی). این رویکرد امکان کاهش قابل توجه اندازه کد فیلترینگ در حال اجرا در سطح هسته را فراهم میکند و تمام تجزیه و تحلیل قوانین و منطق پروتکل را به فضای کاربر منتقل میکند.
تغییرات اصلی:
- پشتیبانی کامل از قالبهای تونل سبک مانند vxlan، geneve و erspan: table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; نام تونل ip saddr map { 10.141.10.12 : "t1", 10.141.10.13 : "t2" } fwd to erspan1 } } قبل از بارگذاری قوانین، باید رابط شبکه erspan1 را ایجاد کنید: ip link add dev erspan1 type erspan external
- پشتیبانی از ماسکها در نامهای رابط شبکه در کنترلکنندههای netdev اضافه شد. برای مثال، برای اضافه کردن یک زنجیره پایه به فیلتر ترافیک ورودی برای همه دستگاههای vlan، میتوانید مشخص کنید: table netdev t { chain c { type filter hook ingress devices = { "vlan*", "veth0" } priority filter; policy accept; } }
- در سیستمهایی با هسته Linux 6.18+ реализована поддержка передачи L2-кадров в интерфейс сетевых мостов для локальной обработки, например, для направления в IP-стек всех Ethernet-кадров для MAC-адреса de:ad:00:00:be:ef можно указать: table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
- یک زیرساخت جدید برای تست فازینگ با استفاده از زنجیره ابزار afl++ (American fuzzy lop++) اضافه شده است که در زمان ساخت از طریق "./configure --with-fuzzer" فعال میشود.
منبع: opennet.ru
