Lëshimi i filtrit të paketave nftables 1.0.7

Është publikuar lëshimi i filtrit të paketave nftables 1.0.7, duke unifikuar ndërfaqet e filtrimit të paketave për IPv4, IPv6, ARP dhe urat e rrjetit (që synojnë zëvendësimin e iptables, ip6table, arptables dhe ebtables). Paketa nftables përfshin komponentët e filtrit të paketave që funksionojnë në hapësirën e përdoruesit, ndërsa puna në nivel kernel ofrohet nga nënsistemi nf_tables, i cili ka qenë pjesë e kernelit Linux që nga lëshimi 3.13. Niveli i kernelit siguron vetëm një ndërfaqe gjenerike të pavarur nga protokolli që ofron funksione bazë për nxjerrjen e të dhënave nga paketat, kryerjen e operacioneve të të dhënave dhe kontrollin e rrjedhës.

Rregullat e filtrimit dhe mbajtësit specifikë të protokollit përpilohen në bytecode në hapësirën e përdoruesit, pas së cilës ky bajtkod ngarkohet në kernel duke përdorur ndërfaqen Netlink dhe ekzekutohet në kernel në një makinë virtuale speciale që të kujton BPF (Berkeley Packet Filters). Kjo qasje ju lejon të zvogëloni ndjeshëm madhësinë e kodit të filtrimit që funksionon në nivelin e kernelit dhe të zhvendosni të gjitha funksionet e rregullave të analizimit dhe logjikës për të punuar me protokollet në hapësirën e përdoruesit.

Ndryshimet kryesore:

  • Për sistemet që ekzekutojnë kernel Linux 6.2+, është shtuar mbështetje për hartëzimin e protokollit vxlan, geneve, gre dhe gretap, duke lejuar shprehje të thjeshta për të kontrolluar titujt në paketat e kapsuluara. Për shembull, për të kontrolluar adresën IP në kokën e një pakete të ndërlidhur nga VxLAN, tani mund të përdorni rregullat (pa pasur nevojë që fillimisht të de-encapsuloni kokën VxLAN dhe të lidhni filtrin me ndërfaqen vxlan0): ... udp dport 4789 vxlan ip protokolli 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 }
  • Mbështetja për bashkimin automatik të mbetjeve pas fshirjes së pjesshme të një elementi të listës së grupeve është zbatuar, e cila ju lejon të fshini një element ose një pjesë të një diapazoni nga një gamë ekzistuese (më parë, një varg mund të fshihej vetëm tërësisht). Për shembull, pas heqjes së elementit 25 nga një listë grupesh me diapazon 24-30 dhe 40-50, lista do të mbetet 24, 26-30 dhe 40-50. Rregullimet e kërkuara për funksionimin e bashkimit automatik do të ofrohen në versionet e mirëmbajtjes të degëve të qëndrueshme të kernelit 5.10+. # nft tabela e rregullave të listës ip x { set y { typeof tcp dport flags interval auto-merge element = { 24-30, 40-50 } } } # nft delete element ip xy { 25 } # nft listing rules tabela ip x { set y { lloji i tcp dport flamuj intervali i bashkimit automatik të elementeve = { 24, 26-30, 40-50 } }
  • Lejon përdorimin e kontakteve dhe intervaleve gjatë hartës së përkthimit të adresave (NAT). tabela ip nat { chain prerouting { type nat hook prerouting priority dstnat; pranimi i politikës; dnat te ip babi. 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 } këmbëngulës } }
  • Mbështetje e shtuar për shprehjen "e fundit", e cila ju lejon të zbuloni kohën e përdorimit të fundit të një elementi rregullash ose liste grupesh. Veçoria mbështetet duke filluar me kernel Linux 5.14. tabela ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic, timeout timeout fundit 1h } chain z { type filter hook output priority filter; pranimi i politikës; përditëso @y { ip daddr . tcp dport } } # nft list set ip xy tabela ip x { set y { typeof ip daddr . tcp dport madhësia 65535 flamur dinamike, koha e fundit e skadimit 1h elemente = { 172.217.17.14 . 443 e përdorur për herë të fundit 1s591ms 1 orë skadon 59m58s409ms, 172.67.69.19 . 443 e përdorur për herë të fundit 4s636ms 1 orë skadon 59m55s364ms, 142.250.201.72 . 443 i përdorur për herë të fundit 4s748ms 1 orë skadon 59m55s252ms, 172.67.70.134 . 443 e përdorur për herë të fundit 4s688ms 1 orë skadon 59m55s312ms, 35.241.9.150 . 443 kohëzgjatja e përdorur për herë të fundit 5s204ms 1 orë skadon 59m54s796ms, 138.201.122.174 . 443 i përdorur për herë të fundit 4s537ms 1 orë skadon 59m55s463ms, 34.160.144.191 . 443 kohëzgjatja e përdorur për herë të fundit 5s205ms 1 orë skadon 59m54s795ms, 130.211.23.194 . 443 e përdorur për herë të fundit 4s436ms skadimi 1h skadon 59m55s564ms } } }
  • U shtua aftësia për të përcaktuar kuotat në listat e grupeve. Për shembull, për të përcaktuar kuotën e trafikut për çdo adresë IP të synuar, mund të specifikoni: tabela netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device "eth0" priority filter; pranimi i politikës; ip daddr @y drop } } # nft shtoni elementin inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft Lista e rregullave tabela netdev x { set y { type ipv4_addr size 65535 kuota mbi 10000 mbytes elemente. 8.8.8.8 kuota mbi 10000 mbyte e përdorur 196 bajte } } zinxhir y { tip filtri i fiksimit të daljes së pajisjes "eth0" filtri prioritar; pranimi i politikës; ip daddr @y drop } }
  • Lejohet përdorimi i konstantave në listat e grupeve. Për shembull, kur përdorni adresën e destinacionit dhe ID VLAN si çelësin e listës, mund të specifikoni drejtpërdrejt numrin VLAN (daddr. 123): tabela netdev t { set s { typeof ether saddr . madhësia e id-it të vlanit 2048 flamuj dinamike, koha e skadimit 1 m } zinxhir c { lloji i pajisjes së hyrjes së fiksimit të filtrit eth0 prioriteti 0; pranimi i politikës; lloji eter != 8021q përditësim @s { ether daddr . 123 } numërues } }
  • Shtoi një komandë të re "destroy" për të fshirë pa kushte objekte (ndryshe nga komanda e fshirjes, ajo nuk gjeneron ENOENT kur përpiqet të fshijë një objekt që mungon). Kërkon të paktën kernel Linux 6.3-rc për të punuar. shkatërroni filtrin e ip-së së tabelës

Burimi: opennet.ru

Shto një koment