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

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

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

Handshake did not complete Сетевое оборудование и VPN

Ошибка WireGuard «Handshake did not complete»: решение проблемы

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

Симптомы ошибки соединения WireGuard

В интерфейсе клиента WireGuard (Windows, Android, iOS, macOS) статус туннеля горит зеленым («Подключено»), счетчик «Отправлено» (Sent) увеличивается с каждым кликом, однако счетчик «Получено» (Received) показывает 0 B. В логе клиента циклично повторяется ошибка:

Handshake for peer 1 (xxx.xxx.xxx.xxx:51820) did not complete, retrying after 5 seconds
Retrying handshake with peer...

Причины отсутствия рукопожатия (Handshake)

Причина сбояГде допущена ошибкаЧто проверить
Несовпадение открытых ключейКонфигурация PeerPublic Key клиента на сервере и сервера на клиенте
Закрыт входящий порт UDPФаервол сервера или роутер провайдераПроброс порта UDP 51820 (или кастомного)
Блокировка провайдеромЦСПА / DPI фильтрация провайдераСмена стандартного порта 51820 на нестандартный
Неверный адрес EndpointКонфигурация клиента [Peer]Правильность внешнего IP-адреса и порта сервера

Пошаговый чек-лист исправления ошибки рукопожатия

  1. Проверка соответствия пар ключей (Самая частая ошибка!):
    • В блоке [Peer] на клиенте должен быть прописан PublicKey сервера (НЕ приватный ключ сервера и не публичный ключ клиента!).
    • На сервере в блоке [Peer] клиента должен быть прописан PublicKey клиента.
  2. Проверка разрешения порта в фаерволе сервера:

    WireGuard работает исключительно по протоколу UDP. Убедитесь, что порт открыт в iptables/ufw:

    # Для Ubuntu/Debian:
    sudo ufw allow 51820/udp
    sudo ufw reload
    
    # Проверка прослушивания порта демоном WireGuard:
    sudo ss -u -l -p -n | grep 51820
  3. Добавление параметра поддержания сессии (PersistentKeepalive):

    Если клиент находится за домашним роутером или строгим NAT мобильного оператора, добавьте в конфигурационный файл клиента в секцию [Peer] строчку:

    PersistentKeepalive = 25
  4. Корректировка размера MTU:

    В некоторых мобильных сетях стандартный MTU 1420 слишком велик. Уменьшите его в секции [Interface] клиента:

    MTU = 1280

Особенность протокола WireGuard: WireGuard спроектирован по принципу «тишины в эфире» (Stealth). Если ключ или порт неверны, сервер никогда не отвечает кодами ошибок, чтобы не выдать свое присутствие сканерам сети. Клиент просто считает пакеты отправленными в никуда.

💡 Практика специалистов: Если handshake не проходит только у пользователей определенных мобильных операторов (МТС, Теле2, Билайн), это признак работы сигнатурного ТСПУ блокировщика протокола WireGuard. В таких случаях помогает замена стандартного порта 51820 на порты 443/UDP или 53/UDP, либо переход на протокол AmneziaWG с маскировкой заголовков (Jc/Jmin/Jmax).

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

Почему WireGuard пишет 'Подключено', если рукопожатие не прошло?

WireGuard не имеет постоянного состояния сессии. Клиент активирует виртуальный сетевой интерфейс локально сразу при нажатии кнопки 'Подключить', даже если удаленный сервер физически выключен.

Как сгенерировать правильный Public Key из имеющегося Private Key?

В консоли выполните команду: echo 'ВАШ_ПРИВАТНЫЙ_КЛЮЧ' | wg pubkey — утилита мгновенно выведет соответствующий открытый ключ.

Можно ли перевести WireGuard на работу по протоколу TCP?

Нативно протокол WireGuard работает строго поверх UDP. Для работы через TCP требуются сторонние туннели-обертки (например, wstunnel или shadowsocks).

Что означает статус 'Latest handshake: 1 minute, 10 seconds ago'?

Это означает, что рукопожатие прошло успешно. Нормальный интервал обновления ключей в WireGuard составляет от нескольких секунд до 3 минут.

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