Есть у меня VPS сервер в Европе на Scaleway , и на нем крутился Wireguard. Теперь же почему-то не работает.... Ну и есть же подозрения на пакостников из роскомнадзора... Просто UDP трафик на разные порты проходит, но запустить на этих портах wireguard не получилось - возможно, через DPI блочится?
В логах клиента это выглядит так:
[ 5271.318754] wireguard: wg0: Interface created
[ 5271.324859] wireguard: wg0: Peer 20 created
[ 5271.339164] wireguard: wg0: Sending keepalive packet to peer 20 (123.123.123.123:7777)
[ 5271.339172] wireguard: wg0: Sending handshake initiation to peer 20 (123.123.123.123:7777)
[ 5276.450997] wireguard: wg0: Sending handshake initiation to peer 20 (123.123.123.123:7777)
(вместо 123.123.123.123 - IP моего VPS сервера и порт wireguard'а).
Вот возникла у меня мысль - а ведь wireguard ходит по обычному UDP, причем даже по высоким (непривелигированным) портам. Значит... вполне может существовать простой способ проверки, какой-нибудь wg-test, чтобы запустить его на обоих машинах, дать ему адрес сервера, и он бы попробовал установить wireguard соединение и передать какой-то контент (при этом в нем уже вшиты верные ключи). Есть ли что-то такое, или какой-то другой способ убедиться в одной из двух версий:
1. Wireguard не блокируется. Раз не работает - надо еще внимательнее искать ошибку в конфигурации, где-то что-то напутал
2. Wireguard блокируется. Не надо искать свою ошибку, проблема не на клиенте.
P.S.
соединения с другими wg серверами с того же компа - работает.
Отлично, помогло! Выходит, в самом деле DPI/РКН. Но я чуть автоматизировал - вставил это прямо в конфиг клиента wireguard, получилось примерно вот так:
MrBoRsCH, `PreUp` - это в конфиге клиента на Linux. Просто вызов команды перед поднятием тоннеля. Не знаю, понимает ли на андроиде эту команду, но она ведь вызывает еще и nping, то есть, чтобы она успешно отработала, и он должен быть на андроиде в таком случае - скорее всего она все равно работать не будет.
Terbyn, нет, конфиг сервера - обычный (и в этом большой плюс - работает даже с чужими wireguard серверами, если они блокируются через DPI, а не через IP/порты). Это прописывается на клиенте, чтобы перед соединением послать на сервер какой-то мусор и сбить с толку DPI. Соответственна, DEST_PORT и DEST_IP - это порт и IP адрес сервера. Настоящий, белый IP адрес (не приватный, который раздаваться будет). Но важно на клиентской стороне зафиксировать порт и его же указывать для nping (в моем примере, это 12345).
По сути вся эта строчка PreUp нужна просто для того чтобы автоматом пробивать дорогу через DPI. Сначала надо убедиться что вручную это работает (nping .... запускать руками, потом запускать wg), а потом уже перенести в PreUp.
Pifagorr, не весь wg блочится (у меня несколько, вот scaleway блочится, и google cloud похоже, блочится, но есть который работает без всяких хитростей, да еще и на 51821 порту). Ну и решение от ValdikSS рабочее, мне помогло.