🧯 Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ профиля Π² Zapret 2

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ профиля Π² Zapret 2, ΠΊΠ°ΠΊ ΠΏΠΎ Π½ΠΈΠΌ выбираСтся, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹: ΠΏΠΎ вСрсии IP, ΠΏΠΎΡ€Ρ‚Π°ΠΌ, ICMP, Π½ΠΎΠΌΠ΅Ρ€Ρƒ IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, L7-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ, спискам IP/Π΄ΠΎΠΌΠ΅Π½ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ dir/payload. НС ΠΏΡƒΡ‚Π°Ρ‚ΡŒ с Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌΠΈ Π·Π°Ρ…Π²Π°Ρ‚Π° nftables β€” Ρ‚Π΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΏΠΎΠΏΠ°Π΄Ρ‘Ρ‚ Π² nfqws2, Π° эти β€” Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ дальшС. Π“Π΄Π΅ Π²Ρ‹Π±ΠΎΡ€ профиля стоит Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅, см. схСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°.

TL;DR

  • ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ = Π½Π°Π±ΠΎΡ€ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² (ΠΊΠΎΠΌΡƒ ΠΎΠ½ адрСсован) + дСйствия (--lua-desync). ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ„Π»Π°Π³ΠΎΠΌ --new.
  • ΠŸΠ°ΠΊΠ΅Ρ‚ провСряСтся ΠΏΠΎ профилям строго ΠΏΠΎ порядку, свСрху Π²Π½ΠΈΠ·; ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ совпадСнии Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² выбираСтся этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, поиск прСкращаСтся. НС ΠΏΠΎΠ΄ΠΎΡˆΡ‘Π» Π½ΠΈΠΊΡ‚ΠΎ β€” бСрётся скрытый ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ no_action (Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚; ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ β€” exclusions).
  • Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ профиля всС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅ И (ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ всС).
  • Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹: --filter-l3 (вСрсия IP), --filter-tcp/--filter-udp (ΠΏΠΎΡ€Ρ‚Ρ‹), --filter-icmp (Ρ‚ΠΈΠΏ/ΠΊΠΎΠ΄), --filter-ipp (Π½ΠΎΠΌΠ΅Ρ€ IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°), --filter-l7 (ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°), плюс списки ipset ΠΈ hostlist.
  • ΠŸΠΎΡ‡Ρ‚ΠΈ всС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, Π° ~ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ профиля

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π² Zapret 2 состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½: Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ β€” ΠΊΠΎΠΌΡƒ этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ адрСсован, ΠΈ дСйствия (--lua-desync-инстансы) β€” Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с подошСдшими ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ. Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопрос «этот ΠΏΠ°ΠΊΠ΅Ρ‚ β€” ΠΌΠΎΠΉ?Β».

Π­Ρ‚ΠΎ Π½Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π·Π°Ρ…Π²Π°Ρ‚Π° WinDivert/nftables

Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… уровня ΠΎΡ‚Π±ΠΎΡ€Π°. Π‘Π½Π°Ρ‡Π°Π»Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π·Π°Ρ…Π²Π°Ρ‚Π° (--wf-* Π½Π° Windows, ΠΏΡ€Π°Π²ΠΈΠ»Π° nftables/iptables Π½Π° Linux) Ρ€Π΅ΡˆΠ°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Β«Π·Π°Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΒ» ΠΈΠ· ядра Π² nfqws2 β€” это Π³Ρ€ΡƒΠ±ΠΎΠ΅ сито Ρ€Π°Π΄ΠΈ экономии. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ профиля (эта Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ°) Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ стратСгия ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡƒΠΆΠ΅ Π·Π°Ρ…Π²Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚. Если ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΎΡˆΡ‘Π» Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π·Π°Ρ…Π²Π°Ρ‚Π°, Π΄ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ ΠΎΠ½ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠΉΠ΄Ρ‘Ρ‚.

