nftables-pakettisuodattimen julkaisu 0.9.9

Pakettisuodattimen nftables 0.9.9 -julkaisu on julkaistu, ja se yhdistää IPv4:n, IPv6:n, ARP:n ja verkkosiltojen pakettisuodatusrajapinnat (joka on tarkoitettu korvaamaan iptables, ip6table, arptables ja ebtables). Samaan aikaan julkaistiin täydentävän kirjaston libnftnl 1.2.0 julkaisu, joka tarjoaa matalan tason API:n vuorovaikutukseen nf_tables-alijärjestelmän kanssa. Muutokset, joita tarvitaan, jotta nftables 0.9.9 -julkaisu toimisi, sisältyvät Linux-ytimeen 5.13-rc1.

Paketti nftables sisältää pakettisuodatinkomponentteja, jotka toimivat käyttäjätilassa, kun taas ydintason työn tarjoaa nf_tables-alijärjestelmä, joka on ollut osa Linux-ydintä julkaisusta 3.13 lähtien. Ydintaso tarjoaa vain yleisen protokollasta riippumattoman rajapinnan, joka tarjoaa perustoiminnot datan poimimiseen paketeista, datatoimintojen suorittamiseen ja vuon ohjaukseen.

Suodatussäännöt ja protokollakohtaiset käsittelijät käännetään käyttäjätilassa tavukoodiksi, jonka jälkeen tämä tavukoodi ladataan ytimeen Netlink-rajapinnan avulla ja suoritetaan ytimessä erityisessä BPF:ää (Berkeley Packet Filters) muistuttavassa virtuaalikoneessa. Tämän lähestymistavan avulla voit pienentää merkittävästi ydintasolla käynnissä olevan suodatuskoodin kokoa ja siirtää kaikki jäsennyssääntöjen ja protokollien kanssa työskentelyn logiikan toiminnot käyttäjätilaan.

Tärkeimmät innovaatiot:

  • Mahdollisuus siirtää flowtable-käsittelyä verkkosovittimen puolelle on otettu käyttöön "offload"-lipulla. Flowtable on mekanismi pakettien uudelleenohjauspolun optimoimiseksi, jossa kaikkien säännönkäsittelyketjujen täydellinen läpikulku sovelletaan vain ensimmäiseen pakettiin ja kaikki muut paketit välitetään suoraan eteenpäin. table ip global { flowtable f { koukun sisääntulon prioriteettisuodatin + 1 laite = { lan3, lan0, wan } liput offload } ketju eteenpäin { tyyppi suodatin koukku eteenpäin prioriteettisuodatin; hyväksyä politiikka; ip-protokolla { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; hyväksyä politiikka; oifname "wan" naamiainen } }
  • Lisätty tuki omistajalipun liittämiselle taulukkoon, jotta prosessi voi käyttää taulukkoa yksinomaan. Kun prosessi päättyy, siihen liittyvä taulukko poistetaan automaattisesti. Prosessin tiedot näytetään sääntövedoskirjassa kommentin muodossa: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; hyväksyä politiikka; laskuripaketit 1 tavua 309 } }
  • Lisätty tuki IEEE 802.1ad -spesifikaatiolle (VLAN-pinoaminen tai QinQ), joka määrittelee tavan korvata useita VLAN-tunnisteita yhdeksi Ethernet-kehykseksi. Esimerkiksi ulkoisen Ethernet-kehyksen tyypin 8021ad ja vlan id=342 tarkistamiseksi voit käyttää rakennetta ... ether type 802.1ad vlan id 342 tarkistaaksesi Ethernet-kehyksen ulkoisen tyypin 8021ad/vlan id=1, sisäkkäinen 802.1 q/vlan id=2 ja muut IP-pakettien kapselointi: ... eetterityyppi 8021ad vlan id 1 vlan tyyppi 8021q vlan id 2 vlan tyyppi ip counter
  • Lisätty tuki resurssien hallintaan käyttämällä yhtenäistä hierarkiaa cgroups v2. Keskeinen ero cgroups v2:n ja v1:n välillä on yhteisen cgroups-hierarkian käyttö kaikentyyppisille resursseille erillisten hierarkioiden sijaan CPU-resurssien allokoinnissa, muistin kulutuksen säätelyssä ja I/O:ssa. Voit esimerkiksi tarkistaa, vastaako ensimmäisen tason cgroupv2 socketin esi-isä "system.slice" -maskia, käyttämällä rakennetta: ... socket cgroupv2 taso 1 "system.slice"
  • Lisätty mahdollisuus tarkistaa SCTP-pakettien komponentit (tätä varten tarvittavat toiminnot näkyvät Linux-ytimessä 5.14). Jos haluat esimerkiksi tarkistaa, sisältääkö paketti kappaleen, jonka tyyppi on 'data' ja kenttä 'tyyppi': ... sctp chunk data on olemassa ... sctp chunk datatyyppi 0
  • Säännön lataustoiminnon suorittamista on nopeutettu noin kaksi kertaa "-f"-lipulla. Sääntöluettelon tulostamista on myös nopeutettu.
  • Saatavilla on kompakti muoto lippubittien asetusten tarkistamiseksi. Voit esimerkiksi tarkistaa, että snat- ja dnat-tilabittejä ei ole asetettu, määrittämällä: ... ct status ! snat,dnat tarkistaaksesi, että syn-bitti on asetettu bittimaskissa syn,ack: ... tcp-liput syn / syn,ack tarkistaaksesi, että fin ja ensimmäinen bittiä ei ole asetettu bittimaskissa syn,ack,fin,rst: ... tcp liput! = fin,rst / syn,ack,fin,rst
  • Salli "tuomio"-avainsana set/map typeof -määritelmissä: add map xm { typeof iifname . ip-protokolla dport: tuomio ;}

Lähde: opennet.ru

Lisää kommentti