Udgivelse af pakke filtreringsværktøjet nftables 1.0.5

Udgivelsen af nftables packet filter version 1.0.5, der forener filtreringsgrænsefladerne for IPv4, IPv6, ARP og netværksbroer (målrettet erstatning af iptables, ip6table, arptables og ebtables). Samtidig er libnftnl version 1.2.3 blevet offentliggjort, som tilbyder et lavniveau API til interaktion med nf_tables subsystemet.

Nftables-pakken inkluderer komponenter af pakke filtreringssystemet, der kører i brugerområdet, mens nf_tables subsystemet i kernen håndterer operationer i Linux kernen fra version 3.13. I kernen tilbydes kun et generelt interface, der ikke er afhængigt af en specifik protokol og giver grundlæggende funktioner til at hente data fra pakker, udføre dataoperationer og styre strømmen.

Reglerne for filtrering og protokolspecifikke behandlere kompileres til bytekode i brugerområdet, hvorefter denne bytekode indlæses i kernen ved hjælp af Netlink-interfacet og udføres i kernen i en særlig virtuelle maskiner, der minder om BPF (Berkeley Packet Filters). Denne tilgang muliggør en betydelig reduktion i størrelsen af den filtrering, der kører i kernen, og flytter alle funktioner til parsing af regler og logik til håndtering af protokoller til brugerområdet.

Vigtige ændringer:

  • I regeloptimereren, der kaldes ved at angive valgmuligheden "-o/--optimize", er der løst problemer med sammenlægning af regler, map- og set-lister. # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } } # nft -o -c -f ruleset.nft Sammenlægning: ruleset.nft:4:3-52: ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ruleset.nft:5:3-52: ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 til: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }
  • Ved sammenlægning af ethernet og vlan elementer er der sikret en dynamisk set-liste, der udfyldes baseret på pakkevej-parametre. add table netdev x add chain netdev x y { type filter hook ingress device enp0s25 priority 0; } add set netdev x macset { typeof ether daddr . vlan id; flags dynamic,timeout; } add rule netdev x y update @macset { ether daddr . vlan id timeout 60s } add rule netdev x y ether saddr . vlan id { 0a:0b:0c:0d:0e:0f . 42, 0a:0b:0c:0d:0e:0f . 4095 } counter accept
  • Visning af regler med map-lister, der indeholder masker i grænsefladenavne, er blevet justeret. table inet filter { chain INPUT { iifname vmap { "eth0" : jump input_lan, "wg*" : jump input_vpn } } chain input_lan {} chain input_vpn {} }
  • Regressionsfejl, der førte til forkert leksikalsk behandling af gyldige regler, er blevet rettet.
  • Problemer med langsom behandling og automatisk sammenlægning af store lister med elementer, der definerer værdiintervaller, er blevet løst.
  • Crash ved tilføjelse af elementer til en ugyldig set-liste er blevet rettet.

Kilde: opennet.ru

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