nftables pakketfilter 0.9.9 release

De frijlitting fan pakketfilter nftables 0.9.9 is publisearre, it ferienigjen fan pakketfiltering-ynterfaces foar IPv4, IPv6, ARP en netwurkbrêgen (rjochte op it ferfangen fan iptables, ip6table, arptables en ebtables). Tagelyk waard de frijlitting fan 'e kompanjonsbibleteek libnftnl 1.2.0 publisearre, in leech-nivo API foar ynteraksje mei it nf_tables subsysteem. De wizigingen dy't nedich binne foar de nftables 0.9.9-release om te wurkjen binne opnommen yn 'e Linux kernel 5.13-rc1.

It nftables-pakket omfettet pakketfilterkomponinten dy't yn brûkersromte rinne, wylst it kernelnivo wurdt fersoarge troch it nf_tables-subsysteem, dat sûnt release 3.13 diel is fan 'e Linux-kernel. Op it kernelnivo wurdt allinich in generike protokol-ûnôfhinklike ynterface levere dy't basisfunksjes leveret foar it ekstrahearjen fan gegevens út pakketten, it útfieren fan operaasjes op gegevens en it kontrolearjen fan stream.

De filterregels sels en protokol-spesifike handlers wurde kompilearre yn bytekoade foar brûkersromte, wêrnei't dizze bytekoade yn 'e kearn laden wurdt mei de Netlink-ynterface en útfierd yn' e kearn yn in spesjale firtuele masine dy't liket op BPF (Berkeley Packet Filters). Dizze oanpak makket it mooglik om de grutte fan 'e filterkoade dy't op it kernelnivo rint signifikant te ferminderjen en alle funksjes fan parsingregels en de logika fan wurkjen mei protokollen yn brûkersromte te ferpleatsen.

Wichtichste ynnovaasjes:

  • De mooglikheid om streamtabelferwurking nei de netwurkadapterkant te ferpleatsen is ymplementearre, ynskeakele mei de flagge 'offload'. Flowtable is in meganisme foar it optimalisearjen fan it paad fan pakketomlieding, wêryn de folsleine passaazje fan alle regelferwurkingsketten allinich tapast wurdt op it earste pakket, en alle oare pakketten yn 'e stream wurde direkt trochstjoerd. tabel ip globale {flowtable f {haak ingress prioriteit filter + 1 apparaten = {lan3, lan0, wan} flaggen offload} keten foarút {type filter heak foarút prioriteit filter; belied akseptearje; ip-protokol {tcp, udp} stream tafoegje @f} kettingpost {type nat hook postrouting prioriteitsfilter; belied akseptearje; oifname "wan" maskerade } }
  • Stipe tafoege foar it heakjen fan in eignerflagge oan in tafel om eksklusyf gebrûk fan 'e tafel te garandearjen troch in proses. As in proses einiget, wurdt de tabel dy't dêrmei ferbûn is automatysk wiske. Ynformaasje oer it proses wurdt werjûn yn 'e regels dump yn' e foarm fan in reaksje: tabel ip x { # progname nft flaggen eigner keten y { type filter haak ynfier prioriteit filter; belied akseptearje; tellerpakketten 1 bytes 309 } }
  • Stipe tafoege foar de IEEE 802.1ad-spesifikaasje (VLAN-stacking of QinQ), dy't in middel definiearret foar it ferfangen fan meardere VLAN-tags yn ien Ethernet-frame. Bygelyks om it type eksterne Ethernet-frame 8021ad en vlan id = 342 te kontrolearjen, kinne jo de konstruksje brûke ... q/vlan id = 802.1 en fierdere IP pakket ynkapseling: ... ether type 342ad vlan id 8021 vlan type 1q vlan id 802.1 vlan type ip teller
  • Stipe tafoege foar it behearen fan boarnen mei de ferienige hiërargy cgroups v2. It wichtichste ferskil tusken cgroups v2 en v1 is it brûken fan in mienskiplike cgroups hiërargy foar alle soarten boarnen, ynstee fan aparte hiërargyen foar it tawizen fan CPU-boarnen, foar it regulearjen fan ûnthâldferbrûk en foar I / O. Bygelyks, om te kontrolearjen oft de foarfaar fan in socket op it earste nivo cgroupv2 oerienkomt mei it masker "system.slice", kinne jo de konstruksje brûke: ... socket cgroupv2 nivo 1 "system.slice"
  • De mooglikheid tafoege om komponinten fan SCTP-pakketten te kontrolearjen (de funksjonaliteit dy't hjirfoar nedich is sil ferskine yn 'e Linux kernel 5.14). Bygelyks om te kontrolearjen oft in pakket in brok befettet mei type 'data' en fjild 'type': ... sctp chunk data bestiet ... sctp chunk data type 0
  • De útfiering fan 'e regelladingsoperaasje is sawat twa kear versneld mei de flagge "-f". De útfier fan 'e list mei regels is ek fersneld.
  • In kompakte foarm om te kontrolearjen oft flaggebits binne ynsteld is foarsjoen. Bygelyks, om te kontrolearjen dat de snat- en dnat-statusbits net ynsteld binne, kinne jo opjaan: ... ct status ! snat,dnat om te kontrolearjen dat de syn bit is ynsteld yn de bitmask syn,ack: ... tcp flaggen syn / syn,ack om te kontrolearjen dat de fin en earste bits binne net ynsteld yn de bitmask syn,ack,fin,rst: ... tcp flags ! = fin,rst / syn,ack,fin,rst
  • Tastean it kaaiwurd "ferdict" yn set / map typeof definysjes: add map xm { typeof iifname . ip protokol th dport: oardiel;}

Boarne: opennet.ru

Add a comment