4.2 KiB
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