Ошибка OpenVPN: AEAD Decrypt error: bad packet ID / tag mismatch
- В логах фиксируется поток предупреждений:
AEAD Decrypt error: bad packet ID (or tag mismatch); likely padding or authentication failure. - Внутри туннеля происходит потеря пакетов, падает скорость передачи данных и замирают TCP-соединения.
- Туннель разрывается и переходит в постоянный сброс сессии (
Soft reset / TLS renegotiation). - Проблема обостряется при высокой нагрузке на канал или нестабильном интернет-подключении (потери UDP).
1. Корректировка фрагментации и параметров MTU
Несоответствие размера пакетов и фрагментация промежуточными маршрутизаторами повреждают теги аутентификации AEAD (GCM/Poly1305). Добавьте в конфигурации сервера и клиента:
# Ограничение размера полезной нагрузки туннеля
tun-mtu 1420
# Принудительное ограничение MSS для TCP пакетов внутри туннеля
mssfix 13602. Проверка аппаратного ускорения шифрования (Crypto Acceleration)
Некоторые контроллеры или виртуальные CPU вызывают сбои при расчете инструкций AES-NI:
# Проверка поддержки AES-NI в Linux
grep -m1 -o 'aes' /proc/cpuinfo
# Временное переключение на ChaCha20-Poly1305 для проверки гипотезы аппаратного сбоя
# В конфиге сервера и клиента:
data-ciphers CHACHA20-POLY1305:AES-256-GCM3. Устранение дублирующихся сессий (Duplicate CN)
Если несколько клиентов одновременно используют один сертификат без директивы duplicate-cn, они перезаписывают состояние Packet ID друг друга:
# На стороне сервера разрешите разделение (если это осознанный шаг):
duplicate-cn
# Либо выпустите уникальный сертификат для каждого клиентского устройства (Production Best Practice)4. Отключение несовместимого сжатия трафика
Совместное использование сжатия и шифрования AEAD может приводить к рассинхронизации байт-оффсетов:
# Добавьте в конфиги сервера и клиентов:
comp-lzo no
push "comp-lzo no" Частые вопросы (FAQ)
Что такое Bad Packet ID в OpenVPN?
OpenVPN использует счетчик Packet ID для защиты от атак повторного воспроизведения (Replay Attacks). Если приходит пакет со старым счетчиком или счетчик перескакивает из-за потерь в сети, ядро отбрасывает его с этой ошибкой.
Опасна ли эта ошибка с точки зрения безопасности?
Нет, механизм AEAD корректно отработал и отклонил пакет, который не прошел проверку целостности или повтора. Опасность заключается только в ухудшении качества связи для пользователя.
Почему ошибка пропадает при переключении на TCP?
Протокол TCP гарантирует строгий порядок доставки пакетов и устраняет дубликаты на транспортном уровне, предотвращая рассинхронизацию счетчиков Packet ID.
Как влияет параметр replay-window на эту ошибку?
Увеличение скользящего окна повторов директивой replay-window 128 30 позволяет избежать ложных отбрасываний пакетов в сетях с сильным джиттером и нарушением очередности.