Как выбираСтся ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Ρ„Π»Π°Π³ΠΎΠΌ --new. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»Π΅Π½:

  1. ΠŸΠ°ΠΊΠ΅Ρ‚ провСряСтся ΠΏΠΎ профилям свСрху Π²Π½ΠΈΠ·, ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊ послСднСму.
  2. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΆΠ΅ совпадСнии всСх Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² профиля выбираСтся этот ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, ΠΈ дальнСйший поиск прСкращаСтся.
  3. Если Π½Π΅ ΠΏΠΎΠ΄ΠΎΡˆΡ‘Π» Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ β€” примСняСтся скрытый ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ no_action (слуТСбный Π½ΠΎΠΌΠ΅Ρ€ 0): Π΄Π²ΠΈΠΆΠΎΠΊ сам дописываСт Π΅Π³ΠΎ послСдним Π² список ΠΏΡ€ΠΈ запускС, дСйствий Π² Π½Ρ‘ΠΌ Π½Π΅Ρ‚, поэтому с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ происходит (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π½Ρ‘ΠΌ β€” Π² Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ ΠΎΠ± ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ…).

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ профиля нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ И: ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈΡ… всСм ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, --filter-tcp=443 ΠΈ --filter-l7=tls). А Π²ΠΎΡ‚ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° β€” это Π»ΠΎΠ³ΠΈΠΊΠ° Π˜Π›Π˜ (--filter-tcp=80,443 β€” ΠΏΠΎΡ€Ρ‚ 80 ΠΈΠ»ΠΈ 443).

Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, nfqws2 Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ Π² записи ΠΏΠΎΡ‚ΠΎΠΊΠ° (conntrack). ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ максимум Π΄Π²Π°ΠΆΠ΄Ρ‹ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊ β€” ΠΏΡ€ΠΈ распознавании L7-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΈΠΌΠ΅Π½ΠΈ хоста (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ β€” схСма ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°).


Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ профиля

НиТС β€” всС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° профиля. ΠŸΠΎΡ‡Ρ‚ΠΈ всС ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ½Π²Π΅Ρ€ΡΠΈΡŽ (~ ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ β€” «всё, ΠΊΡ€ΠΎΠΌΠ΅Β»), Π° * ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «любоС».

Π€ΠΈΠ»ΡŒΡ‚Ρ€Π§Ρ‚ΠΎ отбираСтБинтаксис
--filter-l3вСрсия IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ipv4 ΠΈΠ»ΠΈ ipv6 (ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π° Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)
--filter-tcpΠΏΠΎΡ€Ρ‚Ρ‹ TCP[~]port[-port] ΠΈΠ»ΠΈ *, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
--filter-udpΠΏΠΎΡ€Ρ‚Ρ‹ UDP[~]port[-port] ΠΈΠ»ΠΈ *, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
--filter-icmpΡ‚ΠΈΠΏ ΠΈ ΠΊΠΎΠ΄ ICMPtype[:code] ΠΈΠ»ΠΈ *, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
--filter-ippΠ½ΠΎΠΌΠ΅Ρ€ «сырого» IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°proto ΠΈΠ»ΠΈ *, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
--filter-l7ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ° (L6/L7)proto[,proto,…]
--filter-ssidимя Wi-Fi-сСти (Π½Π΅ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…)ssid[,ssid,…]

--filter-l3 β€” вСрсия IP

ΠžΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ вСрсии IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°.

--filter-l3=ipv4           # Ρ‚ΠΎΠ»ΡŒΠΊΠΎ IPv4
--filter-l3=ipv6           # Ρ‚ΠΎΠ»ΡŒΠΊΠΎ IPv6
--filter-l3=ipv4,ipv6      # ΠΎΠ±Π° (эквивалСнт Β«Π½Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ вСрсии»)

--filter-tcp ΠΈ --filter-udp β€” ΠΏΠΎΡ€Ρ‚Ρ‹

ΠžΡ‚Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠΎ TCP- ΠΈΠ»ΠΈ UDP-ΠΏΠΎΡ€Ρ‚Π°ΠΌ. Π€ΠΈΠ»ΡŒΡ‚Ρ€ΡƒΠ΅Ρ‚ΡΡ ΠΈ ΠΏΠΎΡ€Ρ‚ источника, ΠΈ ΠΏΠΎΡ€Ρ‚ назначСния. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ: ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ€Ρ‚, Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ port1-port2, инвСрсия ~port, ΠΈ * (всС ΠΏΠΎΡ€Ρ‚Ρ‹). НСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ β€” Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ.

--filter-tcp=80,443        # ΠΏΠΎΡ€Ρ‚ 80 ΠΈΠ»ΠΈ 443
--filter-tcp=1000-2000     # Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ 1000–2000
--filter-tcp=~443          # всС TCP-ΠΏΠΎΡ€Ρ‚Ρ‹, ΠšΠ ΠžΠœΠ• 443
--filter-tcp=*             # всС TCP-ΠΏΠΎΡ€Ρ‚Ρ‹
--filter-udp=443           # QUIC (UDP/443)

Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TCP ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ UDP (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚)

