AmneziaWG: Сервер отклонил Junk Packet из-за недопустимой длины
- Сервер регистрирует ошибки в журнале ядра:
AmneziaWG: junk packet length out of bounds. - Клиент успешно отсылает префиксные мусорные пакеты, но сервер игнорирует последующий Handshake Initiation.
- Нестабильная установка сессии: рукопожатие проходит только в 1 случае из 10 попыток.
- Сброс соединения при сильной разнице в размерах сетевых MTU промежуточных узлов.
1. Архитектура Junk Packets в AmneziaWG
Перед инициализацией защищенного соединения AmneziaWG отправляет Jc случайных пакетов, длина которых динамически генерируется в замкнутом диапазоне от Jmin до Jmax байт. Если клиент присылает мусорный пакет размером меньше Jmin или больше Jmax, сервер считает его нелегитимным и сбрасывает соединение.
2. Проверка валидности границ Jmin и Jmax
Параметры должны подчиняться жесткому правилу: 0 <= Jmin <= Jmax <= (MTU - 28). Пример безопасной конфигурации:
[Interface]
# Количество пакетов мусора
Jc = 4
# Минимальная длина (байт)
Jmin = 40
# Максимальная длина (байт)
Jmax = 7003. Синхронизация диапазонов на стороне сервера и клиента
Убедитесь, что на сервере диапазон [Jmin, Jmax] равен или шире клиентского:
# Конфигурация сервера (/etc/amnezia/amnezia-wireguard/awg0.conf)
Jmin = 20
Jmax = 1000
# Конфигурация клиента (client.conf)
Jmin = 50
Jmax = 8004. Проверка через утилиту awg
awg show awg0
# Мониторинг отброшенных пакетов в реальном времени
ip -s link show awg0 Частые вопросы (FAQ)
Почему Jmax не может быть больше MTU интерфейса?
Если размер мусорного пакета превышает MTU, он подвергается IP-фрагментации. Детекторы DPI легко идентифицируют фрагментированные UDP-пакеты с высокой энтропией.
Что произойдет, если установить Jmin = Jmax?
Все мусорные пакеты будут иметь одинаковый фиксированный размер, что создаст постоянный сигнатурный паттерн, облегчающий блокировку системами фильтрации.
Какое максимальное значение параметра Jc (Junk Count) поддерживается?
Максимальное рекомендуемое значение Jc составляет 128. Однако значения выше 10 создают ощутимую задержку (до 1-2 секунд) при начальном подключении.
Зачем нужны Junk-пакеты, если есть параметры H1-H4?
H1-H4 меняют заголовки внутри протокола, а Junk-пакеты маскируют начало сессии, сбивая с толку автоматы состояний DPI (Stateful Inspection).