Lëshimi i filtrit të paketave nftables 0.9.9

Është publikuar lëshimi i filtrit të paketave nftables 0.9.9, 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). Në të njëjtën kohë, u publikua lirimi i bibliotekës shoqëruese libnftnl 1.2.0, duke siguruar një API të nivelit të ulët për ndërveprim me nënsistemin nf_tables. Ndryshimet e kërkuara për funksionimin e lëshimit të nftables 0.9.9 përfshihen në kernelin Linux 5.13-rc1.

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.

Risitë kryesore:

  • Mundësia për të zhvendosur përpunimin e tabelës së rrjedhës në anën e përshtatësit të rrjetit është zbatuar, e mundësuar duke përdorur flamurin 'offload'. Flowtable është një mekanizëm për optimizimin e rrugës së ridrejtimit të paketave, në të cilin kalimi i plotë i të gjithë zinxhirëve të përpunimit të rregullave zbatohet vetëm në paketën e parë, dhe të gjitha paketat e tjera në rrjedhë përcillen drejtpërdrejt. ip tabela globale { tabela e rrjedhës f { filtri i përparësisë së hyrjes së fiksimit + 1 pajisje = { lan3, lan0, wan } shkarkimi i flamujve } zinxhiri përpara { lloji i filtrit të fiksimit të përparësisë përpara; pranimi i politikës; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; pranimi i politikës; maskaradë oifname "wan" } }
  • Mbështetje e shtuar për bashkëngjitjen e një flamuri pronari në një tabelë për të siguruar përdorimin ekskluziv të tabelës nga një proces. Kur një proces përfundon, tabela e lidhur me të fshihet automatikisht. Informacioni rreth procesit shfaqet në deponimin e rregullave në formën e një komenti: tabela ip x { # progname nft flags pronar zinxhir y { type filtri hook input priority filter; pranimi i politikës; paketat kundër 1 bajt 309 } }
  • Mbështetje e shtuar për specifikimin IEEE 802.1ad (VLAN stacking ose QinQ), i cili përcakton një mjet për zëvendësimin e etiketave të shumta VLAN në një kornizë të vetme Ethernet. Për shembull, për të kontrolluar llojin e kornizës së jashtme Ethernet 8021ad dhe vlan id=342, mund të përdorni konstruksionin ... tipi ether 802.1ad vlan id 342 për të kontrolluar llojin e jashtëm të kornizës Ethernet 8021ad/vlan id=1, i vendosur 802.1 q/vlan id=2 dhe më tej enkapsulimi i paketës IP: ... tipi eter 8021ad vlan id 1 tip vlan 8021q vlan id 2 vlan tip ip counter
  • Mbështetje e shtuar për menaxhimin e burimeve duke përdorur cgroups të hierarkisë së unifikuar v2. Dallimi kryesor midis cgroups v2 dhe v1 është përdorimi i një hierarkie të përbashkët cgroups për të gjitha llojet e burimeve, në vend të hierarkive të veçanta për shpërndarjen e burimeve të CPU, për rregullimin e konsumit të memories dhe për I/O. Për shembull, për të kontrolluar nëse paraardhësi i një prize në nivelin e parë cgroupv2 përputhet me maskën "system.slice", mund të përdorni konstruksionin: ... fole cgroupv2 niveli 1 "system.slice"
  • U shtua aftësia për të kontrolluar komponentët e paketave SCTP (funksionaliteti i kërkuar për këtë do të shfaqet në kernelin Linux 5.14). Për shembull, për të kontrolluar nëse një paketë përmban një copë me llojin 'data' dhe fushën 'type': ... ekzistojnë të dhëna sctp chunk ... sctp chunk tipi i të dhënave 0
  • Ekzekutimi i operacionit të ngarkimit të rregullave është përshpejtuar afërsisht dy herë duke përdorur flamurin “-f”. Është përshpejtuar edhe prodhimi i listës së rregullave.
  • Ofrohet një formë kompakte për të kontrolluar nëse bitet e flamurit janë vendosur. Për shembull, për të kontrolluar që pjesët e statusit snat dhe dnat nuk janë vendosur, mund të specifikoni: ... statusi ct ! snat,dnat për të kontrolluar nëse biti syn është vendosur në bitmask syn,ack: ... tcp flamuj syn / syn,ack për të kontrolluar që bit fin dhe rst nuk janë vendosur në bitmask syn,ack,fin,rst: ... flamuj tcp ! = fin,rst / syn,ack,fin,rst
  • Lejo fjalën kyçe "vendim" në përkufizimet e llojit të grupit/hartës: shtoni hartën xm { typeof iifname . protokolli ip th dport : verdikt ;}

Burimi: opennet.ru

Shto një koment