Если Π² ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ Π·Π°Π΄Π°Π½ --filter-tcp, Π½ΠΎ Π½Π΅Ρ‚ --filter-udp, Ρ‚ΠΎ UDP этим ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ Π½Π΅ обрабатываСтся вовсС (ΠΈ симмСтрично Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π» с ΠΎΠ±ΠΎΠΈΠΌΠΈ транспортами, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΎΠ±Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° (ΠΏΡ€ΠΈ нСобходимости с *).

--filter-icmp β€” Ρ‚ΠΈΠΏ ΠΈ ΠΊΠΎΠ΄ ICMP

ΠžΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ ICMP-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ Ρ‚ΠΈΠΏΡƒ ΠΈ, ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ΄Ρƒ: Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ type[:code]. Если ΠΊΠΎΠ΄ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ любой ΠΊΠΎΠ΄ этого Ρ‚ΠΈΠΏΠ°. ЗначСния β€” Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, * β€” любой ICMP.

--filter-icmp=3            # ICMP type 3 (destination unreachable), любой code
--filter-icmp=3:4,11       # type 3 code 4, или type 11 (любой code)
--filter-icmp=*            # любой ICMP

--filter-ipp β€” Π½ΠΎΠΌΠ΅Ρ€ IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (raw IP)

ΠžΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° для «сырых» ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ TCP/UDP/ICMP (см. ΠΏΡ€ΠΎ raw IP Π² структура desync ΠΈ диссСкта). ЗначСния β€” Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈΠ»ΠΈ *.

--filter-ipp=47            # GRE (ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» 47)
--filter-ipp=50,51         # ESP ΠΈ AH (IPsec)
--filter-ipp=*             # любой raw IP-ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

--filter-l7 β€” ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ°

ΠžΡ‚Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ ΠΏΠΎΡ‚ΠΎΠΊΠ° β€” ярлыку, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ nfqws2 Π²Π΅ΡˆΠ°Π΅Ρ‚ Π½Π° всё соСдинСниС, распознав Π΅Π³ΠΎ сигнатурно (http, tls, quic, wireguard, mtproto, dns, stun, discord, dht, xmpp, dtls, bt, utp_bt). Плюс спСцзначСния: all β€” любой, known β€” любой распознанный (Π½Π΅ empty/unknown), unknown β€” нСраспознанный.

--filter-l7=tls            # Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TLS/HTTPS
--filter-l7=tls,http       # TLS ΠΈΠ»ΠΈ HTTP
--filter-l7=quic           # Ρ‚ΠΎΠ»ΡŒΠΊΠΎ QUIC (HTTP/3)
--filter-l7=known          # любой распознанный ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠΎΡ‚ΠΎΠΊΠ° vs Ρ‚ΠΈΠΏ payload

--filter-l7 смотрит Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» всСго соСдинСния, Π° Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Β«ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°Β» ΠΈ Β«Ρ‚ΠΈΠΏΠΎΠΌ payload ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Β», полная Ρ‚Π°Π±Π»ΠΈΡ†Π° распознаваСмых ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΎΠ² ΠΈ особыС ICMP-Ρ‚ΠΈΠΏΡ‹ (ipv4/ipv6/icmp) ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Π² payload β€” Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, здСсь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΡ‚ΡŒ.

--filter-ssid β€” Wi-Fi-ΡΠ΅Ρ‚ΡŒ

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Wi-Fi-сСтями ΠΏΠΎ ΠΈΡ… SSID (доступно Π½Π΅ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…). Бписок β€” Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ.

--filter-ssid=MyHomeWiFi,OfficeNetwork

Бписки IP и домСнов

ΠšΡ€ΠΎΠΌΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ, ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΎΡ‚Π±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠΎ спискам адрСсов ΠΈ Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² β€” ipset (списки IP) ΠΈ hostlist (списки Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²). Π£ ΠΎΠ±ΠΎΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ --hostlist-exclude/--ipset-exclude (Β«ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ срабатываСт для всСх, кромС…») β€” ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½ΠΈΡ… строятся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² прСсСтах. ПолноС описаниС списков встроСно Π½ΠΈΠΆΠ΅.

ipset

🎯 Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΠΎ IP адрСсам

6. --ipset - Π’ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ IP Ρ„ΠΈΠ»ΡŒΡ‚Ρ€

Бинтаксис:

--ipset=<filename>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • filename - ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с IP адрСсами/подсСтями
  • Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°: ΠΎΠ΄ΠΈΠ½ IP/CIDR Π½Π° строку
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° IPv4 ΠΈ IPv6
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° gzip сТатия
  • МоТно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°:

192.168.1.0/24
10.0.0.1
2001:db8::/32

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--ipset=/path/to/iplist.txt
--ipset=/path/to/list1.txt.gz --ipset=/path/to/list2.txt

7. --ipset-ip - Ѐиксированный список IP

Бинтаксис:

--ipset-ip=<ip_list>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • Бписок IP/подсСтСй Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ
  • Π‘Π΅Π· Ρ„Π°ΠΉΠ»Π°, прямо Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--ipset-ip=192.168.1.0/24,10.0.0.1
--ipset-ip=8.8.8.8,1.1.1.1

8. --ipset-exclude - Π˜ΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ IP Ρ„ΠΈΠ»ΡŒΡ‚Ρ€

Бинтаксис:

--ipset-exclude=<filename>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ --ipset)

  • Π€Π°ΠΉΠ» с IP адрСсами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ НЕ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--ipset-exclude=/path/to/exclude.txt

