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

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

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

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

WireGuard не передает трафик (Handshake failed): решение проблемы

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

Симптомы сбоя: Send растет, а Receive равен нулю

В официальном клиенте WireGuard туннель переходит в активный статус (горит зеленый значок), счетчик отправленных пакетов (Data sent / Передано) непрерывно увеличивается, но счетчик принятых данных (Data received / Получено) остается равным 0 B или замирает на нескольких сотнях байт. Строка Latest handshake (Последнее рукопожатие) отсутствует вовсе.

Диагностика счетчиков трафика WireGuard

Показатель клиентаСостояние туннеляВ чем неисправность
Sent: 1.2 MB | Received: 0 BРукопожатие не состоялосьНеверный Public Key, закрыт UDP-порт на сервере или блокировка провайдером
Sent: 50 KB | Received: 48 KB (потом 0)Рукопожатие прошло, пакеты застрялиНе настроен IP Forwarding/NAT на сервере или завышен размер MTU
Latest Handshake: 5 seconds agoТуннель полностью исправенЕсли сайты не грузятся — дело исключительно в DNS

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

  1. Проверяем путаницу в публичных ключах (Главная ошибка новичков):

    В WireGuard используется строгая перекрестная схема ключей:

    • В конфиге Клиента в блоке [Peer] должен быть прописан Public Key СЕРВЕРА.
    • В конфиге Сервера в блоке [Peer] должен быть прописан Public Key КЛИЕНТА.
    • Ни в коем случае не копируйте Private Key в чужие блоки!
  2. Проверяем параметр Endpoint и порт:

    Убедитесь, что в файле клиента в строке Endpoint = IP_СЕРВЕРА:51820 указан правильный белый адрес сервера и открытый UDP-порт.

  3. Открываем UDP-порт в фаерволе сервера:

    WireGuard работает исключительно по протоколу UDP. Проверьте фаервол на Linux VPS:

    sudo ufw allow 51820/udp
    sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT
  4. Проверяем параметр AllowedIPs:

    На стороне сервера в блоке пира клиента строка AllowedIPs должна содержать точный внутренний IP клиента с маской /32 (например, AllowedIPs = 10.0.0.2/32).

  5. Уменьшаем размер пакета (MTU):

    При работе через мобильные сети или PPPoE стандартный размер пакета 1500 может фрагментироваться и блокироваться. Добавьте в блок [Interface] клиента строчку с пониженным MTU:

    MTU = 1280

Важно для РФ: Во многих регионах стандартный порт WireGuard (51820 UDP) и сигнатура протокола блокируются провайдерами через ТСПУ. Попробуйте сменить порт на нестандартный (например, 45678 UDP) или использовать обфускаторы AmneziaWG / ShadowRay.

💡 Практика специалистов: Если handshake успешен, но сайты открываются медленно или «зависают на 99%», проблема на 100% в параметре MTU. Установите MTU = 1280 или MTU = 1360 в свойствах интерфейса клиента.

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

Почему WireGuard всегда показывает «Подключено», даже если сервер выключен?

WireGuard — это протокол без сохранения состояния (Stateless). У него нет постоянной сессии, как у TCP. Клиент просто отправляет UDP-пакеты в пустоту и считает соединение включенным.

Что делает параметр PersistentKeepalive = 25?

Он заставляет клиента отправлять пустой проверочный пакет каждые 25 секунд, чтобы домашний роутер не закрывал состояние трансляции NAT в таблице соединений.

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

Выполните в терминале команду sudo wg show. Вы увидите список пиров, время последнего рукопожатия (latest handshake) и объем переданных данных.

Могут ли два разных клиента использовать один и тот же IP внутри AllowedIPs?

Категорически нет. Сервер WireGuard использует AllowedIPs для внутренней маршрутизации. Если у двух пиров совпадет IP, трафик пойдет только последнему ответившему.

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