Параметры Junk Packet в AmneziaWG (Jc, Jmin, Jmax, S1, S2, H1-H4): тюнинг
Симптомы блокировки WireGuard системами DPI
При использовании стандартного протокола WireGuard рукопожатие (Handshake) блокируется техническими средствами противодействия угрозам (ТСПУ / DPI). Соединение не устанавливается: отправленные пакеты растут (Sent packets), а принятые равны нулю (Received 0 B). Решением является переход на форк AmneziaWG с рандомизацией мусорных пакетов и заголовков.
| Параметр AWG | Расшифровка | Роль в обходе анализаторов DPI |
|---|---|---|
| Jc (Junk packet count) | Количество мусорных пакетов | Внедряет фиктивные пакеты перед handshake, сбивая сигнатурный анализ |
| Jmin / Jmax | Минимальный / максимальный размер junk | Рандомизирует длину пакета, устраняя сигнатуру фиксированной длины WG |
| S1 / S2 | Размер смещения инициализации (Init / Response) | Добавляет случайный шум к стандартным пакетам инициализации сессии |
| H1 — H4 | Кастомные заголовки сообщений | Заменяет фиксированные типы сообщений WireGuard (0x01, 0x02, 0x03, 0x04) |
Тонкая настройка конфигурационного файла AmneziaWG
Параметры обфускации должны быть абсолютно идентичными в секциях [Interface] клиента и сервера (за исключением кастомных настроек пиров).
- Пример эталонной конфигурации сервера (wg0.conf):
[Interface] Address = 10.8.0.1/24 ListenPort = 51820 PrivateKey = SERVER_PRIVATE_KEY # Параметры обфускации AmneziaWG: Jc = 4 Jmin = 40 Jmax = 70 S1 = 15 S2 = 30 H1 = 1284920194 H2 = 3948572019 H3 = 2938475012 H4 = 4857392018 [Peer] PublicKey = CLIENT_PUBLIC_KEY AllowedIPs = 10.8.0.2/32 - Пример клиентского конфига:
[Interface] PrivateKey = CLIENT_PRIVATE_KEY Address = 10.8.0.2/32 DNS = 1.1.1.1 Jc = 4 Jmin = 40 Jmax = 70 S1 = 15 S2 = 30 H1 = 1284920194 H2 = 3948572019 H3 = 2938475012 H4 = 4857392018 [Peer] PublicKey = SERVER_PUBLIC_KEY Endpoint = 203.0.113.10:51820 AllowedIPs = 0.0.0.0/0 - Рекомендации по подбору значений:
- Jc: держите в диапазоне
3–8. Слишком большое значение увеличивает задержку старта соединения (RTT latency). - Jmin и Jmax: задавайте в интервале от
10до100байт. - S1 и S2: задавайте в интервале от
15до50байт (но не более MTU). - H1-H4: генерируйте случайные положительные 32-битные целые числа (от 1 до 2147483647).
- Jc: держите в диапазоне
Внимание: Если значения заголовков H1-H4 на клиенте и сервере разойдутся хотя бы на одну цифру, рукопожатие не произойдет, и в логах клиента будет бесконечный статус «Handshake did not complete to peer».
Частые вопросы (FAQ)
Почему стандартный WireGuard легко блокируется провайдерами?
WireGuard имеет строго фиксированный размер пакета инициализации (148 байт) и ответа (92 байта), а также неизменные первые 4 байта заголовка, что делает его детектирование тривиальным для систем DPI.
Влияют ли параметры обфускации на максимальную скорость передачи трафика?
Практически нет. Мусорные пакеты отправляются только в момент инициализации сессии и рекеинга (rekeying). Основной поток шифрованного трафика идет с нативной скоростью ядра WireGuard.
Что делать, если мобильный клиент AmneziaWG быстро разряжает аккумулятор?
Уменьшите значение Jc до 2 или 3 и увеличьте интервал PersistentKeepalive до 25 секунд.
Поддерживает ли официальный клиент WireGuard конфиги с параметрами Jc/S1/H1?
Нет. Стандартный клиент WireGuard выдаст синтаксическую ошибку при разборе неизвестных директив. Необходимо использовать форк-клиент AmneziaWG.