nftables pakkie filter 0.9.9 vrystelling

Die vrystelling van pakkiefilter nftables 0.9.9 is gepubliseer, wat pakkiefiltreringskoppelvlakke vir IPv4, IPv6, ARP en netwerkbrûe verenig (wat daarop gemik is om iptables, ip6table, arptables en ebtables te vervang). Terselfdertyd is die vrystelling van die metgeselbiblioteek libnftnl 1.2.0 gepubliseer, wat 'n laevlak-API bied vir interaksie met die nf_tables-substelsel. Die veranderinge wat nodig is vir die nftables 0.9.9-vrystelling om te werk, is ingesluit in die Linux-kern 5.13-rc1.

Die nftables-pakket bevat pakkiefilterkomponente wat in gebruikersruimte loop, terwyl die kernvlak verskaf word deur die nf_tables-substelsel, wat sedert vrystelling 3.13 deel van die Linux-kern is. Op die kernvlak word slegs 'n generiese protokol-onafhanklike koppelvlak verskaf wat basiese funksies verskaf om data uit pakkies te onttrek, bewerkings op data uit te voer en vloei te beheer.

Die filterreëls self en protokol-spesifieke hanteerders word saamgestel in gebruikersspasie-greepkode, waarna hierdie greepkode in die kern gelaai word met behulp van die Netlink-koppelvlak en in die kern uitgevoer word in 'n spesiale virtuele masjien wat soos BPF (Berkeley Packet Filters) lyk. Hierdie benadering maak dit moontlik om die grootte van die filterkode wat op kernvlak loop aansienlik te verminder en al die funksies van ontledingsreëls en die logika van werk met protokolle na gebruikersruimte te skuif.

Belangrikste innovasies:

  • Die vermoë om vloeitabelverwerking na die netwerkadapterkant te skuif, is geïmplementeer, geaktiveer deur die 'aflaai'-vlag te gebruik. Flowtable is 'n meganisme vir die optimalisering van die pad van pakkie-herleiding, waarin die volledige deurgang van alle reëlverwerkingskettings slegs op die eerste pakkie toegepas word, en alle ander pakkies in die vloei word direk aangestuur. tabel ip globale { vloeitabel f ​​{ haak ingang prioriteit filter + 1 toestelle = { lan3, lan0, wan } vlae aflaai } ketting vorentoe { tipe filter haak vorentoe prioriteit filter; beleid aanvaar; ip-protokol { tcp, udp } vloei voeg @f } kettingpos { tipe nat haak postrouting prioriteit filter; beleid aanvaar; oifname "wan" maskerade } }
  • Bygevoeg ondersteuning vir die heg van 'n eienaar vlag aan 'n tabel om eksklusiewe gebruik van die tabel deur 'n proses te verseker. Wanneer 'n proses beëindig word, word die tabel wat daarmee geassosieer word outomaties uitgevee. Inligting oor die proses word in die reëls dump vertoon in die vorm van 'n opmerking: tabel ip x { # progname nft flags eienaar ketting y { tipe filter haak invoer prioriteit filter; beleid aanvaar; tellerpakkies 1 grepe 309 } }
  • Bygevoeg ondersteuning vir die IEEE 802.1ad-spesifikasie (VLAN-stapeling of QinQ), wat 'n manier definieer om verskeie VLAN-etikette in 'n enkele Ethernet-raam te vervang. Byvoorbeeld, om die tipe eksterne Ethernet-raam 8021ad en vlan id=342 na te gaan, kan jy die konstruksie ... ether tipe 802.1ad vlan id 342 gebruik om die eksterne tipe Ethernet-raam 8021ad/vlan id=1, geneste 802.1 na te gaan q/vlan id=2 en verdere IP pakkie encapsulation: ... eter tipe 8021ad vlan id 1 vlan tipe 8021q vlan id 2 vlan tipe ip teller
  • Bygevoeg ondersteuning vir die bestuur van hulpbronne met behulp van die verenigde hiërargie cgroups v2. Die sleutelverskil tussen cgroups v2 en v1 is die gebruik van 'n algemene cgroups-hiërargie vir alle soorte hulpbronne, in plaas van aparte hiërargieë vir die toekenning van SVE-hulpbronne, vir die regulering van geheueverbruik en vir I/O. Byvoorbeeld, om te kyk of die voorouer van 'n sok op die eerste vlak cgroupv2 ooreenstem met die "system.slice" masker, kan jy die konstruksie gebruik: ... socket cgroupv2 vlak 1 "system.slice"
  • Bygevoeg die vermoë om komponente van SCTP-pakkies na te gaan (die funksionaliteit wat hiervoor benodig word, sal in die Linux 5.14-kern verskyn). Byvoorbeeld, om te kontroleer of 'n pakkie 'n stuk bevat met tipe 'data' en veld 'tipe': ... sctp chunk data bestaan ​​... sctp chunk data tipe 0
  • Die uitvoering van die reëllaaibewerking is met ongeveer twee keer versnel deur die "-f" vlag te gebruik. Die uitvoer van die lys reëls is ook versnel.
  • 'n Kompakte vorm om te kontroleer of vlagstukke gestel is, word verskaf. Byvoorbeeld, om te kontroleer dat die snat- en dnat-statusbisse nie gestel is nie, kan jy spesifiseer: ... ct status ! snat,dnat om te kontroleer dat die syn-bis ingestel is in die bitmask syn,ack: ... tcp-vlae syn / syn,ack om te kontroleer dat die fin en eerste bisse nie in die bitmask syn,ack,fin,rst gestel is nie: ... tcp-vlae ! = fin, eerste / syn, ack, fin, eerste
  • Laat die "uitspraak" sleutelwoord in stel/kaart tipe definisies toe: voeg kaart xm { typeof iifname by. ip protokol de dport: uitspraak;}

Bron: opennet.ru

Voeg 'n opmerking