nftables pakkefilter 1.0.6 utgivelse

nftables 1.0.6-pakkefilterutgivelsen har blitt publisert, og forener pakkefiltreringsgrensesnitt for IPv4, IPv6, ARP og nettverksbroer (rettet mot å erstatte iptables, ip6table, arptables og ebtables). nftables-pakken inkluderer pakkefilterkomponenter som kjører i brukerrom, mens kjernenivået leveres av nf_tables-undersystemet, som har vært en del av Linux-kjernen siden utgivelse 3.13. På kjernenivå er det bare et generisk protokolluavhengig grensesnitt som gir grunnleggende funksjoner for å trekke ut data fra pakker, utføre operasjoner på data og kontrollere flyten.

Selve filtreringsreglene og protokollspesifikke behandlere kompileres til brukerromsbytekode, hvoretter denne bytekoden lastes inn i kjernen ved hjelp av Netlink-grensesnittet og kjøres i kjernen i en spesiell virtuell maskin som ligner BPF (Berkeley Packet Filters). Denne tilnærmingen gjør det mulig å redusere størrelsen på filtreringskoden som kjører på kjernenivå betydelig og flytte alle funksjonene til parsingsregler og logikken for å jobbe med protokoller inn i brukerområdet.

Hovedendringer:

  • I regeloptimereren som kalles når du spesifiserer alternativet "-o/--optimize", er det satt opp automatisk pakking av regler ved å kombinere dem og konvertere dem til kart- og settlister. For eksempel er reglene # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; politikk fall; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 godta meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 akseptere meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 meta24 eth1 eth. 1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 aksepter meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 aksepter } } etter "nft -o -c -f regelsett.nft" vil bli konvertert til følgende: regelsett. nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 akseptere regler 17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6/17 accept ruleset.nft:77:1-1.1.1.2: meta iifname eth2.2.3.0 ip saddr 24 ip daddr 7. ruleset.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10 godta inn i: iifname . ip saddr. ip daddr { eth8. 17. 74, eth2. 1.1.1.3. 2.2.2.5, eth1. 1.1.1.1. 2.2.2.3/1, et1.1.1.2. 2.2.2.4. 1-1.1.1.2, et2.2.3.0. 24. 1 } godta
  • Optimalisatoren kan også kondensere regler som allerede bruker enkle settlister til en mer kompakt form, for eksempel: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; politikk fall; iifname "lo" aksepter ct tilstand etablert,relatert godta kommentar "I trafikken vi opphav, stoler vi på" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123-32768 udp sport 65535-0 iifname "enp31s6f64.59.144.17" ip saddr { 64.59.150.133, 10.0.0.149 } ip daddr 53 udp sport 32768 udp dport 65535-6 godta } } etter å ha kjørt " -f"-reglene "like" : ruleset.nft:22:149-0: iifname "enp31s6f209.115.181.102" ip saddr { 216.197.228.230, 10.0.0.149 } ip daddr 123 udp sport 32768 d65535-port 7 d22 143 0 : iifname "enp31s6f64.59.144.17" ip saddr { 64.59.150.133, 10.0.0.149 } ip daddr 53 udp sport 32768 udp dport 65535-0 accept into: iifname . ip saddr. ip daddr. utp sport. udp dport {enp31s6f209.115.181.102. 10.0.0.149 . 123. 32768. 65535-0, enp31s6f216.197.228.230 . 10.0.0.149 . 123. 32768. 65535-0, enp31s6f64.59.144.17 . 10.0.0.149. 53. 32768. 65535-0, enp31s6f64.59.150.133 . 10.0.0.149. 53. 32768. 65535-XNUMX } godta
  • Løste et problem med generering av bytekode for sammenslåingsintervaller som bruker typer med ulik endianhet, for eksempel IPv4 (nettverksendian) og metamerke (systemendian). table ip x { map w { typeof ip saddr . metamarkering: domsflagger intervalltellerelementer = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : godta, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : aksepter, } } kjede k { type filter krok input priority filter; politikk fall; ip saddr. metamerke vmap @w } }
  • Forbedrede sjeldne protokolltilordninger ved bruk av råuttrykk, for eksempel: meta l4proto 91 @th,400,16 0x0 accept
  • Rettet problemer med aktivering av regler med intervaller: sett inn regel xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API har blitt forbedret for å støtte uttrykk i sett- og kartlister.
  • I utvidelser til nftables python-biblioteket er regelsett tillatt å lastes for behandling i kontrollmodus ("-c") og støtte for ekstern variabeldefinisjon er lagt til.
  • Det er tillatt å legge til kommentarer i elementene i settlister.
  • Det er tillatt å spesifisere nullverdi i byte ratelimit.

Kilde: opennet.ru

Legg til en kommentar