WireGuard не подключается: частые причины

· Дмитрий Рябов

WireGuard не подключается чаще всего по одной из четырёх причин: оператор режет UDP, неверно указан endpoint, кривой AllowedIPs или ТСПУ распознал handshake-сигнатуру. Все они дают разные симптомы, и лечатся по-разному.

WireGuard — современный VPN-протокол, который работает поверх UDP и устанавливает соединение одним коротким handshake (Noise IK). Его сила — простота и скорость; его слабость — та же простота: первый пакет имеет очень узнаваемую структуру, и любой DPI его легко детектирует. В России это давно стало главной причиной массовых обрывов WG.

Дальше — пошаговая диагностика: как отделить «у меня кривой конфиг» от «оператор режет UDP» и от «ТСПУ убивает WireGuard как класс».

Коротко

  • WireGuard работает по UDP — если оператор режет UDP, handshake не пройдёт.
  • Зависание на handshake чаще означает «пакеты не доходят», чем «сервер ответил отказом».
  • Endpoint в формате host:port обязателен; пустой или с ошибкой — мгновенный фейл.
  • AllowedIPs = 0.0.0.0/0, ::/0 заворачивает весь трафик; если стоит подсеть — ходит только она.
  • NAT и CGNAT у мобильных операторов могут резать долго стоящие UDP-сессии — нужен PersistentKeepalive.
  • WG-сигнатура палится DPI; в RU-сетях часто помогает только AmneziaWG.

Почему WireGuard не поднимается: основные причины

WireGuard стартует так: клиент отправляет Initiation-пакет, сервер отвечает Response-пакетом, дальше идут data-пакеты. Если на любом из этих шагов происходит сбой, клиент покажет «handshake did not complete» или просто будет молчать в connecting.

Блокировка UDP

Некоторые операторы (особенно мобильные в моменты «учений» ТСПУ) режут произвольный исходящий UDP-трафик. TCP при этом работает. Косвенный признак — handshake не проходит ни в одной сети этого оператора, но WG идёт без проблем по Wi-Fi домашнего провайдера.

Неверный endpoint

Endpoint = host:port обязательно. Опечатка в домене, неверный порт, IP, который недоступен снаружи — handshake уходит в никуда. Проверяется elementарно: ping и проверка порта с другого хоста.

Кривой AllowedIPs

Если в AllowedIPs стоит, скажем, только 10.0.0.0/24, через WG ходит только эта подсеть, а весь остальной трафик идёт мимо туннеля. Соединение «работает», но интернет «не работает». Для полного туннеля нужен 0.0.0.0/0, ::/0.

NAT, CGNAT и keepalive

Мобильные операторы используют CGNAT с короткими таймаутами на UDP-сессии. Если клиент молчит дольше минуты, NAT может «забыть» сессию и обратные пакеты от сервера придут в никуда. Лечится опцией PersistentKeepalive = 25 в секции [Peer].

Сигнатура handshake

Первый пакет WG имеет фиксированную длину и характерный заголовок. DPI распознаёт его за один пакет и режет соединение. Это уже не про конфиг — это про сам протокол. Здесь либо смена на форк с обфускацией (AmneziaWG), либо заворачивание WG в обвязку.

Как понять, что именно сломалось

СимптомВозможная причинаЧто проверить
Handshake висит, пакетов нетUDP блокируется или сервер недоступенПопробовать с другого оператора / другой сети
Handshake проходит, но интернет «исчезает» через 5–10 секундDPI распознал WG и режет каналПерейти на AmneziaWG или другой обфусцированный форк
Соединение есть, но открывается только часть сайтовAllowedIPs ограничен подсетьюПоставить 0.0.0.0/0, ::/0
Туннель отваливается через минуту простояNAT/CGNAT убил UDP-сессиюДобавить PersistentKeepalive = 25
«Endpoint not specified» или «unable to resolve»Опечатка / неверный доменПроверить host:port вручную
Работает по Wi-Fi, не работает по LTEОператор режет UDP или сам WGСравнить замеры по операторам

Как проверить прямо сейчас

Чтобы понять, ваш ли это случай или общая проблема, запустите проверку через Freedom Checker. Мы постоянно пингуем популярные VPN-протоколы и сервисы с пробников в нескольких операторах и регионах. По карте быстро видно, где WG идёт, где режут UDP и где конкретный VPN-сервис недоступен.

Спецификация WireGuard и эталонные реализации доступны на wireguard.com — там же документация по handshake и формату конфига. Если нужен форк с обфускацией, поглядите AmneziaWG — он добавляет к классическому WireGuard слой, который ломает DPI-сигнатуру.

Проверить доступность через Freedom Checker

Сбой или блокировка?

Сбой — это про сервер или маршрут. Симптомы: внезапно перестало работать у всех пользователей одного сервера, через час починилось само. Подключение зависает в connecting, потому что пакеты до endpoint вообще не доходят.

Блокировка — это про оператора и протокол. Симптомы стабильные: WG не работает в одной сети, в соседней работает. Часто handshake проходит, а данные потом режутся — это сигнатурная блокировка. Тогда не помогает ни смена сервера, ни смена порта; нужен принципиально другой протокол (AmneziaWG, VLESS+REALITY) или обвязка поверх WG.

На что обратить внимание

  • Включите PersistentKeepalive = 25 — это обязательная настройка для мобильных сетей.
  • Проверьте AllowedIPs: для полного VPN-туннеля он должен быть 0.0.0.0/0, ::/0.
  • Если endpoint указан как домен, убедитесь, что DNS его резолвит — попробуйте подставить IP напрямую.
  • Сменa порта (например, 51820 → 443) иногда обходит грубые UDP-фильтры, но не сигнатурный DPI.
  • На Android приложение WireGuard не имеет встроенной обфускации — для устойчивости берите Amnezia.
  • Не путайте AmneziaWG и AmneziaVPN — первое это форк протокола, второе клиент.
  • Если handshake вообще не доходит ни до одного публичного сервера WG — почти наверняка оператор глушит UDP к нестандартным портам.

Вывод

WireGuard не подключается по очень предсказуемому списку причин: UDP не доходит, конфиг кривой, NAT убил сессию или DPI распознал сигнатуру. Сложность только в том, чтобы быстро понять, какая из четырёх ваша.

Самый быстрый шаг диагностики — попробовать тот же конфиг в другой сети или сверить замеры по операторам. После этого станет понятно, чинить конфиг или менять протокол.

Проверить сейчас