Похоже, РКН использует DPI для блокировки некоторых VPN сервисов. В частности, Wireguard. Но ничего страшного, решение простое. Нужно просто прогнать немного мусора перед установлением wireguard-соединенения, и DPI его уже не сможет опознать. Еще тонкость - мусор надо гонять на тех же портах, по которым будет работать wireguard (в том числе и тот же клиентский порт):
[Interface]
PrivateKey = ....
Address = 10.9.0.2/24
ListenPort = 23123
PreUp = nping --udp --count 1 --data-length 16 --source-port 23123 --dest-port 12345 123.123.123.123
В нашем случае, у нас wg сервер работает на адресе 123.123.123.123:12345, мы фиксируем (через ListenPort) порт на клиенте, чтобы использовался 23123, и через директиву PreUp запускаем nping, который погоняет немного (16 байт) случайного мусора с порта 23123 клиента на wireguard. Наш сервер этот мусор переживет, а вот роскомнадзоровский DPI это запутает.
За идею спасибо ValdikSS, В оригинале описана здесь: https://ntc.party/t/wireguard/4968/6.
Аналогичное решение для Windows.
Кроме того, есть еще интересная идея, как спрятать wireguard трафик от РосКомПозора. Хоть сам по себе wireguard прятаться не умеет, у него нет цели быть незаметным, небольшая добавочка для NetFilter файрвола поможет достичь этой цели. Но это подходит, только если у вас и клиенты и сервер wireguard работают на Linux.
https://github.com/infinet/xt_wgobfs
В криптографическом плане, защита смешная, но для неуловимого Джо этого более чем достаточно.
Обход блокировки wireguard в Android
Делается аналогично, но как выполнить nping?
- Ставим пакет Termux https://play.google.com/store/apps/details?id=com.termux
- В Termux устанавливаем nmap (в состав nmap входит nping):
pkg install nmap
. На все соглашаемся, устанавливаем nmap и его зависимости - Когда установилось, так же выполняем команду
nping ...
.
Замечание - В этом методе так же требуется зафиксировать ListenPort и делать пинги с этого порта.