Nftables 0.9.9 -pakettisuodatin on julkaistu. Se yhdistää pakettien suodatusrajapinnat IPv4:lle, IPv6:lle, ARP:lle ja verkkosilloille (tarkoituksena korvata iptables, ip6table, arptable ja ebtables). Mukana oleva libnftnl 1.2.0 -kirjasto, joka tarjoaa matalan tason API:n vuorovaikutukseen nf_tables-alijärjestelmän kanssa, on julkaistu samanaikaisesti. Nftables 0.9.9:n vaatimat muutokset on sisällytetty ytimeen. Linux 5.13-rc1.
Nftables-paketti sisältää käyttäjätilassa toimivat pakettisuodattimen komponentit, kun taas ydintason työstä vastaa ydinosaan kuuluva nf_tables-alijärjestelmä. Linux Julkaisusta 3.13 lähtien ytimen tasolla on tarjottu vain geneerinen protokollasta riippumaton rajapinta, joka tarjoaa perustoiminnot datan poimimiseen paketeista, datatoimintojen suorittamiseen ja vuonohjaukseen.
Itse suodatussäännöt ja protokollakohtaiset käsittelijät käännetään tavukoodiksi käyttäjätilassa, minkä jälkeen tämä tavukoodi ladataan ytimeen Netlink-rajapinnan avulla ja suoritetaan ytimessä erityisellä virtuaalikone, joka muistuttaa BPF:ää (Berkeley Packet Filters). Tämä lähestymistapa mahdollistaa ytimen tasolla suoritettavan suodatuskoodin koon merkittävän pienentämisen ja siirtää kaiken sääntöjen jäsentämisen ja protokollalogiikan käyttäjätilaan.
Tärkeimmät innovaatiot:
- Toteutettu kyky siirtää flowtable-käsittely verkkosovittimen puolelle, mikä on otettu käyttöön 'offload'-lipulla. Flowtable on mekanismi pakettien edelleenlähetyspolun optimointiin, jossa kaikkien sääntöjen käsittelyketjujen täysi läpikäynti kohdistetaan vain ensimmäiseen pakettiin ja kaikki muut virran paketit välitetään suoraan. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname "wan" masquerade } }
- Lisätty tuki omistajalipun liittämiselle tauluun, mikä varmistaa, että prosessi saa käyttää taulukkoa yksinomaisesti. Kun prosessi päättyy, siihen liittyvä taulukko poistetaan automaattisesti. Prosessitiedot näytetään sääntöjen dumpissa kommenttina: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
- Lisätty tuki IEEE 802.1ad (VLAN-pinoaminen tai QinQ) -spesifikaatiolle, joka määrittelee keinot useiden VLAN-tunnisteiden korvaamiseksi yhdellä Ethernet-kehyksellä. Esimerkiksi ulomman Ethernet-kehystyypin 8021ad ja vlan id=342 tarkistamiseksi voit käyttää rakennetta ... ether type 802.1ad vlan id 342 tarkistaaksesi ulomman Ethernet-kehystyypin 8021ad/vlan id=1, sisäkkäisen 802.1q/vlan id=2 ja kapseloidaksesi IP-paketin edelleen: ... ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
- Resurssienhallinnan tuki yhtenäisen cgroups v2 -hierarkian avulla on lisätty. Keskeinen ero cgroups v2:n ja v1:n välillä on yhteisen cgroups-hierarkian käyttö kaikille resurssityypeille erillisten hierarkioiden sijaan suorittimen resurssien allokoinnille, muistinhallinnalle ja I/O:lle. Esimerkiksi tarkistaaksesi, vastaako soketin esi-isä cgroupv2:n ensimmäisellä tasolla "system.slice"-maskia, voit käyttää seuraavaa rakennetta: ... socket cgroupv2 level 1 "system.slice"
- Lisätty mahdollisuus tarkistaa SCTP-pakettien komponentit (toiminnan edellyttämät toiminnot näkyvät ytimessä) Linux 5.14). Esimerkiksi tarkistetaan, sisältääkö paketti data-tyypin ja tyyppi-kentän sisältävän lohkon: … sctp-lohkon data on olemassa … sctp-lohkon datatyyppi 0
- Sääntöjen lataaminen "-f"-lipulla on noin kaksinkertaistunut nopeudeltaan. Myös sääntöluettelon tulostusta on nopeutettu.
- Tarjolla on kompakti tapa tarkistaa lippujen bittien asetukset. Esimerkiksi voit tarkistaa, että snat- ja dnat-tilabittejä ei ole asetettu, määrittämällä: ... ct status ! snat,dnat tarkistaaksesi, että syn-bitti on asetettu syn,ack-bittimaskissa: ... tcp flags syn / syn,ack tarkistaaksesi, että fin- ja rst-bittejä ei ole asetettu syn,ack,fin,rst-bittimaskissa: ... tcp flags != fin,rst / syn,ack,fin,rst
- Avainsana "verdict" on sallittu set/map-muuttujalle määritellyissä typeof-määritelmissä: add map xm { typeof iifname . ip protocol . th dport : verdict ;}
Lähde: opennet.ru
