πŸ”„ Π‘Ρ…Π΅ΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Zapret 2

О Ρ‡Ρ‘ΠΌ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Zapret 2: ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° ΠΈΠ· ядра ОБ Π΄ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚Π° Β«ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ / ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ / Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒΒ». Π Π°Π·ΠΎΠ±Ρ€Π°Π½Π° каТдая стадия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° nfqws2 β€” диссСкция, conntrack, распознаваниС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, рСконструкция, Π²Ρ‹Π±ΠΎΡ€ профиля, Π²Ρ‹Π·ΠΎΠ² Lua-инстансов ΠΈ агрСгация Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ΠΎΠ². ИзлоТСно ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ. ΠŸΡ€ΠΎ состав ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹) β€” сосСдняя Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°; ΠΏΡ€ΠΎ сам ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ --lua-desync β€” desync.

TL;DR

  • Π•Π΄ΠΈΠ½ΠΈΡ†Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” IP-ΠΏΠ°ΠΊΠ΅Ρ‚. Π―Π΄Ρ€ΠΎ ОБ ΠΎΡ‚Π΄Π°Ρ‘Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² nfqws2 (процСсс пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ), ΠΈ это Π΄ΠΎΡ€ΠΎΠ³ΠΎ β€” поэтому лишнСС ΠΎΡ‚ΡΠ΅ΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.
  • ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€: диссСкция (Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΠΎ слоям) β†’ conntrack (привязка ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ) β†’ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° β†’ ΠΏΡ€ΠΈ Π½ΡƒΠΆΠ΄Π΅ рСконструкция ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² β†’ Π²Ρ‹Π±ΠΎΡ€ профиля ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ β†’ Π²Ρ‹Π·ΠΎΠ² Lua-инстансов β†’ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚.
  • ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ выбираСтся ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ (L3/L4/L7, ΠΏΠΎΡ€Ρ‚Ρ‹, ipset, хостлисты) ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² записи ΠΏΠΎΡ‚ΠΎΠΊΠ°; пСрСсматриваСтся максимум Π΄Π²Π°ΠΆΠ΄Ρ‹ β€” ΠΏΡ€ΠΈ распознавании L7-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ хоста.
  • Π˜Π½ΡΡ‚Π°Π½Ρ β€” ΠΎΠ΄ΠΈΠ½ Π²Ρ‹Π·ΠΎΠ² Lua-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· профиля (Ρ‡Π΅Ρ€Π΅Π· --lua-desync). Π˜Π½ΡΡ‚Π°Π½ΡΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ строго ΠΏΠΎ порядку; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ PASS / MODIFY / DROP, ΠΈ ΠΎΠ½ΠΈ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.
  • Π Π°Π΄ΠΈ экономии CPU Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ cutoff (инстанс/Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅/вСсь ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Lua) ΠΈ Ρ€Π΅ΠΆΠΈΠΌ оркСстратора β€” инстанса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам управляСт Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ….

ΠŸΡƒΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‡Π΅Ρ€Π΅Π· nfqws2 ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Π² ядрС ОБ, Π΄ΠΈΡΡΠ΅ΠΊΡ†ΠΈΡŽ, conntrack, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π°, ΠΏΡ€ΠΈ нСобходимости сборку reasm, Π²Ρ‹Π±ΠΎΡ€ профиля, Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Lua-инстансов ΠΈ свСдСниС Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ΠΎΠ², послС Ρ‡Π΅Π³ΠΎ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚, измСняСтся ΠΈΠ»ΠΈ выбрасываСтся. Cutoff ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ инстанс ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°. 1. Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° 2. Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ 0 ΠŸΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ Π² ядрС ОБ, ранняя Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ 1 ДиссСкция ΠΏΠ°ΠΊΠ΅Ρ‚ β†’ поля ip, tcp, udp, payload 2 conntrack привязка ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ: Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, счётчики 3 Π’ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° TLS ClientHello, HTTP, QUIC… 4 reasm / decrypt запрос ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² собираСм 5 ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ совпавший ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ; кэш 6 Π˜Π½ΡΡ‚Π°Π½ΡΡ‹ Lua --lua-desync строго ΠΏΠΎ порядку 7 Π’Π΅Ρ€Π΄ΠΈΠΊΡ‚Ρ‹ PASS Β· MODIFY Β· DROP: сильнСйший ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ 8 Π˜Ρ‚ΠΎΠ³ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Cutoff инстанс ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°: лишниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Lua Π½Π΅ ΠΈΠ΄ΡƒΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠŸΡƒΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ любой ΠΎΡ‚ΠΊΠ°Π· Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ случаСтся Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ€Π°Π½Π½ΠΈΡ… стадий β€” Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Lua.

