ĂshtĂ« publikuar lĂ«shimi i filtrit tĂ« paketave nftables 0.9.9, i cili njĂ«zon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe urat rrjetore (synon tĂ« zĂ«vendĂ«sojĂ« iptables, ip6table, arptables dhe ebtables). NĂ« tĂ« njĂ«jtĂ«n kohĂ«, Ă«shtĂ« publikuar lĂ«shimi i bibliotekĂ«s pĂ«rkrahĂ«se libnftnl 1.2.0, e cila ofron njĂ« API tĂ« ulĂ«t pĂ«r ndĂ«rveprimin me nĂ«n-sistemin nf_tables. Ndryshimet e nevojshme pĂ«r funksionimin e lĂ«shimit nftables 0.9.9 janĂ« pĂ«rfshirĂ« nĂ« bĂ«rthamĂ«n Linux 5.13-rc1.
Paketa nftables përmban komponente të filtrit të paketave që funksionojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor punon nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga versione 3.13. Në nivelin e bërthamës ofrohet vetëm një ndërfaqe e përgjithshme, e pavaruar nga protokolli i veçantë dhe që ofron funksione bazë për nxjerrjen e të dhënave nga paketat, për kryerjen e operacioneve me të dhënat dhe menaxhimin e fluksit.
Rregullat për filtrimin dhe trajtuesit specifikë për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mënyrë të veçantë, që i ngjan BPF (Filtrat e Paketa Berkeley). Ky qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që operon në nivelin e bërthamës dhe të transferohet të gjitha funksionet e përpunimit të rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit. makinën virtuale, që ngjan me BPF (Berkeley Packet Filters). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që operon në nivelin e bërthamës dhe nxjerrjen e të gjitha funksioneve për të analizuar rregullat dhe logjikën e punës me protokollet në hapësirën e përdoruesit.
Novitetet kryesore:
- ĂshtĂ« realizuar mundĂ«sia e transferimit tĂ« pĂ«rpunimit flowtable nĂ« anĂ«n e adaptorit tĂ« rrjetit, e cila aktivizohet me ndihmĂ«n e flag âoffloadâ. Flowtable Ă«shtĂ« njĂ« mekanizĂ«m optimizimi tĂ« rrugĂ«s pĂ«r ridrejtimin e paketave, ku kalimi i plotĂ« pĂ«r tĂ« gjitha zinxhirĂ«t e pĂ«rpunimit tĂ« rregullave aplikohet vetĂ«m pĂ«r paketĂ«n e parĂ«, ndĂ«ra tĂ« gjitha paketat e tjera nĂ« rrjedhĂ« kalojnĂ« direkt. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname «wan» masquerade } }
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r lidhjen e tabelĂ«s me njĂ« flag pĂ«r lidhjen me pronarin, i cili lejon pĂ«rdorimin ekskluziv tĂ« tabelĂ«s nga procesi. Pasi tĂ« pĂ«rfundojĂ« procesi, tabela e lidhur me tĂ« fshihet automatikisht. Informacioni mbi procesin shfaqet nĂ« dump-in e rregullave nĂ« formĂ«n e njĂ« komentari: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r specifikimin IEEE 802.1ad (VLAN stacking ose QinQ), i cili pĂ«rcakton mjete pĂ«r vendosjen e disa etiketave VLAN nĂ« njĂ« kadĂ«r Ethernet. PĂ«r shembull, pĂ«r tĂ« verifikuar llojin e kadrit tĂ« jashtĂ«m Ethernet 8021ad dhe vlan id=342, mund tĂ« pĂ«rdoret konstrukti ⊠ether type 802.1ad vlan id 342 pĂ«r tĂ« verifikuar llojin e jashtĂ«m tĂ« kadrit Ethernet 8021ad/vlan id=1, i pĂ«rfshirĂ« 802.1q/vlan id=2 dhe inkapsulimin e mĂ«tejshĂ«m tĂ« paketĂ«s IP: ⊠ether type 802.1ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
- Shtuar mbështetje për menaxhimin e burimeve përmes një hierarkie të unifikuar cgroups 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 CPU, për rregullimin e konsumin të memories dhe për hyrjen/ dalje. Për shembull, për të kontrolluar nëse prindi i soket-it në nivelin e parë cgroupv2 përputhet me maskën "system.slice", mund të përdoret struktura: ... socket cgroupv2 nivel 1 "system.slice"
- Shtuar mundësia e verifikimit të komponenteve të paketave SCTP (funksionaliteti i nevojshëm do të shfaqet në bërthamën Linux 5.14). Për shembull, për të kontrolluar praninë e një chunk-u në paketë me tipin 'data' dhe fushën 'type': ... sctp chunk data exists ... sctp chunk data type 0
- Ekzekutimi i operacionit të ngarkesës së rregullave është përshpejtuar rreth dy herë me përdorimin e flag-ut "-f". Po ashtu, është përshpejtuar dalja e listës së rregullave.
- Ofruar një formë kompakte për kontrollin e vendosjes së biteve në flagje. Për shembull, për të kontrolluar që bitet e gjendjes snat dhe dnat nuk janë vendosur, mund të tregoni: ... ct status ! snat,dnat për të kontrolluar se bit-i syn është vendosur në maskën e biteve syn,ack: ... tcp flags syn / syn,ack për të kontrolluar që bitet fin dhe rst nuk janë vendosur në maskën e biteve syn,ack,fin,rst: ... tcp flags != fin,rst / syn,ack,fin,rst
- Lejohet përdorimi i fjalës kyçe "verdict" në përkufizimet typeof për set/map: add map x m { typeof iifname . ip protocol . th dport : verdict; }
Burimi: opennet.ru
