nftables pakkefilter 1.0.6 udgivelse

Frigivelsen af ​​pakkefilter nftables 1.0.6 er blevet offentliggjort, som forener pakkefiltreringsgrænseflader til IPv4, IPv6, ARP og netværksbroer (med henblik på at erstatte iptables, ip6table, arptables og ebtables). nftables-pakken inkluderer pakkefilterkomponenter, der kører i brugerrum, mens arbejdet på kerneniveau leveres af nf_tables-undersystemet, som har været en del af Linux-kernen siden release 3.13. Kerneniveauet giver kun en generisk protokol-uafhængig grænseflade, der giver grundlæggende funktioner til at udtrække data fra pakker, udføre dataoperationer og flowkontrol.

Selve filtreringsreglerne og protokol-specifikke handlere kompileres til brugerrumsbytekode, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-grænsefladen og eksekveres i kernen i en speciel virtuel maskine, der ligner BPF (Berkeley Packet Filters). Denne tilgang gør det muligt betydeligt at reducere størrelsen af ​​den filtreringskode, der kører på kerneniveau, og flytte alle funktionerne i parsingsregler og logikken i at arbejde med protokoller ind i brugerrummet.

Vigtigste ændringer:

  • Regeloptimeringsværktøjet, kaldet når "-o/—optimize"-indstillingen er angivet, har automatisk pakning af regler ved at kombinere dem og konvertere dem til kort- og sætlister. For eksempel regler # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; politik fald; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 accept 24. 1 .1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept } } efter udførelse af "nft -o -c -f ruleset.nft" vil blive konverteret til som følger: ruleset . nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft. : 6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0. accept ruleset.nft:2.2.4.10:8-17: meta iifname eth74 ip saddr 2 ip daddr 1.1.1.3 accepter i: iifname . ip saddr. ip daddr { eth2.2.2.5. 1. 1.1.1.1, eth2.2.2.3. 1. 1.1.1.2, eth2.2.2.4. 1. 1.1.1.2/2.2.3.0, eth24. 1. 1.1.1.2-2.2.4.0, eth2.2.4.10. 2. 1.1.1.3 } accepter
  • Optimizeren kan også konvertere regler, der allerede bruger simple sætlister til en mere kompakt form, for eksempel reglerne: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; politik fald; iifname "lo" acceptere ct-tilstand etableret, relateret accept kommentar "I trafikken, vi stammer fra, vi stoler på" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp sport 32768 udp iifname "enp65535s0f31" ip saddr { 6, 64.59.144.17 } ip daddr 64.59.150.133 udp sport 10.0.0.149 udp dport 53-32768 accepterer } } efter udførelse af -nft-pakken vil følge -nf-pakke : ruleset.nft:65535:6-22: iifname "enp149s0f31" ip saddr { 6, 209.115.181.102 } ip daddr 216.197.228.230 udp sport 10.0.0.149: Acceptér 123: iifname "enp32768s65535f7" ip saddr { 22, 143 } ip daddr 0 udp sport 31 udp dport 6-64.59.144.17 acceptere i: iifname . ip saddr. ip daddr. udp sport. udp dport {enp64.59.150.133s10.0.0.149f53. 32768. 65535. 0. 31-6, enp209.115.181.102s10.0.0.149f123. 32768. 65535. 0. 31-6, enp216.197.228.230s10.0.0.149f123. 32768. 65535. 0. 31-6, enp64.59.144.17s10.0.0.149f53. 32768. 65535. 0. 31-6 } accepter
  • Løst problem med bytekodegenerering til fletning af intervaller, der bruger typer med forskellig byterækkefølge, såsom IPv4 (netværksbyterækkefølge) og metamærke (systembyterækkefølge). tabel ip x { map w { typeof ip saddr . metamærke: domsflag intervaltællerelementer = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : accepter, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accept, } } kæde k { type filter hook input priority filter; politik fald; ip saddr. metamærke vmap @w } }
  • Forbedret sammenligning af sjældne protokoller ved brug af rå udtryk, for eksempel: meta l4proto 91 @th,400,16 0x0 accept
  • Problemer med aktivering af regler med intervaller er blevet løst: indsæt regel xy tcp sport { 3478-3497, 16384-16387 } mod accept
  • JSON API er blevet forbedret til at inkludere understøttelse af udtryk i sæt- og kortlister.
  • Udvidelser til nftables python-biblioteket tillader indlæsning af regelsæt til behandling i valideringstilstand ("-c") og tilføjer understøttelse af ekstern definition af variabler.
  • Tilføjelse af kommentarer er tilladt i sætlisteelementer.
  • Byte ratelimit gør det muligt at angive en nulværdi.

Kilde: opennet.ru

Tilføj en kommentar