Files
NeoTachyon/docs/knowledge-base/15_ZAPRET1_NFQWS_FIELD_GUIDE.md
T

4.2 KiB

15. Руководство по Zapret v1 (nfqws): Полная спецификация и рецепты

1. Архитектура и принцип работы nfqws (Zapret v1)

Классический nfqws — это высокопроизводительный демон перехвата пакетов через Linux Netfilter Queue (NFQUEUE). Он работает на уровне ядра и L4/L7 сетевого стека, перехватывая исходящие TCP и UDP соединения до отправки в физический сетевой интерфейс и модифицируя структуру пакетов.


2. Основные параметры десинхронизации (--dpi-desync)

В Zapret v1 режим десинхронизации задается флагом --dpi-desync=<режим1>,<режим2>.

Режим Описание Механика
split2 Деление пакета на 2 части Пакет режется на 2 TCP-сегмента по указанной позиции.
disorder2 Деление с обратной отправкой Сегменты отправляются в порядке [хвост, голова].
fake Инжекция фейкового пакета Перед реальным запросом отправляется ложный payload с низким TTL.
multisplit Множественная фрагментация Пакет делится на 3+ сегмента по списку позиций.
ipfrag2 IP-фрагментация Фрагментация на сетевом уровне L3 (IP-пакет делится на части).
syndata Данные в SYN пакете Внедрение полезной нагрузки в первый TCP SYN пакет (TCP Fast Open).

3. Позиционирование сплита (--dpi-desync-split-pos)

Параметр --dpi-desync-split-pos определяет точное смещение (байт), по которому происходит разрезание TCP-сегмента:

  • --dpi-desync-split-pos=1 — сплит на 1-м байте payload. Разрывает первый байт TLS Content Type (0x16).
  • --dpi-desync-split-pos=2 — сплит на 2-м байте. Разрывает версию TLS (0x0301).
  • --dpi-desync-split-pos=midsld — сплит посередине доменного имени второго уровня в SNI.
  • --dpi-desync-split-pos=sniext+4 — сплит в блоке TLS расширений.
  • --dpi-desync-split-pos=1,midsld — комбинированное разделение.

4. Перекрытие Sequence (--dpi-desync-split-seqovl)

  • --dpi-desync-split-seqovl=1 или 2 — при сплите второй сегмент имеет начальный Sequence номер, заходящий на N байт назад (перекрывает конец первого сегмента).
  • ТСПУ видит коллизию данных в потоке и сбрасывает проверку, а сервер назначения корректно дедуплицирует байты по RFC 793.

5. Методы дурения ТСПУ (--dpi-desync-fooling)

  • badseq — отправка фейка с невалидным Sequence номером.
  • md5sig — добавление опции TCP MD5 signature, заставляющей DPI дропнуть фейк или пропустить сессию.
  • badack — невалидный номер подтверждения ACK.
  • hopbyhop — добавление IPv6 Hop-by-Hop extension header.

6. Проверенные рецепты для Zapret v1

1. YouTube 4K / Web

--dpi-desync=fake,split2 --dpi-desync-split-pos=1 --dpi-desync-ttl=8 --dpi-desync-fooling=badseq

2. RuTracker & Заблокированные HTTP/HTTPS ресурсы

--dpi-desync=disorder2 --dpi-desync-split-pos=1 --dpi-desync-fooling=badseq

3. State-DPI Bypass (Перекрытие TCP Sequence)

--dpi-desync=split2 --dpi-desync-split-seqovl=1 --dpi-desync-fooling=badseq