WireGuard Error: PresharedKey (PSK) authentication failure — Диагностика и исправление
Рукопожатие WireGuard завершается аварийно на втором или третьем шаге обмена протокола Noise_IKpsk2. Клиент и сервер не могут расшифровать аутентифицированные сообщения.
- Соединение не устанавливается, вывод
wg showпоказывает отсутствие завершенного handshake. - В системном журнале ядра при включенном dynamic debug фиксируется ошибка:
wireguard: wg0: Invalid handshake response: bad MAC2/PSK authentication tag. - Захват трафика через
tcpdumpфиксирует отправку пакетовHandshake InitiationиHandshake Response, но передачи полезной нагрузки (Data packets) не происходит. - После удаления строки
PresharedKeyсоединение мгновенно восстанавливается.
1. Проверка структуры и значения PresharedKey
Параметр PresharedKey представляет собой 256-битный симметричный ключ в кодировке Base64. Он должен быть **абсолютно идентичным** в секциях [Peer] на стороне сервера и на стороне клиента.
# На сервере:
grep -i "presharedkey" /etc/wireguard/wg0.conf
# На клиенте:
grep -i "presharedkey" /etc/wireguard/client.conf2. Генерация нового валидного PresharedKey
Если ключ скопирован с ошибкой (лишние пробелы, неполная строка Base64), сгенерируйте новый ключ и распространите его на обе стороны:
# Генерация нового 256-битного ключа
NEW_PSK=$(wg genpsk)
echo "Generated PSK: $NEW_PSK"3. Обновление конфигурации сервера и клиента
Конфигурация сервера (/etc/wireguard/wg0.conf):
[Peer]
PublicKey = <Client_Public_Key>
PresharedKey = <Сгенерированный_NEW_PSK>
AllowedIPs = 10.0.0.2/32Конфигурация клиента (/etc/wireguard/client.conf):
[Peer]
PublicKey = <Server_Public_Key>
Endpoint = vpn.example.com:51820
PresharedKey = <Сгенерированный_NEW_PSK>
AllowedIPs = 0.0.0.0/04. Применение конфигурации на лету без разрыва других пиров
# На сервере
wg syncconf wg0 <(wg-quick strip wg0)
# На клиенте
wg-quick down client && wg-quick up client Частые вопросы (FAQ)
Зачем нужен PresharedKey в WireGuard, если уже используются асимметричные ключи?
PresharedKey добавляет уровень симметричного шифрования поверх протокола Noise_IK (превращая его в Noise_IKpsk2). Это обеспечивает защиту от атак с применением квантовых компьютеров (Post-Quantum Security).
Что произойдет, если PSK указан на клиенте, но отсутствует на сервере?
Рукопожатие будет отклонено сервером на этапе проверки криптографического аутентификационного тега, туннель не поднимется, трафик передаваться не будет.
Как безопасно передать сгенерированный PSK клиенту?
Передавайте файл конфигурации или QR-код исключительно по защищенным каналам (SCP, SFTP, PGP-шифрование, локальный менеджер секретов).
Влияет ли PresharedKey на скорость и производительность туннеля?
Нет. PSK участвует только в фазе вычисления ключей сессии (KDF2/KDF3) во время 2-шагового рукопожатия и не добавляет накладных расходов при последующей потоковой передаче ChaCha20-Poly1305.