nftables pakiti chujio 0.9.9 kutolewa

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° nftables 0.9.9, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйсы Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для IPv4, IPv6, ARP ΠΈ сСтСвых мостов (Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠ΅Π½Ρƒ iptables, ip6table, arptables ΠΈ ebtables). ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libnftnl 1.2.0, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ API для взаимодСйствия с подсистСмой nf_tables. НСобходимыС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ выпуска nftables 0.9.9 измСнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² состав ядра Linux 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:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выноса ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ flowtable Π½Π° сторону сСтСвого Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° β€˜offload’. Flowtable прСдставляСт собой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ пСрСнаправлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ всСх Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ» примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. 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 } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прикрСплСния ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„Π»Π°Π³Π° для привязки ΠΊ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ эксклюзивноС использованиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ процСссом. ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ процСсса привязанная ΠΊ Π½Π΅ΠΌΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Π° автоматичСски удаляСтся. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ процСссС отобраТаСтся Π² Π΄Π°ΠΌΠΏΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» Π² Ρ„ΠΎΡ€ΠΌΠ΅ коммСнтария: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° спСцификации IEEE 802.1ad (VLAN stacking ΠΈΠ»ΠΈ QinQ), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ срСдства для подстановки Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² VLAN Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π΄Ρ€ Ethernet. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° внСшнСго Ethernet-ΠΊΠ°Π΄Ρ€Π° 8021ad ΠΈ vlan id=342 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ … ether type 802.1ad vlan id 342 для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ внСшнСго Ρ‚ΠΈΠΏΠ° Ethernet-ΠΊΠ°Π΄Ρ€Π° 8021ad/vlan id=1, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ 802.1q/vlan id=2 ΠΈ дальнСйшСй инкапсуляции IP-ΠΏΠ°ΠΊΠ΅Ρ‚Π°: … ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° управлСния рСсурсами ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ cgroups v2. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ cgroups v2 ΠΎΡ‚ v1 являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ cgroups для всСх Π²ΠΈΠ΄ΠΎΠ² рСсурсов, вмСсто Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ для распрСдСлСния рСсурсов CPU, для рСгулирования потрСблСния памяти ΠΈ для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствуСт Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΠΊ сокСта Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ cgroupv2 маскС Β«system.sliceΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚ΡƒΠΊΡ†ΠΈΡŽ: … socket cgroupv2 level 1 Β«system.sliceΒ»
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ составных частСй ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² SCTP (нСобходимая для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ появится Π² ядрС Linux 5.14). НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ chunk-Π° с Ρ‚ΠΈΠΏΠΎΠΌ β€˜data’ ΠΈ ΠΏΠΎΠ»Π΅ΠΌ β€˜type’: … sctp chunk data exists … sctp chunk data type 0
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° ускорСно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° Β«-fΒ». Π’Π°ΠΊΠΆΠ΅ ускорСн Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΏΡ€Π°Π²ΠΈΠ».
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° компактная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ установки Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π»Π°Π³Π°Ρ…. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ состояния snat ΠΈ dnat Π½Π΅ установлСны ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ: … ct status ! snat,dnat для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚ syn установлСн Π² Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маскС syn,ack: … tcp flags syn / syn,ack для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ fin ΠΈ rst Π½Π΅ установлСны Π² Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маскС syn,ack,fin,rst: … tcp flags != fin,rst / syn,ack,fin,rst
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«verdictΒ» Π² опрСдСлСниях typeof для set/map: add map x m { typeof iifname . ip protocol . th dport : verdict ;}

Chanzo: opennet.ru

Kuongeza maoni