nftables pakiti chujio 0.9.9 kutolewa

Kutolewa kwa vichujio vya pakiti 0.9.9 kumechapishwa, kuunganisha violesura vya vichujio vya pakiti kwa IPv4, IPv6, ARP na madaraja ya mtandao (inayolenga kuchukua nafasi ya iptables, ip6table, arptables na ebtables). Wakati huo huo, kutolewa kwa maktaba shirikishi libnftnl 1.2.0 ilichapishwa, ikitoa API ya kiwango cha chini cha kuingiliana na mfumo mdogo wa nf_tables. Mabadiliko yanayohitajika kwa nftables 0.9.9 kutolewa kufanya kazi yanajumuishwa kwenye Linux kernel 5.13-rc1.

Kifurushi cha nftables ni pamoja na vipengee vya kichujio cha pakiti ambacho hutumika katika nafasi ya mtumiaji, wakati kazi ya kiwango cha kernel inatolewa na mfumo mdogo wa nf_tables, ambao umekuwa sehemu ya kernel ya Linux tangu kutolewa kwa 3.13. Kiwango cha kernel hutoa kiolesura cha kawaida kinachojitegemea cha itifaki ambacho hutoa kazi za kimsingi za kutoa data kutoka kwa pakiti, kutekeleza shughuli za data na udhibiti wa mtiririko.

Sheria za kuchuja na vidhibiti mahususi vya itifaki hukusanywa kuwa bytecode katika nafasi ya mtumiaji, baada ya hapo bytecode hii hupakiwa kwenye kerneli kwa kutumia kiolesura cha Netlink na kutekelezwa kwenye kernel katika mashine maalum ya pepe inayowakumbusha BPF (Berkeley Packet Filters). Njia hii hukuruhusu kupunguza kwa kiasi kikubwa saizi ya msimbo wa kuchuja unaoendesha kwenye kiwango cha kernel na kusonga kazi zote za kanuni na mantiki ya kufanya kazi na itifaki kwenye nafasi ya mtumiaji.

Ubunifu kuu:

  • Uwezo wa kuhamisha uchakataji wa mtiririko hadi upande wa adapta ya mtandao umetekelezwa, umewashwa kwa kutumia alama ya 'kupakia'. Flowtable ni utaratibu wa kuboresha njia ya uelekezaji wa pakiti, ambayo kifungu kamili cha minyororo yote ya usindikaji wa sheria hutumiwa tu kwa pakiti ya kwanza, na pakiti nyingine zote katika mtiririko zinatumwa moja kwa moja. jedwali ip kimataifa { flowtable f { ndoano ingress kipaumbele chujio + 1 vifaa = { lan3, lan0, wan } bendera offload } mnyororo mbele { aina chujio ndoano mbele chujio kipaumbele; kukubali sera; itifaki ya ip { tcp, udp } mtiririko ongeza @f } chapisho la mnyororo { type nat hook postrouting priority filter; kukubali sera; oifname "wan" kinyago }}
  • Imeongeza usaidizi wa kuambatisha bendera ya mmiliki kwenye jedwali ili kuhakikisha matumizi ya kipekee ya jedwali kwa mchakato. Mchakato unapoisha, meza inayohusishwa nayo inafutwa kiatomati. Taarifa kuhusu mchakato huonyeshwa katika utupaji wa sheria kwa namna ya maoni: jedwali ip x { # progname nft bendera mmiliki mnyororo y { aina chujio pembejeo pembejeo kipaumbele chujio; kukubali sera; pakiti za kaunta 1 byte 309}}
  • Usaidizi ulioongezwa wa vipimo vya IEEE 802.1ad (VLAN stacking au QinQ), ambayo hufafanua njia ya kubadilisha lebo nyingi za VLAN kwenye fremu moja ya Ethaneti. Kwa mfano, ili kuangalia aina ya fremu ya Ethaneti ya nje 8021ad na vlan id=342, unaweza kutumia ujenzi ... etha aina 802.1ad vlan id 342 kuangalia aina ya nje ya fremu ya Ethaneti 8021ad/vlan id=1, iliyowekwa 802.1 q/vlan id=2 na usimbaji zaidi wa pakiti ya IP: ... aina ya etha 8021ad vlan id 1 aina ya 8021q vlan id 2 vlan aina ya ip counter
  • Usaidizi ulioongezwa wa kudhibiti rasilimali kwa kutumia vikundi vilivyounganishwa vya uongozi v2. Tofauti kuu kati ya vikundi v2 na v1 ni matumizi ya safu ya vikundi vya kawaida kwa kila aina ya rasilimali, badala ya safu tofauti za ugawaji rasilimali za CPU, kudhibiti matumizi ya kumbukumbu, na kwa I/O. Kwa mfano, ili kuangalia kama babu wa soketi katika ngazi ya kwanza ya cgroupv2 inalingana na mask ya "system.slice", unaweza kutumia ujenzi: ... socket cgroupv2 level 1 "system.slice"
  • Imeongeza uwezo wa kuangalia vipengele vya pakiti za SCTP (utendaji unaohitajika kwa hili utaonekana kwenye kinu cha Linux 5.14). Kwa mfano, kuangalia kama pakiti ina kipande chenye aina ya 'data' na 'aina' ya uga: ... data ya sctp chunk ipo ... sctp chunk data type 0.
  • Utekelezaji wa operesheni ya upakiaji wa sheria umeharakishwa kwa takriban mara mbili kwa kutumia alama ya "-f". Matokeo ya orodha ya sheria pia yameharakishwa.
  • Fomu fupi ya kuangalia ikiwa vipande vya bendera vimewekwa imetolewa. Kwa mfano, ili kuangalia kwamba bits za hali ya snat na dnat hazijawekwa, unaweza kutaja: ... ct status ! snat,dnat ili kuangalia kuwa syn bit imewekwa katika bitmask syn,ack: ... tcp flags syn / syn,ack ili kuangalia kuwa fin na rst bits hazijawekwa kwenye bitmask syn,ack,fin,rst: ... bendera za tcp ! = fin,rst / syn,ack,fin,rst
  • Ruhusu neno kuu la "hukumu" katika ufafanuzi wa aina ya kuweka/ramani: ongeza ramani xm { typeof iifname . itifaki ya ip th dport : uamuzi ;}

Chanzo: opennet.ru

Kuongeza maoni