Бтадия 0. Π—Π°Ρ‡Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²ΠΎΠΎΠ±Ρ‰Π΅ пСрСдаётся Π² nfqws2

Π‘Π΅Ρ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с IP-ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, поэтому Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠŸΡ€ΠΈΡ‘ΠΌΠΎΠΌ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² занимаСтся сСтСвая подсистСма Π² ядрС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. А nfqws2 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Π² ядрС (kernel mode), Π° ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ процСсс пространства ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (user mode). Π—Π½Π°Ρ‡ΠΈΡ‚, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг β€” Β«Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒΒ» Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈΠ· ядра ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² процСсс nfqws2.

ВсС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ срСдства ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π° (Linux β€” iptables/nftables, FreeBSD β€” ipfw, OpenBSD β€” pf, Windows β€” WinDivert; ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² структура ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) ΡƒΠΌΠ΅ΡŽΡ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΅Ρ‰Ρ‘ Π½Π° сторонС ядра. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ β€” Π² Linux.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ранняя Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π°

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈΠ· ядра Π² user mode ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ сопряТСна со Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹ΠΌΠΈ расходами (это ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ контСкста ΠΌΠ΅ΠΆΠ΄Ρƒ ядром ΠΈ процСссом Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚). Π§Π΅ΠΌ большС Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΎΡ‚ΡΠ΅Ρ‡ΡŒ прямо Π½Π° ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Π΅, Ρ‚Π΅ΠΌ мСньшС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ этот Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ β€” ΠΈ Ρ‚Π΅ΠΌ Π½ΠΈΠΆΠ΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π° процСссор. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: отсСкай лишнСС ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅.

Бтадия 1. ДиссСкция β€” Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π° части

ΠŸΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΈΡˆΡ‘Π» Π² nfqws2. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ Π΄Π΅Π»Π°Π΅Ρ‚, β€” Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ уровням ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI: выдСляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ip, ipv6, tcp, udp ΠΈ ΠΏΠΎΠ»Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (payload). Π­Ρ‚ΠΎ называСтся диссСкциСй, Π° Π΅Ρ‘ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” диссСкт (dis): прСдставлСниС ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² Π²ΠΈΠ΄Π΅ структур, ΠΊ полям ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΎΡ‰Π΅ говоря

ΠŸΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ β€” это сплошная Π»Π΅Π½Ρ‚Π° Π±Π°ΠΉΡ‚. ДиссСкция «раскладываСт» Π΅Ρ‘ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΡ‡ΠΊΠ°ΠΌ: Π²ΠΎΡ‚ IP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π²ΠΎΡ‚ TCP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ, Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. ПослС этого Lua-ΠΊΠΎΠ΄ ΠΈ C-ядро ΠΌΠΎΠ³ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ поля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, TCP sequence number), Π° Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚Ρ‹ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. МодСль OSI β€” стандартноС Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сСти Π½Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ: IP β€” сСтСвой ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, TCP/UDP β€” транспортный, Π΄Π°Π½Π½Ρ‹Π΅ прилоТСния β€” Π²Ρ‹ΡˆΠ΅.

Бтадия 2. conntrack β€” привязка ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΡƒ

Π”Π°Π»ΡŒΡˆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ встроСнная Π² nfqws2 подсистСма conntrack (connection tracking, отслСТиваниС соСдинСний) β€” систСма ΡƒΡ‡Ρ‘Ρ‚Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². По Π΄Π°Π½Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ L3/L4 ΠΏΠ°ΠΊΠ΅Ρ‚Π° (адрСса, ΠΏΠΎΡ€Ρ‚Ρ‹, ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ») ищСтся ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ запись ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ΅; Ссли Π΅Ρ‘ Π½Π΅Ρ‚ β€” создаётся новая. Π‘Ρ‚Π°Ρ€Ρ‹Π΅ записи, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄Π°Π²Π½ΠΎ Π½Π΅Ρ‚ активности, ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ.

