nftables paka filtrilo 0.9.9 eldono

La liberigo de paka filtrilo nftables 0.9.9 estis publikigita, unuigante pakaĵetfiltrilinterfacojn por IPv4, IPv6, ARP kaj retaj pontoj (celitaj por anstataŭigi iptables, ip6table, arptables kaj ebtables). Samtempe, la eldono de la akompana biblioteko libnftnl 1.2.0 estis publikigita, provizante malaltnivelan API por interagado kun la subsistemo nf_tables. La ŝanĝoj necesaj por ke la eldono nftables 0.9.9 funkciu estas inkluzivitaj en la Linukso-kerno 5.13-rc1.

La nftables-pakaĵo inkluzivas pakatajn filtrilkomponentojn, kiuj funkcias en uzantspaco, dum la kernnivela laboro estas disponigita de la subsistemo nf_tables, kiu estis parto de la Linukso-kerno ekde eldono 3.13. La kernnivelo disponigas nur senmarkan protokol-sendependan interfacon kiu disponigas bazajn funkciojn por eltiri datenojn de pakaĵetoj, elfarante datumoperaciojn, kaj fluokontrolon.

La filtraj reguloj mem kaj protokol-specifaj pritraktiloj estas kompilitaj en uzantspacan bajtkodon, post kiu tiu bajtokodo estas ŝarĝita en la kernon uzante la Netlink-interfacon kaj efektivigita en la kerno en speciala virtuala maŝino simila al BPF (Berkeley Packet Filters). Ĉi tiu aliro ebligas signife redukti la grandecon de la filtra kodo funkcianta ĉe la kernnivelo kaj movi ĉiujn funkciojn de analizaj reguloj kaj la logikon labori kun protokoloj en uzantspacon.

Ĉefaj novigoj:

  • La kapablo movi flutablan pretigon al la reto-adaptilo-flanko estis efektivigita, ebligita per la "malŝarĝo" flago. Flutabelo estas mekanismo por optimumigi la vojon de pakaĵeta redirekto, en kiu la kompleta trairejo de ĉiuj regulpretigĉenoj estas aplikita nur al la unua pakaĵeto, kaj ĉiuj aliaj pakaĵetoj en la fluo estas plusendita rekte. table ip global { flowtable f { hook ingress prioritatfiltrilo + 1 aparatoj = { lan3, lan0, wan } flagoj malŝarĝi } ĉeno antaŭen { tipo filtrilo hoko antaŭen prioritata filtrilo; politiko akcepti; ip protokolo { tcp, udp } flow add @f } ĉeno post { type nat hook postrouting prioritata filtrilo; politiko akcepti; oifnomo "malbona" ​​maskerado } }
  • Aldonita subteno por alligi posedanto-flagon al tablo por certigi ekskluzivan uzon de la tablo per procezo. Kiam procezo finiĝas, la tablo asociita kun ĝi estas aŭtomate forigita. Informoj pri la procezo estas montrata en la reguldump en formo de komento: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; politiko akcepti; nombrilo pakoj 1 bajtoj 309 } }
  • Aldonita subteno por la IEEE 802.1ad-specifo (VLAN-stakado aŭ QinQ), kiu difinas rimedon por anstataŭigi multoblajn VLAN-etikedojn en ununuran Ethernet-kadron. Ekzemple, por kontroli la tipon de ekstera Ethernet-kadro 8021ad kaj vlan id=342, vi povas uzi la konstruon ... ether type 802.1ad vlan id 342 por kontroli la eksteran tipon de Ethernet-kadro 8021ad/vlan id=1, nestita 802.1 q/vlan id=2 kaj plia IP-paka enkapsuligo: ... etero-tipo 8021ad vlan-id 1 vlan-tipo 8021q vlan-id 2 vlan-tipo ip counter
  • Aldonita subteno por administrado de rimedoj uzante la unuigitan hierarkiajn cgroups v2. La ŝlosila diferenco inter cgroups v2 kaj v1 estas la uzo de ofta cgroups-hierarkio por ĉiuj specoj de resursoj, anstataŭe de apartaj hierarkioj por asignado de CPU-resursoj, por reguligado de memorkonsumo, kaj por I/O. Ekzemple, por kontroli ĉu la praulo de ingo ĉe la unua nivelo cgroupv2 kongruas kun la masko "system.slice", vi povas uzi la konstruon: ... socket cgroupv2 nivelo 1 "system.slice"
  • Aldonita la kapablo kontroli komponantojn de SCTP-pakoj (la funkcio necesa por tio aperos en la Linukso-kerno 5.14). Ekzemple, por kontroli ĉu pako enhavas pecon kun tipo 'datumo' kaj kampo 'tipo': ... sctp chunk datumoj ekzistas ... sctp chunk datumtipo 0
  • La ekzekuto de la regulŝarĝa operacio estis akcelita proksimume dufoje uzante la flagon "-f". La eligo de la listo de reguloj ankaŭ estis akcelita.
  • Kompakta formo por kontroli ĉu flagbitoj estas fiksitaj estas disponigita. Ekzemple, por kontroli, ke la snat kaj dnat statusbitoj ne estas agordita, vi povas specifi: ... ct status ! snat,dnat por kontroli, ke la syn bito estas agordita en la bitmasko syn,ack: ... tcp flags syn / syn,ack por kontroli, ke la fin kaj unuaj bitoj ne estas agordita en la bitmasko syn,ack,fin,rst: ... tcp flags ! = fin,st / syn,ack,fin,st
  • Permesu la ŝlosilvorton "verdikto" en aro/mapspecodifinoj: aldonu map xm { typeof iifname . ip-protokolo th dport : verdikto ;}

fonto: opennet.ru

Aldoni komenton