nftables-pakettisuodattimen julkaisu 1.0.7

Pakettisuodattimen nftables 1.0.7 -julkaisu on julkaistu, ja se yhdistää IPv4:n, IPv6:n, ARP:n ja verkkosiltojen pakettisuodatusrajapinnat (joka on tarkoitettu korvaamaan iptables, ip6table, arptables ja ebtables). 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.

Suurimmat muutokset:

  • Linux-ytimen versiota 6.2+ käyttäviin järjestelmiin on lisätty tuki vxlan-, geneve-, gre- ja gretap-protokollakartoille, mikä mahdollistaa yksinkertaisten lausekkeiden tarkistamisen kapseloitujen pakettien otsikoissa. Voit esimerkiksi tarkistaa IP-osoitteen VxLANista tulevan sisäkkäisen paketin otsikossa käyttämällä sääntöjä (ilman tarvetta purkaa VxLAN-otsikon kotelointi ja sitoa suodatin vxlan0-liitäntään): ... udp dport 4789 vxlan ip-protokolla udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX }
  • Tuki jäännösten automaattiselle yhdistämiselle set-list-elementin osittaisen poistamisen jälkeen on otettu käyttöön, jolloin voit poistaa elementin tai alueen osan olemassa olevasta alueesta (aiemmin alueen voitiin poistaa vain kokonaan). Esimerkiksi, kun elementti 25 on poistettu joukkoluettelosta, jonka alueet ovat 24-30 ja 40-50, lista pysyy 24, 26-30 ja 40-50. Automaattisen yhdistämisen toimimiseen tarvittavat korjaukset tarjotaan 5.10+-ytimen vakaiden haarojen ylläpitojulkaisuissa. # nft listan sääntötaulukko ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list rulet table ip x { set y { tcp dport -merkkien tyyppi automaattisen yhdistämisen elementtien välillä = { 24, 26-30, 40-50 } }
  • Sallii yhteystietojen ja alueiden käytön osoitteenmuunnoksen (NAT) kartoittamisessa. table ip nat { ketjun esireititys { type nat hook prerouting priority dstnat; hyväksyä politiikka; dnat ip:lle daddr. tcp dport map { 10.1.1.136 . 80: 1.1.2.69. 1024, 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049 } jatkuva } }
  • Lisätty tuki "viimeiselle" lausekkeelle, jonka avulla voit selvittää sääntöelementin tai joukkoluettelon viimeisimmän käyttöajan. Ominaisuutta tuetaan Linux-ytimestä 5.14 alkaen. table ip x { set y { typeof ip daddr . tcp dport size 65535 liput dynaaminen,aikakatkaisu viimeinen aikakatkaisu 1h } ketju z { tyyppi suodatinkoukku lähtöprioriteettisuodatin; hyväksyä politiikka; päivitä @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport size 65535 merkitsee dynaamisia, aikakatkaisu viimeinen aikakatkaisu 1h elementtejä = { 172.217.17.14 . 443 viimeksi käytetty 1s591ms aikakatkaisu 1h vanhenee 59m58s409ms, 172.67.69.19 . 443 viimeksi käytetty 4s636ms aikakatkaisu 1h vanhenee 59m55s364ms, 142.250.201.72 . 443 viimeksi käytetty 4s748ms aikakatkaisu 1h vanhenee 59m55s252ms, 172.67.70.134 . 443 viimeksi käytetty 4s688ms aikakatkaisu 1h vanhenee 59m55s312ms, 35.241.9.150 . 443 viimeksi käytetty 5s204ms aikakatkaisu 1h vanhenee 59m54s796ms, 138.201.122.174 . 443 viimeksi käytetty 4s537ms aikakatkaisu 1h vanhenee 59m55s463ms, 34.160.144.191 . 443 viimeksi käytetty 5s205ms aikakatkaisu 1h vanhenee 59m54s795ms, 130.211.23.194 . 443 viimeksi käytetty 4s436ms aikakatkaisu 1h vanhenee 59m55s564ms } } }
  • Lisätty mahdollisuus määrittää kiintiöitä joukkoluetteloissa. Esimerkiksi kunkin IP-kohteen liikennekiintiön määrittämiseksi voit määrittää: taulukko netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" prioriteettisuodatin; hyväksyä politiikka; ip daddr @y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft lista sääntötaulukko netdev x { set y { kirjoita ipv4_addr koko 65535 kiintiö yli 10000 mtavua elementtejä = { 8.8.8.8 elementtejä. 10000 kiintiö yli 196 mtavua käytetty 0 tavua } } chain y { type filter hook egress device "ethXNUMX" prioriteettisuodatin; hyväksyä politiikka; ip isä @y drop } }
  • Vakioiden käyttö joukkoluetteloissa on sallittua. Esimerkiksi kun käytät kohdeosoitetta ja VLAN-tunnusta luetteloavaimena, voit määrittää suoraan VLAN-numeron (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id koko 2048 liput dynaaminen,aikakatkaisu aikakatkaisu 1m } ketju c { tyyppi suodatinkoukun sisääntulolaite eth0 prioriteetti 0; hyväksyä politiikka; ether type != 8021q päivitys @s { ether daddr . 123 } laskuri } }
  • Lisätty uusi "destroy"-komento, jolla voidaan poistaa kohteita ehdoitta (toisin kuin poistokomento, se ei tuota ENOENT-komentoa yritettäessä poistaa puuttuvaa objektia). Vaatii vähintään Linux-ytimen 6.3-rc toimiakseen. tuhota taulukon ip-suodatin

Lähde: opennet.ru

Lisää kommentti