AmneziaWG Error: S1 / S2 out-of-range header drop — Настройка оверхеда
Пакеты инициализации туннеля отбрасываются модулем ядра AmneziaWG из-за некорректного размера дополнительного смещения заголовков S1 и S2.
- В логах сервера:
amneziawg: awg0: Packet size does not match expected S1/S2 header padding / Dropping handshake. - Клиент отправляет
Handshake Initiation, но размер пакета не соответствует сумме148 + S1байт. - Сервер отправляет
Handshake Response, но клиент не может его обработать из-за несовпаденияS2. - Связь не устанавливается, трафик полностью блокируется.
1. Назначение параметров S1 и S2 в AmneziaWG
Параметры S1 и S2 изменяют стандартный фиксированный размер сообщений рукопожатия, добавляя в структуру пакета случайный мусорный хвост (Padding):
- S1 (Init Packet Junk Size): изменяет размер сообщения Handshake Initiation (стандартный размер:
148 + S1байт); - S2 (Response Packet Junk Size): изменяет размер сообщения Handshake Response (стандартный размер:
92 + S2байт).
2. Проверка соответствия S1 и S2 на сервере и клиенте
Убедитесь, что параметры абсолютно идентичны на обоих концах соединения:
# На сервере:
grep -E "S1|S2" /etc/amnezia/amneziawg/awg0.conf
# На клиенте:
grep -E "S1|S2" client.conf3. Рекомендуемые безопасные значения S1 и S2
Установите корректные значения (диапазон от 15 до 150 байт):
[Interface]
# Добавит к 148 байтам инициализации 20 байт мусора (Итого: 168 байт)
S1 = 20
# Добавит к 92 байтам ответа 40 байт мусора (Итого: 132 байта)
S2 = 404. Контроль превышения MTU
Убедитесь, что сумма базового пакета и S1/S2 не превышает MTU - 80. Для стандартных сетей значение S1/S2 < 200 полностью безопасно.
5. Перезапуск интерфейсов
# Сервер
awg-quick down awg0 && awg-quick up awg0
# Проверка активной конфигурации ядра
awg show awg0 Частые вопросы (FAQ)
Почему важно менять стандартный размер 148 байт (параметр S1)?
Системы фильтрации ТСПУ настроены на поиск UDP-пакетов размером ровно 148 байт с определенными сигнатурами. Параметр S1 изменяет длину пакета, делая его невидимым для таких фильтров.
Что произойдет, если на сервере указать S1 = 20, а на клиенте забыть указать S1?
Клиент отправит стандартный пакет 148 байт. Сервер ожидает 168 байт (148+20) и немедленно уничтожит пакет как поврежденный. Рукопожатие не состоится.
Могут ли параметры S1 и S2 быть равны нулю?
Да, S1 = 0 и S2 = 0 возвращают стандартные размеры пакетов рукопожатия WireGuard (148 и 92 байта), отключая маскировку длины.
Влияют ли S1 и S2 на размер обычных пакетов с данными (Data Packets)?
Нет. S1 и S2 влияют исключительно на начальные сообщения обмена ключами (Handshake). На размер потоковых пакетов с полезными данными они не влияют.