nftables paket filtri 0.9.9 versiyasi

IPv0.9.9, IPv4, ARP va tarmoq ko'priklari (iptables, ip6table, arptables va ebtables o'rnini bosishga qaratilgan) uchun paketli filtrlash interfeyslarini birlashtiruvchi nftables 6 paket filtrining chiqarilishi chop etildi. Shu bilan birga, nf_tables quyi tizimi bilan o'zaro ishlash uchun past darajadagi APIni ta'minlovchi libnftnl 1.2.0 qo'shimcha kutubxonasining chiqarilishi nashr etildi. Nftables 0.9.9 versiyasi ishlashi uchun zarur bo'lgan o'zgarishlar Linux yadrosi 5.13-rc1 tarkibiga kiritilgan.

nftables to'plami foydalanuvchi bo'shlig'i paket filtri komponentlarini o'z ichiga oladi, yadro darajasidagi ish esa 3.13 versiyasidan beri Linux yadrosining bir qismi bo'lgan nf_tables quyi tizimi tomonidan ta'minlanadi. Yadro darajasi paketlardan ma'lumotlarni olish, ma'lumotlar operatsiyalarini bajarish va oqimlarni boshqarish uchun asosiy funktsiyalarni ta'minlaydigan faqat umumiy protokoldan mustaqil interfeysni ta'minlaydi.

Filtrlash qoidalari va protokolga xos ishlov beruvchilar foydalanuvchi maydonida bayt-kodga kompilyatsiya qilinadi, shundan so'ng bu bayt kod Netlink interfeysi yordamida yadroga yuklanadi va yadroda BPF (Berkeley Packet Filters) ni eslatuvchi maxsus virtual mashinada bajariladi. Ushbu yondashuv yadro darajasida ishlaydigan filtrlash kodining hajmini sezilarli darajada kamaytirish va protokollar bilan ishlash uchun tahlil qilish qoidalari va mantiqining barcha funktsiyalarini foydalanuvchi maydoniga ko'chirish imkonini beradi.

Asosiy innovatsiyalar:

  • Oqim jadvalini qayta ishlashni tarmoq adapteri tomoniga o'tkazish imkoniyati amalga oshirildi, "offload" bayrog'i yordamida yoqilgan. Flowtable - paketlarni qayta yo'naltirish yo'lini optimallashtirish mexanizmi bo'lib, unda barcha qoidalarni qayta ishlash zanjirlarining to'liq o'tishi faqat birinchi paketga qo'llaniladi va oqimdagi barcha boshqa paketlar to'g'ridan-to'g'ri yo'naltiriladi. jadval ip global { flowtable f { ilgakka kirish ustuvor filtri + 1 qurilmalar = { lan3, lan0, wan } bayroqlarni tushirish } zanjir oldinga { turi filtri kanca oldinga ustuvorlik filtri; siyosatni qabul qilish; ip protocol { tcp, udp } flow add @f } zanjir post { type nat hook postrouting priority filter; siyosatni qabul qilish; oifname "wan" maskarad }}
  • Jarayon tomonidan jadvaldan eksklyuziv foydalanishni ta'minlash uchun stolga egasi bayrog'ini qo'shish uchun qo'shimcha yordam. Jarayon tugagach, u bilan bog'langan jadval avtomatik ravishda o'chiriladi. Jarayon haqidagi ma'lumotlar sharh ko'rinishidagi dump qoidalarida ko'rsatiladi: jadval ip x { # progname nft flags owner chain y { type filter hook kiritish ustuvor filtri; siyosatni qabul qilish; hisoblagich paketlari 1 bayt 309 } }
  • IEEE 802.1ad spetsifikatsiyasi (VLAN stacking yoki QinQ) uchun qo'shimcha qo'llab-quvvatlash, bu bir nechta VLAN teglarini bitta chekilgan ramkaga almashtirish vositalarini belgilaydi. Masalan, tashqi chekilgan 8021ad freym va vlan id=342 turini tekshirish uchun siz konstruksiyadan foydalanishingiz mumkin 802.1ad vlan id 342 Ethernet freymining tashqi turini tekshirish uchun 8021 ichki oʻrnatilgan 1ad/vlan id=802.1. q/vlan id=2 va keyingi IP-paket inkapsulyatsiyasi: ... efir turi 8021ad vlan identifikatori 1 vlan turi 8021q vlan id 2 vlan turi ip hisoblagichi
  • Yagona ierarxik guruhlardan foydalangan holda resurslarni boshqarish uchun qo'shimcha yordam v2. v2 va v1 guruhlari o'rtasidagi asosiy farq protsessor resurslarini taqsimlash, xotira sarfini tartibga solish va kiritish-chiqarish uchun alohida ierarxiyalar o'rniga barcha turdagi resurslar uchun umumiy guruhlar ierarxiyasidan foydalanishdir. Masalan, cgroupv2 birinchi darajasidagi rozetkaning ajdodi “system.slice” niqobiga mos kelishini tekshirish uchun quyidagi konstruktsiyadan foydalanishingiz mumkin: ... socket cgroupv2 1-darajali “system.slice”
  • SCTP paketlarining komponentlarini tekshirish imkoniyati qoʻshildi (buning uchun zarur boʻlgan funksiya Linux yadrosi 5.14 da paydo boʻladi). Masalan, paketda "ma'lumotlar" turi va "turi" maydoni bo'lgan bo'lak bor yoki yo'qligini tekshirish uchun: ... sctp chunk ma'lumotlari mavjud ... sctp chunk ma'lumotlar turi 0
  • Qoidalarni yuklash operatsiyasi “-f” bayrog'i yordamida taxminan ikki marta tezlashdi. Qoidalar ro'yxatini chiqarish ham tezlashdi.
  • Bayroq bitlari o'rnatilganligini tekshirish uchun ixcham shakl taqdim etilgan. Masalan, snat va dnat status bitlari o'rnatilmaganligini tekshirish uchun quyidagilarni belgilashingiz mumkin: ... ct status ! snat,dnat sin biti bit maskasida o'rnatilganligini tekshirish uchun syn,ack: ... tcp flags syn / syn,ack fin va birinchi bitlar bitmaskda o'rnatilmaganligini tekshirish uchun syn,ack,fin,rst: ... tcp bayroqlari ! = fin,rst / syn,ack,fin,rst
  • "Hukm" kalit so'zidan to'plam/xarita turi ta'riflarida foydalanishga ruxsat bering: map xm { typeof iifname ni qo'shing. ip protokoli th port: hukm;}

Manba: opennet.ru

a Izoh qo'shish