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

67 lines
4.2 KiB
Markdown

# 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
```text
--dpi-desync=fake,split2 --dpi-desync-split-pos=1 --dpi-desync-ttl=8 --dpi-desync-fooling=badseq
```
### 2. RuTracker & Заблокированные HTTP/HTTPS ресурсы
```text
--dpi-desync=disorder2 --dpi-desync-split-pos=1 --dpi-desync-fooling=badseq
```
### 3. State-DPI Bypass (Перекрытие TCP Sequence)
```text
--dpi-desync=split2 --dpi-desync-split-seqovl=1 --dpi-desync-fooling=badseq
```