Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

WG_PSK_AUTH_FAIL Сетевое оборудование и VPN

WireGuard Error: PresharedKey (PSK) authentication failure — Диагностика и исправление

Обновлено: 24.08.2026 · Официальная документация ↗

Рукопожатие 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.conf

2. Генерация нового валидного 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/0

4. Применение конфигурации на лету без разрыва других пиров

# На сервере
wg syncconf wg0 <(wg-quick strip wg0)

# На клиенте
wg-quick down client && wg-quick up client
💡 Практика специалистов: Частая ошибка: администраторы пытаются использовать публичный ключ (wg pubkey) вместо сгенерированного через 'wg genpsk'. PSK — это отдельный симметричный секрет, который не имеет пары Public/Private.

Частые вопросы (FAQ)

Зачем нужен PresharedKey в WireGuard, если уже используются асимметричные ключи?

PresharedKey добавляет уровень симметричного шифрования поверх протокола Noise_IK (превращая его в Noise_IKpsk2). Это обеспечивает защиту от атак с применением квантовых компьютеров (Post-Quantum Security).

Что произойдет, если PSK указан на клиенте, но отсутствует на сервере?

Рукопожатие будет отклонено сервером на этапе проверки криптографического аутентификационного тега, туннель не поднимется, трафик передаваться не будет.

Как безопасно передать сгенерированный PSK клиенту?

Передавайте файл конфигурации или QR-код исключительно по защищенным каналам (SCP, SFTP, PGP-шифрование, локальный менеджер секретов).

Влияет ли PresharedKey на скорость и производительность туннеля?

Нет. PSK участвует только в фазе вычисления ключей сессии (KDF2/KDF3) во время 2-шагового рукопожатия и не добавляет накладных расходов при последующей потоковой передаче ChaCha20-Poly1305.

Полезные материалы
Рекомендуем