WireGuard Error: Underflow / overflow in replay counter — Защита от Replay атак
Передача трафика через туннель прерывается или сопровождается резким падением пропускной способности. В логах ядра фиксируются отброшенные пакеты.
- Сообщения в
dmesg:wireguard: wg0: Packet has invalid nonce/counter: underflow/overflowилиPacket is a replay! Dropping.. - Внезапные задержки и обрывы активных TCP-сессий при нестабильном интернет-канале (Wi-Fi, Satellite, LTE).
- Счетчик
rxперестает увеличиваться, несмотря на наличие входящих дейтаграмм на сетевой карте. - После ручного перезапуска туннеля трафик временно восстанавливается.
1. Принцип работы Replay Counter в протоколе WireGuard
WireGuard защищает трафик от атак повторного воспроизведения (Replay Attacks) с помощью 64-битного счетчика нонсов (Nonce) и скользящего окна (Sliding Window) размером 2048 пакетов. Пакеты, пришедшие вне пределов окна или повторно, немедленно отбрасываются ядром.
2. Анализ состояния нестабильности канала (Jitter / Packet Reordering)
Если пакеты в канале сильно переупорядочиваются (packet reordering) из-за проблем провайдера или агрегации каналов (Multipath), старые пакеты выпадают из окна валидации:
# Проверка стабильности задержек и переупорядочивания
ping -c 100 -i 0.1 <IP_СЕРВЕРА>
# Захват пакетов для анализа дубликатов
tcpdump -nn -i any udp port 51820 -c 10003. Устранение дублирования пакетов на сетевом оборудовании
Проверьте настройки сетевого оборудования на предмет петель коммутации (Spanning Tree Loops) или неправильной балансировки bond-интерфейсов:
# Проверка ошибок на физическом интерфейсе хоста
ip -s link show eth04. Принудительная инициализация нового сессионного ключа
Если счетчик нонсов переполнился (передано $2^{64}$ пакетов) или рассинхронизировался, принудительно вызовите повторное рукопожатие:
# Быстрый сброс сессии без размонтирования интерфейса
wg set wg0 peer <PublicKey> endpoint <Endpoint_IP:Port> Частые вопросы (FAQ)
Что означает ошибка Replay Attack в логах WireGuard?
Это означает, что модуль ядра получил пакет с номером счетчика (nonce), который уже был обработан ранее, либо его номер сильно отстал от текущего окна валидации (размер окна — 2048 пакетов).
Может ли злоумышленник внедрить данные при возникновении этой ошибки?
Нет. Механизм защиты WireGuard успешно перехватил и уничтожил подозрительный пакет, предотвратив атаку повторного воспроизведения.
Как часто WireGuard автоматически обновляет сессионные ключи?
WireGuard выполняет рекеинг (Rekeying) каждые несколько минут или после передачи определенного количества сообщений (Rekey-After-Messages), что автоматически сбрасывает счетчики нонсов.
Влияет ли аппаратное ускорение (Crypto Offload) на счетчики нонсов?
Сбои в прошивках некоторых сетевых карт с поддержкой hardware offloading могут вызывать дублирование UDP-дейтаграмм. В таком случае отключите generic-receive-offload: ethtool -K eth0 gro off.