nftables pakešu filtra izlaišana 1.0.7

Ir publicēts nftables 1.0.7 pakešu filtra laidiens, kas apvieno IPv4, IPv6, ARP un tīkla tiltu pakešu filtrēšanas saskarnes (kuras mērķis ir aizstāt iptables, ip6table, arptables un ebtables). Pakotnē nftables ir iekļauti pakešu filtru komponenti, kas darbojas lietotāja telpā, savukārt kodola līmeni nodrošina apakšsistēma nf_tables, kas ir daļa no Linux kodola kopš 3.13. izlaiduma. Kodola līmenī tiek nodrošināts tikai vispārējs no protokola neatkarīgs interfeiss, kas nodrošina pamatfunkcijas datu ieguvei no paketēm, operāciju veikšanai ar datiem un plūsmas kontrolei.

Paši filtrēšanas noteikumi un protokolam raksturīgie apstrādātāji tiek apkopoti lietotāja telpas baitkodā, pēc kura šis baitkods tiek ielādēts kodolā, izmantojot Netlink interfeisu, un tiek izpildīts kodolā īpašā virtuālajā mašīnā, kas atgādina BPF (Berkeley Packet Filters). Šī pieeja ļauj ievērojami samazināt kodola līmenī strādājošā filtrēšanas koda lielumu un pārvietot visas parsēšanas noteikumu funkcijas un darba ar protokoliem loģiku lietotāja telpā.

Galvenās izmaiņas:

  • Sistēmām, kurās darbojas Linux kodols 6.2+, ir pievienots vxlan, geneve, gre un gretap protokolu kartējumu atbalsts, ļaujot vienkāršām izteiksmēm pārbaudīt galvenes iekapsulētās paketēs. Piemēram, lai pārbaudītu IP adresi VxLAN ligzdotas paketes galvenē, tagad varat izmantot noteikumus (bez nepieciešamības vispirms dekapsulēt VxLAN galveni un saistīt filtru ar vxlan0 interfeisu): ... udp dport 4789 vxlan ip protokols 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 }
  • Ir ieviests atbalsts automātiskai atlikumu apvienošanai pēc kopu saraksta elementa daļējas dzēšanas, kas ļauj izdzēst elementu vai diapazona daļu no esoša diapazona (iepriekš diapazonu varēja dzēst tikai pilnībā). Piemēram, pēc elementa 25 noņemšanas no kopu saraksta ar diapazoniem 24-30 un 40-50, saraksts paliks 24, 26-30 un 40-50. Labojumi, kas nepieciešami, lai automātiskā apvienošana darbotos, tiks piedāvāti 5.10+ kodola stabilo atzaru uzturēšanas laidienos. # nft sarakstu noteikumu kopas tabula ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft list kārtulu tabula ip x { kopa y {tcp dport karogu intervāla automātiskās sapludināšanas elementu veids = {24, 26-30, 40-50}}
  • Ļauj izmantot kontaktpersonas un diapazonus, kartējot adrešu tulkošanu (NAT). tabula ip nat { ķēdes prerouting { type nat hook prerouting priority dstnat; pieņemt politiku; dnat uz ip daddr. tcp dport karte { 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 } noturīgs } }
  • Pievienots atbalsts “pēdējai” izteiksmei, kas ļauj uzzināt kārtulas elementa vai kopu saraksta pēdējās lietošanas laiku. Funkcija tiek atbalstīta, sākot ar Linux kodolu 5.14. tabula ip x { set y { typeof ip daddr . tcp dport size 65535 karodziņi dynamic,timeout pēdējais taimauts 1h } chain z { type filter hook output priority filter; pieņemt politiku; atjaunināt @y { ip daddr . tcp dport } } } # nft list set ip xy table ip x { set y { typeof ip daddr . tcp dport izmērs 65535 atzīmē dinamisku, noildze pēdējais taimauts 1h elementi = { 172.217.17.14 . 443 pēdējo reizi lietots 1 s591 ms noildze 1 h beidzas 59 min 58 s409 ms, 172.67.69.19. 443 pēdējo reizi lietots 4 s636 ms taimauts 1 h beidzas 59 m55 s364 ms, 142.250.201.72. 443 pēdējo reizi lietots 4 s748 ms noildze 1 h beidzas 59 min 55 s252 ms, 172.67.70.134 . 443 pēdējo reizi lietots 4 s688 ms noildze 1 h beidzas 59 min 55 s312 ms, 35.241.9.150. 443 pēdējo reizi lietots 5s204ms noildze 1h beidzas 59m54s796ms, 138.201.122.174 . 443 pēdējo reizi lietots 4 s537 ms taimauts 1 h beidzas 59 m55 s463 ms, 34.160.144.191. 443 pēdējo reizi lietots 5s205ms noildze 1h beidzas 59m54s795ms, 130.211.23.194 . 443 pēdējo reizi lietots 4 s436 ms noildze 1 h beidzas 59 min 55 s564 ms } } }
  • Pievienota iespēja noteikt kvotas komplektu sarakstos. Piemēram, lai noteiktu trafika kvotu katrai mērķa IP adresei, varat norādīt: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; pieņemt politiku; ip daddr @ y drop } } # nft add element inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft saraksta noteikumu tabula netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 elements = . 10000 kvota virs 196 MB, izmantoti 0 baiti } } ķēde y { tipa filtra āķa izejas ierīces “ethXNUMX” prioritātes filtrs; pieņemt politiku; ip tētis @y drop } }
  • Ir atļauts izmantot konstantes kopu sarakstos. Piemēram, ja kā saraksta atslēgu izmantojat galamērķa adresi un VLAN ID, varat tieši norādīt VLAN numuru (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id izmērs 2048 karodziņi dinamisks, taimauta taimauts 1 m } ķēde c { tipa filtra āķa ieejas ierīce eth0 prioritāte 0; pieņemt politiku; ētera tips != 8021q update @s { ether daddr . 123 } skaitītājs } }
  • Pievienota jauna komanda "iznīcināt", lai bez nosacījumiem dzēstu objektus (atšķirībā no dzēšanas komandas, tā neģenerē ENOENT, mēģinot izdzēst trūkstošo objektu). Lai darbotos, ir nepieciešams vismaz Linux kodols 6.3-rc. iznīcināt tabulas ip filtru

Avots: opennet.ru

Pievieno komentāru