WireGuard Error: Cookie reply rejected due to invalid timestamp — Решение
При высокой нагрузке на VPN-сервер клиенты не могут установить соединение, а пакеты аутентификации Cookie сбрасываются ядром.
- В логах ядра:
wireguard: wg0: Could not decode cookie response / Invalid cookie timestamp. - Клиент циклически отправляет
Handshake Initiation, получаетCookie Reply, но не может успешно завершить аутентификацию. - Значительное расхождение локального времени на клиенте и сервере (более 120 секунд).
- Сбой рукопожатия при резком всплеске нагрузки (SYN/UDP flood на порт VPN).
1. Принцип работы защитного Cookie-механизма
Когда сервер перегружен, он перестает отвечать на обычные инициализации и требует от клиента подтверждения владения IP-адресом через отправку зашифрованного Cookie-токена, содержащего метку времени (Timestamp) и MAC-аутентификатор.
2. Проверка и синхронизация системного времени
Метки времени в Cookie валидируются со строгим интервалом. Рассинхронизация часов приводит к немедленному отклонению токена:
# Проверка статуса синхронизации на сервере и клиенте
timedatectl status
# Принудительная синхронизация через chrony
chronyc sources -v
chronyc makestep3. Мониторинг входящего флуда на порт WireGuard
Проверьте, не находится ли сервер под сетевой атакой, вызывающей принудительный переход WireGuard в режим Cookie-защиты:
# Анализ pps (пакетов в секунду) на интерфейсе
iftop -i eth0 -P
# Подсчет UDP-пакетов на порту 51820
tcpdump -nn -i eth0 udp port 51820 | pv -l -r > /dev/null4. Ограничение нежелательного трафика через iptables / nftables
Защитите порт WireGuard от чрезмерного флуда с одного IP-адреса:
iptables -I INPUT -p udp --dport 51820 -m state --state NEW -m hashlimit --hashlimit-name wg_limit --hashlimit-above 20/sec --hashlimit-burst 50 --hashlimit-mode srcip -j DROP5. Перезапуск интерфейса
wg-quick down wg0 && wg-quick up wg0 Частые вопросы (FAQ)
Почему Cookie Reply отправляется в открытом виде?
Cookie Reply не содержит конфиденциальных данных и шифруется специальным ключом Cookie-секрета (обновляемым каждые 2 минуты), чтобы не расходовать ресурсы процессора на расшифровку при атаках.
Каков допустимый дрейф времени для Cookie-пакетов?
Таймстемп в Cookie-пакетах должен укладываться в скользящее окно валидности секрета (120 секунд), иначе токен считается устаревшим.
Можно ли отключить Cookie-защиту в WireGuard?
Нет, механизм встроен в протокол на уровне ядра Linux и активируется автоматически, когда очередь входящих пакетов рукопожатия превышает безопасный порог.
Помогает ли смена ключей при ошибках Cookie Timestamp?
Нет. Проблема кроется исключительно в рассинхронизации часов (NTP) или перегрузке сетевого буфера хоста.