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

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

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

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

Ошибка WireGuard: Keypair mismatch – Peer public key does not match

Обновлено: 24.08.2026 · Официальная документация ↗
  • Интерфейс WireGuard успешно поднимается (interface: wg0 UP), но сетевой трафик не передается.
  • Рукопожатие не выполняется, в выводе wg show отсутствует строка latest handshake.
  • Приватный ключ на одной из сторон был перегенерирован, но публичный ключ не был обновлен на удаленном пире.

1. Проверка соответствия ключевой пары на клиенте

Вычислите открытый ключ непосредственно из текущего приватного ключа в конфигурационном файле клиента:

# Извлечение PrivateKey и генерация соответствующего PublicKey
CLI_PRIV=$(grep -i '^PrivateKey' /etc/wireguard/wg0.conf | awk '{print $3}')
echo "$CLI_PRIV" | wg pubkey

2. Сверка с конфигурацией сервера

Откройте конфигурацию сервера /etc/wireguard/wg0.conf и найдите блок [Peer] этого клиента:

# Значение PublicKey на сервере ДОЛЖНО СТРОГО совпадать с выводом команды выше
[Peer]
PublicKey = <ВЫЧИСЛЕННЫЙ_PUBLIC_KEY_КЛИЕНТА>
AllowedIPs = 10.0.0.2/32

3. Проверка публичного ключа сервера на клиенте

Выполните аналогичную проверку на стороне сервера:

SRV_PRIV=$(grep -i '^PrivateKey' /etc/wireguard/wg0.conf | awk '{print $3}')
echo "$SRV_PRIV" | wg pubkey

Убедитесь, что в файле клиента в секции [Peer] параметр PublicKey равен вычисленному ключу сервера.

4. Применение обновленных ключей без разрыва интерфейса

# Синхронизация конфигурации на лету
wg syncconf wg0 <(wg-quick strip wg0)
💡 Практика специалистов: Для предотвращения человеческих ошибок при настройке сотен пиров используйте инструменты автоматизации (Ansible, Terraform) или веб-интерфейсы управления (WGDashboard, Firezone, Wireguard-UI).

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

Как WireGuard реагирует на подключение с неверным ключом?

Сервер никак не отвечает и не логирует ошибки по умолчанию (для защиты от сканирования). Он просто игнорирует пакеты, не прошедшие проверку Noise IK рукопожатия.

Можно ли восстановить PrivateKey из PublicKey?

Нет, Curve25519 является односторонней криптографической функцией. Восстановить приватный ключ из публичного математически невозможно.

Нужно ли перезапускать весь сервер при добавлении нового пира?

Нет, достаточно выполнить wg set wg0 peer <PUBLIC_KEY> allowed-ips <IP/32> или использовать wg syncconf для применения файла без сброса существующих сессий.

Что произойдет, если два клиента используют одинаковый PrivateKey?

Они будут иметь одинаковый PublicKey, и сервер сможет маршрутизировать пакеты только на тот Endpoint, от которого пришел последний пакет, постоянно перехватывая сессию друг у друга.

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