Π§Ρ‚ΠΎ conntrack Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°:

  • отслСТиваСт логичСскоС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (входящий / исходящий);
  • Π²Π΅Π΄Ρ‘Ρ‚ подсчёт ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ Π±Π°ΠΉΡ‚ Π² ΠΎΠ±Π΅ стороны;
  • слСдит Π·Π° sequence numbers для TCP;
  • ΠΏΡ€ΠΈ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сборки сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ нСсколькими ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ (см. ΡΡ‚Π°Π΄ΠΈΡŽ 4).

ΠŸΡ€ΠΎΡ‰Π΅ говоря

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ сам ΠΏΠΎ сСбС ΠΌΠ°Π»ΠΎ Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚. conntrack связываСт ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² Β«Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Β» (ΠΏΠΎΡ‚ΠΎΠΊ) ΠΌΠ΅ΠΆΠ΄Ρƒ двумя сторонами ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚ ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ контСкст: сколько всСго ΠΏΡ€ΠΎΡˆΠ»ΠΎ, Π² ΠΊΠ°ΠΊΡƒΡŽ сторону, Π½Π° ΠΊΠ°ΠΊΠΎΠΌ мСстС ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΡ‹ сСйчас. Π­Ρ‚ΠΎΡ‚ контСкст Π½ΡƒΠΆΠ΅Π½ ΠΏΠΎΡ‡Ρ‚ΠΈ всСм дальнСйшим Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌ.

Бтадия 3. Π’ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°

По сигнатурам опрСдСляСтся Ρ‚ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° β€” Ρ‡Ρ‚ΠΎ Π·Π° содСрТимоС Π² этом ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ (ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²): TLS ClientHello, HTTP-запрос, QUIC Initial ΠΈ Ρ‚. Π΄. (см. payload). На основании Ρ‚ΠΈΠΏΠ° ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° опрСдСляСтся Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° всСго ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΈ ΠΎΠ½ закрСпляСтся Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π΅Π³ΠΎ сущСствования.

Π’ΠΎΠ½ΠΊΠΎΡΡ‚ΡŒ: Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄ΠΎΠ². НапримСр, ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° XMPP ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ нСсёт ΠΈ спСцифичСскиС XMPP-сообщСния, ΠΈ сообщСния, связанныС с TLS. Π’ΠΈΠΏ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΡ€ΠΈ этом остаётся XMPP, Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° β€” ΠΊΠ°ΠΊ извСстныС, Ρ‚Π°ΠΊ ΠΈ нСизвСстныС. НСраспознанный ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄ помСчаСтся Ρ‚ΠΈΠΏΠΎΠΌ unknown.

ΠŸΡ€ΠΎΡ‰Π΅ говоря

Β«ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°Β» β€” это ярлык Π½Π° вСсь Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ (ΠΎΠ½ ставится ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Π½Π΅ мСняСтся). Β«Π’ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π°Β» β€” ярлык Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° (Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ). МногиС ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π° Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Бтадия 4. РСконструкция сообщСния ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (reasm / decrypt)

Иногда ΠΎΠ΄Π½ΠΎ логичСскоС сообщСниС Π½Π΅ помСщаСтся Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ‚ (классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” большой TLS ClientHello с post-quantum ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ). Если для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° выясняСтся, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½Π° рСконструкция ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², nfqws2:

  1. Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒ эти ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, привязывая ΠΈΡ… ΠΊ записи Π² conntrack;
  2. Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡƒΡŽ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ (Π΄Π΅Ρ€ΠΆΠΈΡ‚, ΠΏΠΎΠΊΠ° Π½Π΅ собСрёт всё);
  3. послС ΠΏΡ€ΠΈΡ‘ΠΌΠ° всСх частСй выполняСт Ρ€Π΅ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π° ΠΏΡ€ΠΈ нСобходимости β€” Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΡƒ составного ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π°.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΡƒΠΆΠ΅ Π½Π° Π±Π°Π·Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ собранного ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° β€” ΠΎΠ½ называСтся reasm (reassembled, рСассСмблированный), Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сборки с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΠΉ β€” decrypt.

ΠŸΡ€ΠΎΡ‰Π΅ говоря

