nftables pakkefilter 1.0.2 udgivelse

Frigivelsen af ​​pakkefilter nftables 1.0.2 er blevet offentliggjort, der forener pakkefiltreringsgrænseflader til IPv4, IPv6, ARP og netværksbroer (med henblik på at erstatte iptables, ip6table, arptables og ebtables). Ændringerne, der kræves for at nftables 1.0.2-udgivelsen fungerer, er inkluderet i Linux-kernen 5.17-rc.

nftables-pakken inkluderer pakkefilterkomponenter, der kører i brugerrum, mens kerneniveauet leveres af nf_tables-undersystemet, som har været en del af Linux-kernen siden udgivelse 3.13. På kerneniveau er der kun en generisk protokol-uafhængig grænseflade, der giver grundlæggende funktioner til at udtrække data fra pakker, udføre operationer på data og kontrollere flow.

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 innovationer:

  • En regeloptimeringstilstand er blevet tilføjet, aktiveret ved hjælp af den nye "-o" ("--optimize") mulighed, som kan kombineres med "--check" muligheden for at kontrollere og optimere ændringer af regelsætfilen uden faktisk at indlæse den . Optimering giver dig mulighed for at kombinere lignende regler, for eksempel reglerne: 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.5 accept ip saddr 1.1.1.1. .2.2.2.2 acceptere ip saddr 2.2.2.2 ip daddr 3.3.3.3 drop

    vil blive kombineret til meta iifname . ip saddr. ip daddr { eth1. 1.1.1.1. 2.2.2.3, eth1. 1.1.1.2. 2.2.2.5 } accepter ip saddr . ip daddr vmap {1.1.1.1. 2.2.2.2 : acceptere, 2.2.2.2 . 3.3.3.3 : drop }

    Eksempel på brug: # nft -c -o -f ruleset.test Sammenfletning: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept ruleset.nft:18:3-37: ip daddr 192.168.0.3 counter accept into: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } tællerpakker 0 bytes 0 accept

  • Sætlisterne implementerer muligheden for at specificere ip- og tcp-indstillinger såvel som sctp-chunks: sæt s5 { typeof ip option ra value elements = { 1, 1024 } } sæt s7 { typeof sctp-chunk init num-inbound-streams elements = { 1, 4 } } kæde c5 { ip option ra værdi @s5 accept } kæde c7 { sctp chunk init num-inbound-streams @s7 accept }
  • Tilføjet understøttelse af TCP-indstillinger fastopen, md5sig og mptcp.
  • Tilføjet support til brug af mp-tcp-undertypen i kortlægninger: tcp-indstilling mptcp-undertype 1
  • Forbedret filtreringskode på kernesiden.
  • Flowtable har nu fuld understøttelse af JSON-formatet.
  • Muligheden for at bruge "afvis" handlingen i Ethernet frame matching operationer er blevet tilvejebragt. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 afvis

Kilde: opennet.ru

Tilføj en kommentar