AmneziaWG: Сброс инициализации Handshake из-за нераспознанной сигнатуры
- Клиент рапортует об отправке
Handshake Initiation, но таймер рукопожатия непрерывно сбрасывается каждые 5 секунд. - Серверный счетчик
latest handshakeв выводеawg showостается пустым. - Пакеты отбрасываются модулем ядра Linux на этапе валидации первой контрольной суммы.
- Сетевой захват tcpdump показывает входящие UDP пакеты, которые не попадают в туннельный сокет.
1. Анализ причины сброса рукопожатия
Пакет Handshake Initiation в AmneziaWG отбрасывается ядром или Go-демоном в трех случаях: несовпадение заголовка H1, некорректная длина мусорного префикса (Junk Packet), либо рассинхронизация параметров S1 / S2 (рандомизированный паддинг).
2. Трассировка входящего трафика на стороне сервера
# Запуск захвата на внешнем интерфейсе (например, eth0)
tcpdump -nnvv -i eth0 udp port 51820
# Просмотр логов модуля ядра
dmesg -wT | grep -i "amneziawg"3. Выравнивание параметров обфускации рукопожатия
Убедитесь, что параметры инициализации мусорных пакетов (Jc, Jmin, Jmax) и смещения (S1, S2) синхронизированы в конфигах:
[Interface]
# Количество отправляемых мусорных пакетов перед хендшейком (1-128)
Jc = 4
# Минимальный и максимальный размер мусора в байтах
Jmin = 50
Jmax = 1000
# Размер дополнительного паддинга пакетов Handshake Init (S1) и Handshake Response (S2)
S1 = 15
S2 = 20
H1 = 1029384756
H2 = 2039485761
H3 = 3049586712
H4 = 40596871234. Проверка и сброс состояния файрвола
iptables -F -t raw
iptables -t raw -A PREROUTING -p udp --dport 51820 -j NOTRACK Частые вопросы (FAQ)
Что такое Junk-пакеты (Jc) в AmneziaWG?
Это фиктивные UDP-пакеты случайной длины и содержимого, которые отправляются перед пакетом Handshake Initiation для разрушения сигнатурного анализа DPI.
Может ли значение S1 на сервере отличаться от значения S1 на клиенте?
Нет, параметры S1 (длина паддинга первого пакета) и S2 (длина ответа) должны быть строго одинаковыми на обоих концах туннеля.
Почему при неверном S1 handshake сбрасывается без ошибок в логах клиента?
Клиент отправляет зашифрованное тело с неверным смещением, в результате чего сервер не может расшифровать Noise-конверт и считает пакет поврежденным, отбрасывая его.
Влияет ли MTU провайдера на сброс Handshake Initiation?
Да, если сумма базового пакета WireGuard, длины S1 и оверхеда обфускации превышает MTU сетевого интерфейса, пакет фрагментируется и может отбрасываться провайдерским оборудованием.