nftables pakettfiltri 1.0.7 väljalase

Avaldatud on paketifiltri nftables 1.0.7 väljalase, mis ühendab IPv4, IPv6, ARP ja võrgusildade pakettfiltri liidesed (eesmärgiks iptables, ip6table, arptables ja ebtables asendamine). Pakett nftables sisaldab pakettfiltri komponente, mis töötavad kasutajaruumis, samas kui kerneli tasemel töö tagab alamsüsteem nf_tables, mis on Linuxi kerneli osa olnud alates versioonist 3.13. Kerneli tase pakub ainult üldist protokollist sõltumatut liidest, mis pakub põhifunktsioone pakettidest andmete eraldamiseks, andmetoimingute tegemiseks ja voo juhtimiseks.

Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumis baitkoodiks, misjärel laaditakse see baitkood Netlink liidese abil kernelisse ja käivitatakse kernelis spetsiaalses BPF-i meenutavas virtuaalmasinas (Berkeley Packet Filters). Selline lähenemine võimaldab oluliselt vähendada kerneli tasemel töötava filtreerimiskoodi suurust ning teisaldada kõik sõelumisreeglite ja protokollidega töötamise loogika funktsioonid kasutajaruumi.

Peamised muudatused:

  • Süsteemidele, mis käitavad Linuxi kernel 6.2+, on lisatud vxlani, geneve, gre ja gretap protokolli vastenduste tugi, mis võimaldab lihtsate avaldiste abil kontrollida kapseldatud pakettide päiseid. Näiteks VxLAN-i pesastatud paketi päises oleva IP-aadressi kontrollimiseks võite nüüd kasutada reegleid (ilma, et oleks vaja VxLAN-i päist esmalt dekapseldada ja filtrit vxlan0 liidesega siduda): ... 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 }
  • Rakendatud on jääkide automaatse liitmise tugi pärast komplektiloendi elemendi osalist kustutamist, mis võimaldab kustutada elemendi või vahemiku osa olemasolevast vahemikust (varem sai vahemiku ainult täielikult kustutada). Näiteks pärast elemendi 25 eemaldamist komplektide loendist vahemikega 24-30 ja 40-50 jääb loendiks 24, 26-30 ja 40-50. Automaatse ühendamise toimimiseks vajalikke parandusi pakutakse kerneli 5.10+ stabiilsete harude hooldusväljaannetes. # nft loendi reeglistiku tabel ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft nimekirja reeglistiku tabel ip x { set y { tcp dport lippude intervallide automaatse liitmise elementide tüüp = { 24, 26-30, 40-50 } }
  • Võimaldab aadressi tõlkimise (NAT) kaardistamisel kasutada kontakte ja vahemikke. tabel ip nat { ahela eelmarsruutimine { type nat hook premarsruutimise prioriteet dstnat; poliitika aktsepteerima; dnat ip-le isa. tcp dport kaart { 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 } püsiv } }
  • Lisatud on "viimase" avaldise tugi, mis võimaldab teil teada saada reeglielemendi või komplekti loendi viimase kasutamise aja. Seda funktsiooni toetatakse alates Linuxi kernelist 5.14. tabel ip x { set y { typeof ip daddr . tcp dport size 65535 liputab dynamic,timeout viimane aeg 1h } ahel z { type filter hook output priority filter; poliitika aktsepteerima; värskenda @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport suurus 65535 märgib dünaamiline, timeout viimane aegumine 1h elemente = { 172.217.17.14 . 443 viimati kasutatud 1s591ms ajalõpp 1h aegub 59m58s409ms, 172.67.69.19 . 443 viimati kasutatud 4s636ms timeout 1h aegub 59m55s364ms, 142.250.201.72 . 443 viimati kasutatud 4s748ms timeout 1h aegub 59m55s252ms, 172.67.70.134 . 443 viimati kasutatud 4s688ms timeout 1h aegub 59m55s312ms, 35.241.9.150 . 443 viimati kasutatud 5s204ms timeout 1h aegub 59m54s796ms, 138.201.122.174 . 443 viimati kasutatud 4s537ms timeout 1h aegub 59m55s463ms, 34.160.144.191 . 443 viimati kasutatud 5s205ms timeout 1h aegub 59m54s795ms, 130.211.23.194 . 443 viimati kasutatud 4s436ms timeout 1h aegub 59m55s564ms } } }
  • Lisatud on võimalus määrata kvoote komplektide loendites. Näiteks iga siht-IP-aadressi liikluskvoodi määramiseks saate määrata: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; poliitika aktsepteerima; ip daddr @y drop } } # nft lisa element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft loendi reeglistikutabel netdev x { set y { type ipv4_addr size 65535 kvoot over 10000 mbytes elements = { 8.8.8.8 mbytes elements = . 10000 kvoot üle 196 MB kasutatud 0 baiti } } chain y { type filter hook egress device “ethXNUMX” priority filter; poliitika aktsepteerima; ip isa @y drop } }
  • Konstantide kasutamine komplektiloendites on lubatud. Näiteks kui kasutate loendi võtmena sihtkoha aadressi ja VLAN-i ID-d, saate otse määrata VLAN-i numbri (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id suurus 2048 märgib dünaamiline,timeout timeout 1m } ahel c { type filter hook ingress device eth0 prioriteet 0; poliitika aktsepteerima; eetritüüp != 8021q värskendus @s { eeter isa . 123 } loendur } }
  • Lisatud on uus käsk "hävitada" objektide tingimusteta kustutamiseks (erinevalt kustutamiskäsklusest ei genereeri see puuduva objekti kustutamisel ENOENT-i). Töötamiseks on vaja vähemalt Linuxi kerneli 6.3-rc. hävitada tabeli ip-filter

Allikas: opennet.ru

Lisa kommentaar