nftables paketų filtro išleidimas 0.9.9

Paskelbtas paketų filtro nftables 0.9.9 leidimas, sujungiantis IPv4, IPv6, ARP ir tinklo tiltų paketų filtravimo sąsajas (skirtas pakeisti iptables, ip6table, arptables ir ebtables). Tuo pačiu metu buvo paskelbtas papildomos bibliotekos libnftnl 1.2.0 leidimas, suteikiantis žemo lygio API sąveikai su nf_tables posistemiu. Pakeitimai, reikalingi, kad nftables 0.9.9 leidimas veiktų, yra įtraukti į Linux branduolį 5.13-rc1.

Į paketą nftables yra paketų filtrų komponentai, kurie veikia vartotojo erdvėje, o branduolio lygio darbą užtikrina nf_tables posistemis, kuris yra Linux branduolio dalis nuo 3.13 leidimo. Branduolio lygis suteikia tik bendrąją nuo protokolo nepriklausomą sąsają, kuri suteikia pagrindines funkcijas duomenims iš paketų išgauti, duomenų operacijoms atlikti ir srauto valdymui.

Pačios filtravimo taisyklės ir specifiniams protokolams skirtos tvarkyklės yra sukompiliuojamos į vartotojo erdvės baitinį kodą, po kurio šis baito kodas įkeliamas į branduolį naudojant Netlink sąsają ir vykdomas branduolyje specialioje virtualioje mašinoje, primenančioje BPF (Berkeley Packet Filters). Šis metodas leidžia žymiai sumažinti branduolio lygiu veikiančio filtravimo kodo dydį ir perkelti visas analizavimo taisyklių funkcijas bei darbo su protokolais logiką į vartotojo erdvę.

Pagrindinės naujovės:

  • Įdiegta galimybė perkelti srauto apdorojimą į tinklo adapterio pusę, įgalinta naudojant „iškrovimo“ vėliavėlę. „Flowtable“ yra paketų peradresavimo kelio optimizavimo mechanizmas, kuriame visas taisyklių apdorojimo grandinių praėjimas taikomas tik pirmajam paketui, o visi kiti sraute esantys paketai persiunčiami tiesiogiai. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; priimti politiką; ip protokolas { tcp, udp } srautas pridėti @f } grandinės įrašas { type nat hook postrouting priority filter; priimti politiką; oifname "wan" maskaradas } }
  • Pridėta savininko vėliavėlės pritvirtinimo prie lentelės palaikymas, kad būtų užtikrintas išskirtinis lentelės naudojimas procese. Kai procesas baigiasi, su juo susijusi lentelė automatiškai ištrinama. Informacija apie procesą rodoma taisyklių iškeltuvėje komentaro forma: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; priimti politiką; skaitiniai paketai 1 baitai 309 }
  • Pridėtas IEEE 802.1ad specifikacijos (VLAN stacking arba QinQ) palaikymas, kuris apibrėžia kelių VLAN žymų pakeitimo į vieną Ethernet rėmelį būdą. Pavyzdžiui, norėdami patikrinti išorinio eterneto rėmo tipą 8021ad ir vlan id=342, galite naudoti konstrukcijos ... eterio tipą 802.1ad vlan id 342, kad patikrintumėte išorinį Ethernet rėmelio tipą 8021ad/vlan id=1, įdėtas 802.1. q/vlan id=2 ir tolesnė IP paketo inkapsuliacija: ... eterio tipas 8021ad vlan id 1 vlan tipas 8021q vlan id 2 vlan tipo ip skaitiklis
  • Pridėtas išteklių valdymo palaikymas naudojant suvienodintos hierarchijos cgroups v2. Pagrindinis skirtumas tarp cgroups v2 ir v1 yra bendros cgroups hierarchijos naudojimas visų tipų ištekliams, o ne atskiros procesoriaus išteklių paskirstymo, atminties suvartojimo ir įvesties/išvesties hierarchijos. Pavyzdžiui, norėdami patikrinti, ar pirmojo lygio cgroupv2 lizdo protėvis atitinka kaukę „system.slice“, galite naudoti konstrukciją: ... socket cgroupv2 1 lygio „system.slice“
  • Pridėta galimybė tikrinti SCTP paketų komponentus (tam reikalingos funkcijos atsiras Linux 5.14 branduolyje). Pavyzdžiui, norėdami patikrinti, ar pakete yra gabalas, kurio tipas yra „duomenys“ ir laukas „tipas“: ... egzistuoja sctp gabalo duomenys ... sctp gabalo duomenų tipas 0
  • Taisyklės įkėlimo operacijos vykdymas buvo paspartintas maždaug du kartus naudojant „-f“ vėliavėlę. Taip pat paspartintas taisyklių sąrašo išvedimas.
  • Pateikta kompaktiška forma, skirta patikrinti, ar nustatyti vėliavėlės bitai. Pavyzdžiui, norėdami patikrinti, ar nenustatyti snat ir dnat statuso bitai, galite nurodyti: ... ct status ! snat,dnat, kad patikrintumėte, ar sin bitas nustatytas bitų kaukėje syn,ack: ... tcp žymės syn / syn,ack, kad patikrintumėte, ar fin ir pirmieji bitai nenustatyti bitų kaukėje syn,ack,fin,rst: ... tcp vėliavėlės! = fin,rst / syn,ack,fin,rst
  • Leisti raktinį žodį „verdiktas“ rinkinio/žemėlapio tipo apibrėžimuose: add map xm { typeof iifname . ip protokolas dportas: verdiktas ;}

Šaltinis: opennet.ru

Добавить комментарий