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-сигнатуру.
Сбой или блокировка?
Сбой — это про сервер или маршрут. Симптомы: внезапно перестало работать у всех пользователей одного сервера, через час починилось само. Подключение зависает в 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 распознал сигнатуру. Сложность только в том, чтобы быстро понять, какая из четырёх ваша.
Самый быстрый шаг диагностики — попробовать тот же конфиг в другой сети или сверить замеры по операторам. После этого станет понятно, чинить конфиг или менять протокол.