9. --ipset-exclude-ip - Ѐиксированный список ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Бинтаксис:

--ipset-exclude-ip=<ip_list>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--ipset-exclude-ip=192.168.0.0/16,10.0.0.0/8
Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»

hostlist

🌐 Π€ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ (hostlist)

--hostlist - Π’ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ список Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²

Бинтаксис:

--hostlist=<filename>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • filename - ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ с Π΄ΠΎΠΌΠ΅Π½Π°ΠΌΠΈ
  • Π€ΠΎΡ€ΠΌΠ°Ρ‚: ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΌΠ΅Π½ Π½Π° строку
  • ΠŸΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ автоматичСски
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° gzip
  • МоТно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·

Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°:

youtube.com
google.com
facebook.com

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ:

  • youtube.com автоматичСски Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ www.youtube.com, m.youtube.com ΠΈ Ρ‚.Π΄.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist=/path/to/domains.txt
--hostlist=/path/to/list1.txt --hostlist=/path/to/list2.txt.gz

--hostlist-domains - Ѐиксированный список Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²

Бинтаксис:

--hostlist-domains=<domain_list>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • Бписок Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-domains=youtube.com,google.com,facebook.com

--hostlist-exclude - Π˜ΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ список Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²

Бинтаксис:

--hostlist-exclude=<filename>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ --hostlist)

  • Π”ΠΎΠΌΠ΅Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ НЕ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-exclude=/path/to/exclude_domains.txt

--hostlist-exclude-domains - Ѐиксированный список ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Бинтаксис:

--hostlist-exclude-domains=<domain_list>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-exclude-domains=local.domain,internal.net

πŸ€– АвтоматичСский hostlist

--hostlist-auto - АвтоматичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ

Бинтаксис:

--hostlist-auto=<filename>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • filename - Ρ„Π°ΠΉΠ» для сохранСния автоматичСски ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ²
  • БистСма автоматичСски опрСдСляСт DPI Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ добавляСт Π΄ΠΎΠΌΠ΅Π½Ρ‹ Π² список

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-auto=/var/lib/zapret/auto.txt

--hostlist-auto-fail-threshold - ΠŸΠΎΡ€ΠΎΠ³ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ

Бинтаксис:

--hostlist-auto-fail-threshold=<int>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ для добавлСния Π΄ΠΎΠΌΠ΅Π½Π° Π² автолист
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-auto-fail-threshold=3

--hostlist-auto-fail-time - Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ для Π½Π΅ΡƒΠ΄Π°Ρ‡

Бинтаксис:

--hostlist-auto-fail-time=<int>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • ВрСмя Π² сСкундах, Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-auto-fail-time=60    # всС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 60 сСкунд

--hostlist-auto-retrans-threshold - ΠŸΠΎΡ€ΠΎΠ³ рСтрансмиссий

Бинтаксис:

--hostlist-auto-retrans-threshold=<int>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ рСтрансмиссий запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ΠΉ
  • По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-auto-retrans-threshold=2

--hostlist-auto-debug - ΠžΡ‚Π»Π°Π΄ΠΊΠ° автолиста (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€)

Бинтаксис:

--hostlist-auto-debug=<logfile>

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  • ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ Π»ΠΎΠ³ΠΎΠ² для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ автоматичСского опрСдСлСния

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

--hostlist-auto-debug=/var/log/zapret-auto.log
Бсылка Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»


Π’Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ инстанса: dir ΠΈ payload

