nftables pakkefilter 1.0.7 utgivelse

nftables 1.0.7-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:

  • For systemer som kjører Linux-kjerne 6.2+, har støtte for vxlan-, geneve-, gre- og gretap-protokolltilordninger blitt lagt til, slik at enkle uttrykk kan sjekke overskrifter i innkapslede pakker. For eksempel, for å sjekke IP-adressen i overskriften til en nestet pakke fra VxLAN, kan du nå bruke reglene (uten at du først trenger å de-innkapsle VxLAN-headeren og binde filteret til vxlan0-grensesnittet): ... udp dport 4789 vxlan ip-protokoll udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX }
  • Støtte for automatisk sammenslåing av rester etter at delvis sletting av et settlisteelement er implementert, som lar deg slette et element eller en del av et område fra et eksisterende område (tidligere kunne et område bare slettes helt). For eksempel, etter å ha fjernet element 25 fra en settliste med områder 24-30 og 40-50, vil listen forbli 24, 26-30 og 40-50. Reparasjonene som kreves for at automatisk sammenslåing skal fungere, vil bli tilbudt i vedlikeholdsutgivelser av de stabile grenene til 5.10+-kjernen. # nft list regelsett tabell ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } # nft delete element ip x y { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • Tillater bruk av kontakter og områder ved kartlegging av adresseoversettelse (NAT). table ip nat { chain prerouting { type nat hook prerouting priority dstnat; politikk akseptere; dnat til ip daddr. tcp dport map { 10.1.1.136 . 80: 1.1.2.69. 1024, 10.1.1.10-10.1.1.20. 8888-8889: 1.1.2.69. 2048-2049 } vedvarende } }
  • Lagt til støtte for det "siste" uttrykket, som lar deg finne ut tidspunktet for siste bruk av et regelelement eller settliste. Funksjonen støttes fra og med Linux-kjernen 5.14. table ip x { set y { typeof ip daddr . tcp dport størrelse 65535 flagg dynamisk, timeout siste tidsavbrudd 1h } kjede z { type filter krok utgangsprioritetsfilter; politikk akseptere; oppdater @y {ip daddr. tcp dport } } } # nft list set ip x y table ip x { set y { typeof ip daddr . tcp dport størrelse 65535 flagg dynamisk, timeout siste tidsavbrudd 1h elementer = { 172.217.17.14 . 443 sist brukte 1s591ms timeout 1t utløper 59m58s409ms, 172.67.69.19. 443 sist brukte 4s636ms timeout 1t utløper 59m55s364ms, 142.250.201.72. 443 sist brukte 4s748ms timeout 1t utløper 59m55s252ms, 172.67.70.134 . 443 sist brukte 4s688ms timeout 1t utløper 59m55s312ms, 35.241.9.150. 443 sist brukte 5s204ms timeout 1t utløper 59m54s796ms, 138.201.122.174. 443 sist brukte 4s537ms timeout 1t utløper 59m55s463ms, 34.160.144.191. 443 sist brukte 5s205ms timeout 1t utløper 59m54s795ms, 130.211.23.194. 443 sist brukte 4s436ms timeout 1t utløper 59m55s564ms } } }
  • Lagt til muligheten til å definere kvoter i settlister. For å bestemme trafikkkvoten for hver mål-IP-adresse kan du for eksempel spesifisere: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; politikk akseptere; ip daddr @y drop } } # nft legg til element inet x y { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list regelsetttabell netdev x { set y { type ipv4_addr størrelse 65535 kvote over 10000 mbytes elementer. 8.8.8.8 kvote over 10000 mbyte brukt 196 byte } } kjede y { type filter krok utgangsenhet "eth0" prioritetsfilter; politikk akseptere; ip daddr @y drop } }
  • Bruk av konstanter i settlister er tillatt. For eksempel, når du bruker destinasjonsadressen og VLAN-ID som listenøkkel, kan du spesifisere VLAN-nummeret direkte (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id størrelse 2048 flagg dynamisk, timeout timeout 1m } kjede c { type filter hook ingress device eth0 prioritet 0; politikk akseptere; ether type != 8021q update @s { ether daddr . 123 } teller } }
  • Lagt til en ny "destroy"-kommando for å ubetinget slette objekter (i motsetning til delete-kommandoen, genererer den ikke ENOENT når du prøver å slette et manglende objekt). Krever minst Linux-kjerne 6.3-rc for å fungere. ødelegge tabellens IP-filter

Kilde: opennet.ru

Legg til en kommentar