Die nftables 0.9.9 pakkiefilter is vrygestel. Dit verenig pakkiefilterkoppelvlakke vir IPv4, IPv6, ARP en netwerkbrûe (gemik as 'n plaasvervanger vir iptables, ip6table, arptables en ebtables). Die gepaardgaande libnftnl 1.2.0-biblioteek, wat 'n laevlak-API bied vir interaksie met die nf_tables-substelsel, is gelyktydig vrygestel. Die veranderinge wat vir nftables 0.9.9 benodig word, is in die kern opgeneem. Linux 5.13-rc1.
Die nftables-pakket bevat die pakkiefilterkomponente wat in gebruikersruimte werk, terwyl kernvlakwerk deur die nf_tables-substelsel, wat deel van die kern is, verskaf word. Linux Sedert weergawe 3.13 word slegs 'n generiese protokol-onafhanklike koppelvlak op kernvlak verskaf, wat basiese funksionaliteit bied vir die onttrekking van data uit pakkette, die uitvoering van data-bewerkings en vloeibeheer.
Die filterreëls self en protokolspesifieke hanteerders word in gebruikersruimte in bytekode saamgestel, waarna hierdie bytekode met behulp van die Netlink-koppelvlak in die kern gelaai word en in 'n spesiale modus in die kern uitgevoer word. virtuele masjien, wat herinner aan BPF (Berkeley Packet Filters). Hierdie benadering maak voorsiening vir 'n beduidende vermindering in die grootte van die filterkode wat op kernvlak loop en skuif alle reëlontleding en protokollogika na gebruikersruimte.
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"
- Die vermoë bygevoeg om die komponente van SCTP-pakkette na te gaan (die funksionaliteit wat vir werking benodig word, sal in die kern verskyn) Linux 5.14). Byvoorbeeld, om te kyk of 'n pakkie 'n chunk met die 'data'-tipe en die 'tipe'-veld bevat: … 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