Если сообщСниС Β«Ρ€Π°Π·Ρ€Π΅Π·Π°Π½ΠΎΒ» ΡΠ΅Ρ‚ΡŒΡŽ Π½Π° нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², nfqws2 ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈΡ…, склСиваСт ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Ρ†Π΅Π»Ρ‹ΠΉ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄ (reasm) ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π° Π΄Π°Ρ‘Ρ‚ стратСгиям Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΉ. Π˜Π½Π°Ρ‡Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄ΠΎΠΌΠ΅Π½ Π² SNI ΠΌΠΎΠ³ Π±Ρ‹ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·ΠΎΡ€Π²Π°Π½ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, ΠΈ Π΅Π³ΠΎ нСльзя Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π΅Π·Π°Ρ‚ΡŒ.

Бтадия 5. ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠΎ профилям

Когда информация ΠΎ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°, наступаСт ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ систСмы классификации ΠΏΠΎ профилям. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ β€” это Π½Π°Π±ΠΎΡ€ ΠΈΠ· Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (ΠΊΠΎΠΌΡƒ ΠΎΠ½ адрСсован) ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄-дСйствий (Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ). ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ:

  • L3 β€” вСрсия IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, Π½ΠΎΠΌΠ΅Ρ€ IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ipset-Ρ‹ (списки IP-адрСсов);
  • L4 β€” ΠΏΠΎΡ€Ρ‚Ρ‹ TCP ΠΈΠ»ΠΈ UDP, type/code для ICMP;
  • L6/L7 β€” Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°, списки Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² (хостлисты).

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°: ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ строго ΠΏΠΎ порядку, ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊ послСднСму. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΆΠ΅ совпадСнии Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ выбираСтся, ΠΈ сканированиС прСкращаСтся. Если Π½Π΅ ΠΏΠΎΠ΄ΠΎΡˆΡ‘Π» Π½ΠΈ ΠΎΠ΄ΠΈΠ½ β€” бСрётся ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ дСлаСтся).

ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ профиля

Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π² записи conntrack, поэтому для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° поиск Π·Π°Π½ΠΎΠ²ΠΎ Π½Π΅ выполняСтся β€” это экономит CPU. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ поиск запускаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходных Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ всСго Π΄Π²Π°: ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ L7-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ хоста. Π’ этих случаях ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ пСрСсмотрСн ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Ρ‘Π½. Π—Π° всё врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π²ΡƒΡ… β€” Ρ€ΠΎΠ²Π½ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ измСняСмых ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° всСго Π΄Π²Π°.

Бтадия 6. Π˜Π½ΡΡ‚Π°Π½ΡΡ‹ β€” Π²Ρ‹Π·ΠΎΠ²Ρ‹ Lua-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ профиля

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π²Ρ‹Π±Ρ€Π°Π½. Π—Π° Π΅Π³ΠΎ дСйствия ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Lua-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΠΈΡ… Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² Lua-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· профиля называСтся инстансом (экзСмпляром Π²Ρ‹Π·ΠΎΠ²Π°).

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ понятиС инстанса: ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ функция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ нСсколько Ρ€Π°Π· с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ инстанс идСнтифицируСтся ΠΏΠ°Ρ€ΠΎΠΉ Β«Π½ΠΎΠΌΠ΅Ρ€ профиля + порядковый Π½ΠΎΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ профиля». Π˜Π½ΡΡ‚Π°Π½ΡΡ‹ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Ρ„Π»Π°Π³Π°ΠΌΠΈ --lua-desync, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜Π½ΡΡ‚Π°Π½ΡΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ строго Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠ°ΠΊΠΎΠΌ Π·Π°Π΄Π°Π½Ρ‹ Ρ„Π»Π°Π³ΠΈ --lua-desync. Π­Ρ‚ΠΎΡ‚ порядок ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»Π΅Π½ для Π»ΠΎΠ³ΠΈΠΊΠΈ стратСгии: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сначала ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„Π΅ΠΉΠΊΠΎΠ²Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌ Π½Π°Ρ€Π΅Π·Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ β€” ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ это ΡƒΠΆΠ΅ другая стратСгия. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΡ€ΠΎ ΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎΡΡ‚ΡŒ β€” ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹

ΠšΡ€ΠΎΠΌΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π° профиля Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ β€” ΠΎΠ½ΠΈ ΡΡƒΠΆΠ°ΡŽΡ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… инстансов. Π˜Ρ… Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ°:

  • --payload β€” список Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инстанс ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ (см. payload);
  • --in-range ΠΈ --out-range β€” Π΄Π²Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π½Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΡ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°, интСрСсный инстансу (см. out-range).

ΠžΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ дСйствуСт Π½Π° всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инстансы β€” Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π΅Π³ΠΎ Π½Π΅ пСрСопрСдСлят. Π“Π»Π°Π²Π½Ρ‹ΠΉ смысл этих Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² β€” ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ число ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Lua, приняв максимум Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π½Π° быстрой сторонС C-ΠΊΠΎΠ΄Π°.

Бтадия 7. Π§Ρ‚ΠΎ происходит Π²Π½ΡƒΡ‚Ρ€ΠΈ Lua-инстанса

ΠŸΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΡˆΡ‘Π» Π΄ΠΎ Lua-инстанса. Ѐункция ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° β€” ctx ΠΈ desync:

  • ctx β€” контСкст для связи с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ функциями Π½Π° сторонС C-ΠΊΠΎΠ΄Π° (Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹);
  • desync β€” Ρ‚Π°Π±Π»ΠΈΡ†Π° со мноТСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго это диссСкт (ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Π° dis) ΠΈ информация ΠΈΠ· записи conntrack (ΠΏΠΎΠ΄Ρ‚Π°Π±Π»ΠΈΡ†Π° track). Π•ΡΡ‚ΡŒ ΠΈ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² β€” ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΡ… всС ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² var_debug(desync) ΠΈΠ»ΠΈ просто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ инстанс pktdebug.

Π§Ρ‚ΠΎ Π΅Ρ‰Ρ‘ доступно инстансу:

  • Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ replay. Если ΠΈΠ΄Ρ‘Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π΅Ρ€ΠΆΠ°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (replay β€” повторная ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠ° Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ рСконструкции частСй), инстанс ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ части, ΠΎΠ±Ρ‰Π΅Π΅ количСство частСй исходного сообщСния, ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ части ΠΈ reasm/decrypt ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ.
  • Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ состояния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Для Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ относящихся ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ, доступна Ρ‚Π°Π±Π»ΠΈΡ†Π° desync.track.lua_state β€” Π² Π½Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΏΡ€ΠΈΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΊ записи conntrack: ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Lua ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ.
  • ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ инстансами. Π‘Π°ΠΌΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ desync ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инстансы ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Ρ‚Ρƒ ΠΆΠ΅ desync ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ….

