Add Russian documentation for UDP handling, backup settings, core settings, discovery settings, geodata, payloads, security, and domain monitoring

- Created UDP documentation detailing traffic handling and filtering options.
- Added backup settings documentation for configuration backup and restoration.
- Introduced core settings documentation covering service management, packet processing, and logging.
- Added discovery settings documentation for automatic configuration detection.
- Created geodata documentation explaining GeoSite and GeoIP databases and their usage.
- Added payloads documentation for generating and managing TLS payloads for faking.
- Introduced security documentation for web interface authorization and HTTPS setup.
- Added domain monitoring documentation for automatic detection of blocked domains and recovery processes.
- Created footer and navbar localization files for Russian language support.
This commit is contained in:
Daniel Lavrushin 2026-04-18 21:43:56 +02:00
parent 1df5909e62
commit ef8bedd247
No known key found for this signature in database
GPG key ID: 57F1CAB57AD35056
79 changed files with 3545 additions and 3133 deletions

View file

@ -0,0 +1,210 @@
---
sidebar_position: 3
title: Faking
---
# Faking
Вкладка Faking содержит методы отправки ложных пакетов и модификации реальных пакетов для обмана DPI. Каждая секция - отдельный аккордеон в интерфейсе.
Подробнее о типах пэйлоадов и их генерации - в разделе [Пэйлоады](../../settings/payloads).
<!-- screenshot: подвкладка faking с раскрытыми секциями -->
## Фейковые SNI-пакеты
Отправляет пакеты с поддельным содержимым **до** настоящего ClientHello. DPI анализирует фейковый пакет, а настоящие данные проходят незамеченными. Фейковый пакет не доходит до сервера благодаря выбранной стратегии.
### Стратегия фейка
Определяет, **как** фейковый пакет станет необрабатываемым для сервера:
| Стратегия | Механизм |
| --- | --- |
| **TTL** | Заниженный TTL - пакет истекает на промежуточном узле и не доходит до сервера |
| **Random Sequence** | Случайный TCP sequence number - сервер отбрасывает пакет с неожиданным seq |
| **Past Sequence** | Прошедший sequence number - сервер уже обработал этот seq, повторный игнорирует |
| **TCP Check** | Неверная контрольная сумма TCP - ядро сервера отбрасывает пакет до обработки |
| **MD5 Sum** | TCP MD5-опция - сервер без настроенного MD5 отбрасывает пакет |
| **TCP Timestamp** | Устаревший TCP timestamp - сервер отбрасывает пакет с timestamp в далёком прошлом |
### Тип пэйлоада
Содержимое фейкового пакета. Подробное описание всех типов - в разделе [Пэйлоады](../../settings/payloads#типы-пэйлоадов).
| Тип | Содержимое |
| --- | --- |
| Случайное | 1200 случайных байтов |
| Пресет: Google | TLS ClientHello от имени Google |
| Пресет: DuckDuckGo | TLS ClientHello от имени DuckDuckGo |
| Сгенерированный payload | Оптимизированный ClientHello из раздела [Настройки → Пэйлоады](../../settings/payloads) |
| Все нули | 1200 нулевых байтов |
| Инвертированный оригинал | Побитовая инверсия реального TLS-пакета |
:::tip Сгенерированные пэйлоады
Если в списке нет доступных пэйлоадов - сначала сгенерируйте их в [Настройки → Пэйлоады](../../settings/payloads).
:::
### Параметры
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| TTL фейка | TTL для фейковых пакетов. Должен быть достаточным, чтобы пакет дошёл до DPI, но истёк до сервера | 164 |
| Смещение Sequence | Сдвиг TCP sequence number (для стратегий pastseq/randseq) | - |
| Уменьшение Timestamp | Величина уменьшения TCP timestamp (для стратегии timestamp, по умолчанию 600000) | - |
| Количество фейковых пакетов | Сколько фейковых пакетов отправить перед реальными данными | 120 |
:::tip Подбор TTL
Правильный TTL зависит от количества сетевых узлов между вами и провайдерским DPI. Дискавери подбирает TTL автоматически. При ручной настройке начните с `3` и корректируйте.
:::
### TLS-модификации фейковых пакетов
Если тип пэйлоада содержит TLS-структуру (не случайное и не нули), доступны дополнительные модификации фейкового ClientHello:
| Параметр | Описание |
| --- | --- |
| Рандомизация TLS Random | Заменяет 32-байтовое поле Random в фейковом ClientHello случайными байтами. Без этого DPI может заметить, что поле Random одинаковое в фейке и реальном пакете |
| Дублировать Session ID | Копирует Session ID из реального ClientHello в фейковый. DPI может отслеживать Session ID для связки пакетов |
---
## Фейковые SYN-пакеты
Отправляет фейковые SYN-пакеты во время TCP-рукопожатия - **до** начала реального соединения. Запутывает DPI ещё до того, как соединение установлено.
:::warning
Это агрессивная техника - фейковые SYN могут влиять на работу некоторых сетевых устройств.
:::
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| SYN MD5 Signature | Отправить фейковый SYN с опцией TCP MD5 перед реальным рукопожатием | - |
| Длина payload | Размер данных в фейковом SYN. `0` = только заголовок, `>0` = добавить фейковый TLS payload | 01200 |
| TTL | TTL для фейковых SYN-пакетов | 1100 |
---
## TCP Desync
Десинхронизация внедряет фейковые TCP управляющие пакеты (RST/FIN/ACK) с повреждёнными контрольными суммами и низким TTL. Эти пакеты путают DPI с отслеживанием состояния, но отбрасываются реальным сервером.
### Режим Desync
| Режим | Что отправляет |
| --- | --- |
| **RST** | Фейковые RST-пакеты с неверными контрольными суммами - DPI считает соединение разорванным |
| **FIN** | Фейковые FIN-пакеты с прошлыми sequence numbers - DPI считает соединение завершённым |
| **ACK** | Фейковые ACK-пакеты со случайными будущими sequence/ack numbers - DPI теряет состояние |
| **Combo** | Последовательность RST + FIN + ACK |
| **Full** | Полная атака: фейковый SYN, перекрывающиеся RST, PSH и URG пакеты |
### Параметры Desync
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| TTL Desync | Низкий TTL гарантирует истечение фейковых пакетов до сервера | 150 |
| Количество пакетов | Количество фейковых пакетов на одну атаку десинхронизации | 120 |
| Post-ClientHello RST | Отправить фейковый RST **после** ClientHello для удаления соединения из таблицы отслеживания DPI | - |
---
## Манипуляция окном
Отправляет фейковые ACK-пакеты с изменёнными размерами TCP-окна **перед** реальным пакетом. Фейки используют низкий TTL - они истекают до сервера, но путают DPI на промежуточных узлах.
| Режим | Описание |
| --- | --- |
| **Нулевое окно** | Фейковые пакеты: сначала window=0, затем window=65535 |
| **Случайное** | 35 фейковых пакетов со случайными размерами окна из заданного списка |
| **Осцилляция** | Циклический перебор пользовательских значений окна |
| **Эскалация** | Постепенное увеличение: 0 → 100 → 500 → 1460 → 8192 → 32768 → 65535 |
При режимах **Случайное** и **Осцилляция** можно задать свой список значений окна (065535). Если список пуст - используются значения по умолчанию.
---
## Обход входящих ответов (Incoming)
Манипулирует **входящими ответами** сервера. Используется для обхода DPI, который дросселирует (замедляет) соединения после получения определённого объёма данных (~1520 КБ). b4 вбрасывает фейковые пакеты к серверу, которые DPI видит, но они не доходят до назначения.
### Режим
| Режим | Описание |
| --- | --- |
| **Фейковые пакеты** | Внедрение повреждённых ACK-пакетов к серверу с низким TTL на каждый входящий пакет данных |
| **Внедрение Reset** | Внедрение фейковых RST-пакетов при достижении порога входящих байтов |
| **Внедрение FIN** | Внедрение фейковых FIN-пакетов при достижении порога |
| **Desync Combo** | Внедрение RST+FIN+ACK combo при достижении порога |
### Стратегия повреждения
Определяет, как фейковый пакет станет необрабатываемым:
| Стратегия | Описание |
| --- | --- |
| **Bad Checksum** | Повреждение контрольной суммы TCP - пакеты отбрасываются ядром |
| **Bad Sequence** | Повреждение sequence number - пакеты игнорируются TCP-стеком |
| **Bad ACK** | Повреждение ACK number - пакеты игнорируются TCP-стеком |
| **Random** | Случайный выбор метода для каждого пакета |
| **All** | Все повреждения одновременно: bad seq + bad ack + bad checksum |
### Параметры Incoming
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| TTL фейка | Низкий TTL гарантирует истечение фейков до сервера | 120 |
| Количество фейков | Количество фейковых пакетов на одну инжекцию | 110 |
| Порог мин. | Минимальный объём входящих данных для срабатывания (КБ) | 550 |
| Порог макс. | Максимальный порог - рандомизируется между мин. и макс. для каждого соединения | 550 |
:::info Пороги и режим Fake
В режиме **Фейковые пакеты** пороги не используются - фейки отправляются на каждый входящий пакет. Пороги работают только в режимах Reset, FIN и Desync Combo.
:::
---
## Мутация ClientHello
Изменение структуры TLS ClientHello **настоящего** пакета (не фейкового). Рандомизирует порядок расширений и добавляет шум - чтобы ClientHello не совпадал с известными DPI сигнатурами.
:::warning Мутация изменяет настоящий пакет
В отличие от остальных секций на этой вкладке, мутация модифицирует **реальный** ClientHello, который дойдёт до сервера. Если сайт перестал работать после включения мутации - отключите её.
:::
### Режим мутации
| Режим | Описание |
| --- | --- |
| **GREASE Extensions** | Вставить GREASE-расширения для обмана DPI |
| **Padding** | Добавить расширение padding до целевого размера |
| **Fake Extensions** | Вставить фейковые/неизвестные TLS-расширения |
| **Fake SNIs** | Добавить дополнительные фейковые записи SNI |
| **Random** | Рандомизировать порядок расширений и добавить шум |
| **Advanced** | Комбинация нескольких техник мутации с ручной настройкой |
### Параметры по режимам
**GREASE:**
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Количество GREASE | Сколько GREASE-расширений вставить | 110 |
**Padding:**
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Размер Padding | Целевой размер ClientHello с padding | 25616384 байт |
**Fake Extensions:**
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Количество Fake Extensions | Сколько фейковых TLS-расширений вставить | 115 |
**Fake SNIs:**
Добавляет дополнительные значения SNI в ClientHello. Введите домены (например, `ya.ru`, `vk.com`) - они будут внедрены в расширение SNI наряду с реальным доменом.
**Advanced** включает все параметры выше для ручной комбинации.

View file

@ -0,0 +1,39 @@
---
sidebar_position: 1
title: Общее
---
# Общее
Базовые параметры обработки TCP-трафика в сете.
![common](/img/general/20260323224155.png)
## Лимит TCP пакетов соединения
Сколько пакетов в начале каждого соединения анализировать. После этого лимита пакеты проходят без модификации. TLS-рукопожатие (ClientHello) обычно происходит в первых 35 пакетах, поэтому обрабатывать всё соединение не нужно.
:::info
Значение не может превышать глобальный лимит, заданный в [Настройки → Основные → Очередь](../../settings/core#очередь-и-обработка-пакетов). Если в сете указано больше - будет использован глобальный лимит.
:::
## Задержка между пакетами (Seg2Delay)
Задержка (мс) между отправкой фрагментов. Задаётся как диапазон **мин–макс** - для каждого соединения b4 выбирает случайное значение из этого диапазона. Если мин и макс одинаковы - задержка фиксированная.
## Фильтр портов
Ограничивает, на каких портах назначения этот сет будет применяться. Формат iptables: `443` или `443,80`.
:::info
На уровне фаервола b4 всегда перехватывает трафик на порт 443. Если в сетах указаны дополнительные порты - они добавляются к перехвату. Фильтр портов в сете сужает, к какому трафику **этот конкретный сет** будет применяться, а не то, что b4 обрабатывает глобально.
:::
## Отбросить `SACK`
Удаляет опцию `Selective Acknowledgment` из TCP-пакетов. `SACK` помогает серверу и клиенту эффективно пересылать потерянные фрагменты - некоторые DPI-системы используют `SACK` для восстановления порядка фрагментов.
## Дублирование пакетов
Отправляет каждый пакет несколько раз (110 копий). Полезно, если провайдер отбрасывает часть пакетов при обнаружении аномалий.
![dup](/img/general/20260323224129.png)

View file

@ -0,0 +1,14 @@
---
sidebar_position: 2
title: TCP
---
# TCP
Вкладка TCP - основная часть настройки обхода DPI. Содержит три подвкладки, соответствующие трём аспектам обработки пакетов:
- [Общее](./general) - лимиты, задержки, дублирование
- [Фрагментация](./splitting) - разбиение пакетов на части
- [Faking](./faking) - отправка ложных пакетов, десинхронизация, мутация
<!-- screenshot: вкладка TCP с тремя подвкладками -->

View file

@ -0,0 +1,42 @@
---
sidebar_position: 5
title: RST Protection
---
# Защита от RST-инъекций
Некоторые DPI-системы обрывают соединения, отправляя поддельные TCP RST-пакеты от имени сервера. Браузер принимает такой пакет за настоящий и закрывает соединение.
Эта функция анализирует входящие RST-пакеты и отбрасывает те, которые выглядят как инъекции.
## Как работает
b4 применяет три независимых проверки к каждому RST-пакету:
| Проверка | Что отбрасывает |
|---|---|
| **RST до ответа сервера** | RST пришёл раньше, чем любой реальный ответ от сервера - характерный признак инъекции |
| **Повторный RST** | Второй и последующие RST на одном соединении - легитимное соединение крайне редко отправляет больше одного |
| **Несовпадение TTL** | TTL в RST-пакете значительно отличается от TTL первого реального ответа сервера - пакет пришёл с другого узла сети |
:::info
Каждая проверка работает независимо. Пакет отбрасывается, если сработала **хотя бы одна** из них.
:::
## Настройки
### Включить RST Protection
Переключатель активирует защиту для этого сета.
### TTL Tolerance
Допустимая разница в TTL между RST-пакетом и реальным ответом сервера. Диапазон: 120, по умолчанию **3**.
:::tip
Значение 3 подходит для большинства сетей. Увеличьте, если b4 ложно отбрасывает легитимные RST (видно в логах).
:::
## Логирование
Каждый отброшенный RST отображается в [логах](../../logs) с указанием причины: несовпадение TTL, RST до ответа сервера или повторный RST.

View file

@ -0,0 +1,206 @@
---
sidebar_position: 2
title: Фрагментация
---
# Фрагментация
Основной инструмент обхода DPI. Суть: разбить TCP-пакет на части так, чтобы DPI не смог собрать их и прочитать содержимое (в частности, поле SNI в TLS ClientHello).
![fragment](/img/splitting/20260323224335.png)
## Метод фрагментации
| Метод | Описание |
| --- | --- |
| **tcp** | Разделение на уровне TCP-сегментов. Один пакет становится двумя TCP-сегментами |
| **ip** | Разделение на уровне IP. Один IP-пакет разбивается на IP-фрагменты |
| **tls** | Одна TLS-запись разбивается на несколько TLS-записей внутри одного TCP-пакета |
| **oob** | Out-of-Band - вставка байта с TCP URG флагом, который сбивает DPI |
| **combo** | Комбинация нескольких точек разделения с приманками, перемешиванием и фейками между фрагментами |
| **hybrid** | Гибрид combo и disorder - комбинированные методы с изменённым порядком |
| **disorder** | Фрагменты отправляются не по порядку со случайными задержками |
| **extsplit** | Автоматическое разделение перед SNI-расширением в TLS ClientHello |
| **firstbyte** | Отправка одного байта, пауза, затем остальное - атака по таймингу |
| **none** | Без фрагментации (используйте, если нужен только faking) |
:::info Как выбрать метод
Используйте [Дискавери](../../discovery) - он протестирует все методы и найдёт рабочий. Ручной подбор нужен, если дискавери не справился или вы хотите оптимизировать конкретный случай.
:::
## Пул стратегий
Если включён пул, b4 случайным образом выбирает метод из пула для каждого нового соединения. Это затрудняет DPI адаптацию к конкретному методу - каждое соединение выглядит по-разному.
:::tip
Выберите несколько стратегий, которые работают у вашего провайдера (через дискавери), и включите их в пул. Пул не используется, если он пуст - в этом случае используется метод, выбранный выше.
:::
## Обратный порядок
Отправляет фрагменты в обратном порядке (последний фрагмент первым). DPI, ожидающий данные по порядку, не сможет собрать содержимое.
---
## TCP/IP Segmentation
Доступно при методе **tcp** или **ip**.
### Умное разделение SNI
Автоматически находит SNI-поле в TLS ClientHello и разделяет посередине имени хоста. Рекомендуемый вариант - не требует ручной настройки.
### Фиксированная позиция разделения
Ручное смещение точки разделения (050 байт от начала TLS payload). Используйте, если умное разделение не работает у вашего провайдера. Задаётся как диапазон **мин–макс** - для каждого соединения b4 выберет случайную позицию из диапазона.
:::info 3 сегмента
Если включены оба варианта (умное SNI + фиксированная позиция) - пакет разделяется на **3 сегмента**: на фиксированной позиции и в середине SNI.
:::
---
## Combo
Комбинирует несколько точек разделения с приманками и перемешиванием. Самый гибкий метод.
### Приманка (Decoy)
Отправляет фейковый ClientHello с разрешённым SNI перед реальным трафиком:
1. Фейковый пакет (с низким TTL) → DPI видит и анализирует, но пакет не доходит до сервера
2. Реальный пакет (фрагментированный) → проходит мимо DPI и доставляется серверу
### Точки разделения
![splitpoints](/img/splitting/20260323224920.png)
| Параметр | Описание |
| --- | --- |
| First Byte | Разделение после первого байта (десинхронизация по времени) |
| Extension Split | Разделение перед SNI-расширением |
| SNI Split | Разделение в середине имени хоста SNI |
Каждая включённая точка добавляет дополнительный сегмент. Интерфейс показывает количество активных разделений и результирующее число сегментов.
:::warning
Должна быть включена хотя бы одна точка разделения, иначе combo отправит пакет одним сегментом.
:::
### Режим перемешивания
| Режим | Описание |
| --- | --- |
| `middle` | Первый и последний сегменты остаются на месте, перемешиваются только средние |
| `full` | Все сегменты случайно перемешиваются |
| `reverse` | Сегменты отправляются в обратном порядке |
### Тайминги
![timeings](/img/splitting/20260323225046.png)
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Задержка первого сегмента | Пауза после отправки первого сегмента | 10500 мс |
| Макс. джиттер | Случайная задержка между остальными сегментами | 10010000 мкс |
### Фейк на сегмент (мультидисордер)
Отправляет фейковые перекрывающие пакеты перед **каждым** реальным сегментом, а не только перед первым. Засоряет реассемблер DPI мусором.
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Фейк на сегмент | Включить фейки между сегментами | - |
| Фейков на сегмент | Количество фейковых пакетов перед каждым сегментом | 111 |
---
## Disorder
Отправляет реальные TCP-сегменты не по порядку со случайными задержками. В отличие от combo, disorder не использует фейковые пакеты (кроме мультидисордера) - он полагается на то, что DPI ожидает последовательные данные.
### Режим перемешивания
| Режим | Описание |
| --- | --- |
| `full` | Все сегменты случайно перемешиваются |
| `reverse` | Сегменты отправляются в обратном порядке |
### Временной джиттер
Случайная задержка между сегментами. Задаётся как диапазон **мин–макс** (мкс).
:::info
Джиттер используется, когда Seg2Delay (задержка между пакетами на вкладке [Общее](./general)) равен 0. Если Seg2Delay задан - он имеет приоритет.
:::
:::warning
Максимальный джиттер должен быть больше минимального.
:::
### Перекрытие последовательности (seqovl)
Добавляет фейковые байты с уменьшённым TCP sequence number. DPI видит фейковый заголовок протокола, а сервер отбрасывает перекрытие (у него уже есть правильные данные).
| Паттерн | Что видит DPI |
| --- | --- |
| `tls12` | Заголовок TLS 1.2 |
| `tls11` | Заголовок TLS 1.1 |
| `tls10` | Заголовок TLS 1.0 |
| `http_get` | HTTP GET-запрос |
| `zeros` | Нулевые байты |
| `custom` | Свои hex-байты |
### Мультидисордер
Аналогично combo - отправляет фейковые перекрывающие пакеты перед каждым реальным сегментом.
---
## Extension Split
Автоматически разделяет TLS ClientHello прямо перед расширением SNI. DPI видит неполный список расширений и не может распарсить SNI.
```text
[TLS Header] [Handshake] [Ciphers] [Ext₁] [Ext₂] | [SNI: youtube.com] [Ext...]
↑ разделение здесь
```
:::info Настройка не требуется
Extension Split работает автоматически. Используйте переключатель **Обратный порядок** и **Задержку между пакетами** (Seg2Delay) на вкладке [Общее](./general) для дополнительной настройки.
:::
---
## First-Byte Desync
Атака по таймингу: отправляет один байт (`0x16` - тип TLS-записи), делает паузу, затем отправляет остальной ClientHello. DPI видит неполную TLS-запись и не может распарсить SNI до истечения таймаута.
```text
[0x16] ──── пауза ──── [остальная часть TLS ClientHello...]
```
:::info Настройка не требуется
Задержка контролируется **Seg2Delay** на вкладке [Общее](./general). Минимум 100 мс применяется автоматически - если Seg2Delay меньше, b4 использует 100 мс.
:::
---
## OOB (Out-of-Band)
Вставляет байт с TCP URG (urgent) флагом в поток данных. Сервер игнорирует OOB-данные (они обрабатываются отдельно от основного потока), но DPI с отслеживанием состояния путается - видит лишний байт, который смещает его парсинг.
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Позиция вставки | Сколько байтов до точки вставки OOB. Задаётся как диапазон мин–макс | 150 |
| OOB байт | Байт, передаваемый через OOB (отображается символ + hex) | - |
---
## TLS Record Splitting
Разделяет ClientHello на несколько TLS-записей внутри одного TCP-пакета. DPI, ожидающий однозаписный хендшейк, не может сопоставить сигнатуру.
| Параметр | Описание | Диапазон |
| --- | --- | --- |
| Позиция разделения | Размер первой TLS-записи в байтах. Задаётся как диапазон мин–макс | 1100 |