ΠšΡ€ΠΎΠΌΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π° профиля, Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ профиля β€” ΠΎΠ½ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ вСсь ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ, Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ --lua-desync-инстансы. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ, ΠΈ послС опрСдСлСния ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° всС ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инстансы Π΄ΠΎ пСрСопрСдСлСния. Π“Π»Π°Π²Π½Ρ‹ΠΉ смысл β€” ΠΎΡ‚ΡΠ΅ΡΡ‚ΡŒ лишнСС Π½Π° быстрой сторонС C-ΠΊΠΎΠ΄Π°, Π½Π΅ доходя Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Lua.

dir β€” Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π‘Ρ‚Ρ€ΠΎΠΊΠ° in, out ΠΈΠ»ΠΈ any (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ out). На сторонС Lua Π΅Ρ‘ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ direction_check (соотвСтствуСт Π»ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ) ΠΈ direction_cutoff_opposite (ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ инстанс ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ направлСния). Π’Π°ΠΊ, dir=out β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ исходящиС (ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊ сСрвСру), dir=in β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ входящиС, dir=any β€” ΠΎΠ±Π°.

payload β€” Ρ‚ΠΈΠΏ содСрТимого ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Бписок Ρ‚ΠΈΠΏΠΎΠ² payload Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (со спСцзначСниями all/known ΠΈ инвСрсиСй ~), провСряСтся функциями payload_match_filter/payload_check. Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ --payload, Π½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ инстанса. ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² payload ΠΈ ΠΈΡ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ β€” Π² payload (Ρ‚Π°ΠΌ ΠΆΠ΅ β€” ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ known).

# ΠΎΠ±Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π° ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ слСдом инстанс
--payload=tls_client_hello --lua-desync=fake:blob=fake_default_tls:dir=out

Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ in/out-range

Π•ΡΡ‚ΡŒ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π²ΠΈΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² β€” --in-range/--out-range, ΠΎΡ‚Π±ΠΈΡ€Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΠΎ ΠΈΡ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ (ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠΎ счёту). Они Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ΅ out-range.


ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Базовая Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ HTTP/HTTPS

nfqws2 \
  --filter-tcp=80,443 \
  --filter-l7=http,tls \
  --lua-desync=fake:blob=fake_default_tls

QUIC с hostlist

nfqws2 \
  --filter-udp=443 \
  --filter-l7=quic \
  --hostlist=/path/to/youtube.txt \
  --lua-desync=fake:blob=fake_default_quic:repeats=6

ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ: Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ β†’ Ρ€Π°Π·Π½Ρ‹Π΅ стратСгии

nfqws2 \
  --filter-tcp=80 --filter-l7=http \
  --hostlist=/path/to/list1.txt \
  --lua-desync=multisplit \
  --new \
  --filter-tcp=443 --filter-l7=tls \
  --hostlist-exclude=/path/to/exclude.txt \
  --lua-desync=fake:blob=fake_default_tls \
  --new \
  --filter-udp=443 --filter-l7=quic \
  --lua-desync=fake:blob=fake_default_quic

IP-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π· ipset

nfqws2 \
  --filter-tcp=443 \
  --ipset=/path/to/blocked_ips.txt \
  --ipset-exclude-ip=192.168.0.0/16,10.0.0.0/8 \
  --lua-desync=fake:blob=fake_default_tls

Π’Π°ΠΆΠ½Ρ‹Π΅ особСнности

  1. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ всё β€” выбираСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ совпавший свСрху; Π±ΠΎΠ»Π΅Π΅ ΡƒΠ·ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π²Ρ‹ΡˆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΡ….
  2. Π’Π½ΡƒΡ‚Ρ€ΠΈ профиля β€” Π»ΠΎΠ³ΠΈΠΊΠ° И, нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° β€” Π»ΠΎΠ³ΠΈΠΊΠ° Π˜Π›Π˜.
  3. TCP/UDP Π²Π·Π°ΠΈΠΌΠΎΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ β€” ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ TCP-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ UDP, ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.
  4. Π˜Π½Π²Π΅Ρ€ΡΠΈΡ ~ ΠΈ * ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΡ€Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².
  5. ΠŸΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Ρ‹ Π² hostlist Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ автоматичСски (см. hostlist).
  6. НСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² --ipset/--hostlist допустимы; Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сТаты gzip.
  7. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (--new) ΠΈΠΌΠ΅Π΅Ρ‚ свои Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ β€” ΠΎΠ½ΠΈ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ профилями.

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


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

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