ΠœΠ΅Ρ…Π°Π½ΠΈΠΊΡƒ desync, ctx ΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° multisplit (Ρ€Π°Π·Π΄Π΅Π» ΠΏΡ€ΠΎ Π²Ρ…ΠΎΠ΄ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

Бтадия 8. Π’Π΅Ρ€Π΄ΠΈΠΊΡ‚Ρ‹ ΠΈ ΠΈΡ… агрСгация

Π˜Π½ΡΡ‚Π°Π½Ρ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΏΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ диссСкта, Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… измСнСния, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ собствСнныС диссСкты ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ²Ρ‹ C-ΠΊΠΎΠ΄Π°. Π˜Ρ‚ΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ инстанса β€” Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚:

  • VERDICT_PASS β€” Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ диссСктом;
  • VERDICT_MODIFY β€” Π² ΠΊΠΎΠ½Ρ†Π΅ всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ содСрТимоС диссСкта;
  • VERDICT_DROP β€” Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ (Π΄Ρ€ΠΎΠΏΠ½ΡƒΡ‚ΡŒ) Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ диссСкт.

Π’Π΅Ρ€Π΄ΠΈΠΊΡ‚Ρ‹ всСх инстансов профиля Π°Π³Ρ€Π΅Π³ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°: MODIFY Π·Π°ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ PASS, Π° DROP Π·Π°ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΈ PASS, ΠΈ MODIFY. Π’ΠΎ Π΅ΡΡ‚ΡŒ достаточно ΠΎΠ΄Π½ΠΎΠΌΡƒ инстансу Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ DROP β€” ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½ΠΈ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

ΠŸΡ€ΠΎΡ‰Π΅ говоря

ΠŸΠΎΡ‡Π΅ΠΌΡƒ DROP сильнСС всСх: ΠΏΡ€ΠΈΡ‘ΠΌΡ‹ Π²Ρ€ΠΎΠ΄Π΅ Π½Π°Ρ€Π΅Π·ΠΊΠΈ ΡƒΠΆΠ΅ сами ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ, поэтому ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π½Π°Π΄ΠΎ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ сСрвСр ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π²Π°ΠΆΠ΄Ρ‹. DROP ΠΏΠ΅Ρ€Π΅Π±ΠΈΠ²Π°Π΅Ρ‚ MODIFY ΠΈ PASS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Бтадия 9. Cutoff ΠΈ оркСстратор β€” экономия ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π³ΠΎΠ½ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Lua лишниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Ρƒ инстанса Π΅ΡΡ‚ΡŒ нСсколько способов Β«ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡΒ»:

  • instance cutoff β€” инстанс сам сСбя ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ in/out;
  • lua cutoff β€” ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ in/out Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ всСй Lua-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ;
  • ΠΎΡ‚ΠΌΠ΅Π½Π° дальнСйшСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ β€” инстанс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ всСх ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Lua ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ диссСкту.

Π˜Π½ΡΡ‚Π°Π½Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π΅Ρ€Ρ‘Ρ‚ Π½Π° сСбя Ρ‚Π°ΠΊΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρƒ, становится ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… дСйствий β€” Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ оркСстратором (см. оркСстратор). C-ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π΅ΠΌΡƒ ΠΏΠ»Π°Π½ дальнСйшСго выполнСния β€” всС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ профиля ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π²Ρ‹Π·ΠΎΠ²Π° всСх ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ инстансов, β€” ΠΈ оркСстратор сам Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΊΠΈΡ… условиях ΠΈΡ… Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’Π°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ динамичСскиС сцСнарии Π±Π΅Π· пСрСписывания основного ΠΊΠΎΠ΄Π° стратСгии β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ рСсурса ΠΈ ΡΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ, Ссли прСдыдущая Π½Π΅ сработала.

ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Β«lua cutoffΒ» ΠΊΠ°ΠΊ оптимизация

Если всС инстансы профиля вошли Π² состояниС cutoff ΠΏΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ, Π»ΠΈΠ±ΠΎ тСкущая позиция ΠΏΠΎΡ‚ΠΎΠΊΠ° ΡƒΡˆΠ»Π° Π·Π° Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ range-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ², Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠΎ этому ΠΏΠΎΡ‚ΠΎΠΊΡƒ Lua-Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. C-ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Β«lua cutoffΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСтся максимально быстро, Π±Π΅Π· Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Lua. Π’Π°ΠΊ экономятся рСсурсы процСссора: Β«ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠ΅Β» ΠΏΠΎΡ‚ΠΎΠΊΠΈ дальшС ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ быстрому ΠΏΡƒΡ‚ΠΈ.

Бтадия 10. Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚

ПослС выполнСния всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ инстансов профиля C-ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ β€” Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ диссСктом: ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ (PASS), ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ (MODIFY) ΠΈΠ»ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ (DROP).

На этом ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ: nfqws2 ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ оТиданию ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΈ вСсь Ρ†ΠΈΠΊΠ» повторяСтся Π·Π°Π½ΠΎΠ²ΠΎ.

Π’Π΅ΡΡŒ ΠΏΡƒΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΎΠ΄Π½ΠΎΠΉ строкой

Π―Π΄Ρ€ΠΎ ОБ β†’ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ ΠΈ ранняя Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ β†’ диссСкция β†’ conntrack β†’ Ρ‚ΠΈΠΏ ΠΏΠ΅ΠΉΠ»ΠΎΠ°Π΄Π° ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ° β†’ (ΠΏΡ€ΠΈ Π½ΡƒΠΆΠ΄Π΅) рСконструкция reasm/decrypt β†’ Π²Ρ‹Π±ΠΎΡ€ профиля ΠΏΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ β†’ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Lua-инстансов с ΠΈΡ… Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚Π°ΠΌΠΈ β†’ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚ β†’ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ / ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ / Π΄Ρ€ΠΎΠΏΠ½ΡƒΡ‚ΡŒ β†’ ΠΆΠ΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚.

πŸ“š Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅


πŸ€– Π­Ρ‚ΠΈ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ… ИИ

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ИИ Π½Π° Π½Π°ΡˆΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ…. Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ скачиваниС всСго рСпозитория ΠΎΠ΄Π½ΠΈΠΌ zip-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ доступны Π² Forgejo: исходник этой Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Β· вСсь Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.