nftables pakkefilter 1.0.0 udgivelse

nftables 1.0.0, et pakkefiltreringsframework, der forener pakkefiltreringsgrænseflader til IPv4, IPv6, ARP og netværksbroer, er blevet udgivet (rettet mod at erstatte iptables, ip6table, arptables og ebtables). De nødvendige ændringer til nftables 1.0.0 er blevet indarbejdet i kernen. Linux 5.13. En væsentlig ændring i versionsnummeret er ikke forbundet med nogen fundamentale ændringer, men er blot en konsekvens af den sekventielle fortsættelse af nummereringen i decimalnotation (den tidligere udgivelse var 0.9.9).

Pakken nftables indeholder pakkefilterkomponenterne, der opererer i brugerområdet, mens arbejde på kerneniveau leveres af nf_tables-undersystemet, som er en del af kernen. Linux Siden version 3.13 er der kun en generisk protokoluafhængig grænseflade på kerneniveau, der giver grundlæggende funktionalitet til at udtrække data fra pakker, udføre dataoperationer og flowkontrol.

Selve filtreringsreglerne og protokolspecifikke handlere kompileres til bytekode i brugerområdet, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-grænsefladen og udføres i kernen i en speciel virtuel maskine, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion af størrelsen på den filtreringskode, der kører på kerneniveau, og flytter al regelparsing og protokollogik ud i brugerområdet.

Vigtigste innovationer:

  • Understøttelse af maskeelementet "*" er blevet tilføjet til sætlister, som udløses for alle pakker, der ikke falder ind under andre elementer, der er defineret i sættet. table x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } kæde y { type filter hook prerouting priority 0; politik acceptere; ip saddr vmap @blokliste } }
  • Det er muligt at definere variabler fra kommandolinjen ved at bruge "--define" muligheden. # kat test.nft tabel netdev x { kæde y { type filter hook ingress devices = $dev prioritet 0; politik fald; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • I kortlister er brugen af ​​konstante (stateful) udtryk tilladt: tabel inet filter { map portmap { type inet_service : verdict counter elements = { 22 tællerpakker 0 bytes 0 : jump ssh_input, * tællerpakker 0 bytes 0 : drop } } kæde ssh_input { } kæde wan_input { tcp dport vmap @ portmap } chain prerouting { type filter hook prerouting priority raw; politik acceptere; iif vmap { "lo": jump wan_input } }
  • Tilføjet "list hooks"-kommando for at vise en liste over handlere for en given pakkefamilie: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw input [nf_tables] } {-0000000100 kæde ip ab [nf_tables] +0000000300 kæde inet mz [nf_tables]} hook fremad {-0000000225 selinux_ipv4_forward 0000000000 kæde ip ac [nf_tables]} hook output {-0000000225 SELInux_IPv4_output} postrotrouting {+0000000225uxx4 vXNUMX_postroute}}
  • Køblokke tillader jhash-, symhash- og numgen-udtryk at blive kombineret for at distribuere pakker til køer i brugerrummet. … kø til symhash mod 65536 … køflag forbigå til numgen inc mod 65536 … kø til jhash oif . meta mark mod 32 "kø" kan også kombineres med kortlister for at vælge en kø i brugerrummet baseret på vilkårlige nøgler. ... køflag omgås til oifname map { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Det er muligt at udvide variabler, der inkluderer en sætliste, til flere kort. definer grænseflader = { eth0, eth1 } tabel ip x { kæde y { type filter hook input prioritet 0; politik acceptere; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft liste regelsæt tabel ip x { chain y { type filter hook input prioritet 0; politik acceptere; iifname vmap { "lo": accept, "eth0": drop, "eth1": drop } }
  • Det er tilladt at kombinere vmaps (verdict map) med intervaller: # nft add rule xy tcp dport . ip saddr vmap {1025-65535. 192.168.10.2 : accepter }
  • Syntaksen for NAT-mappings er blevet forenklet. Det er nu tilladt at angive adresseintervaller: … snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } eller eksplicitte intervaller. IP-adresser og porte: … dnat til ip saddr kort { 10.141.11.4 : 192.168.2.3 . 80 } eller kombinationer af IP-områder og porte: … dnat til ip saddr . tcp dport kort { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Kilde: opennet.ru

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster