Какой существует простой и универсальный (для разных устройств) способ подключения к VPN в условиях блокировки

Здравствуйте.
Есть существующая простая VPN сеть на основе wireguard. Она связывает через зарубежную VPS устройства семьи. Дома стоит NAS с разными докерсервисами. Выход в глобальную сеть только через VPS. Сейчас, когда начались проблемы с доступом, особенно у мобильных операторов (у меня МТС и Мегафон НН блочат подключение по wireguard и openvpn до зарубежной VPS беспрерывно с августа, а еще, как оказалось, даже если я дома с белым IP подниму wireguard, мобильный оператор все равно блокирует подключение wireguard к нему), я ищу какой-нибудь простой и универсальный пособ оставить имеющуся сеть, но при этом обойти блокировку на подключение.

Насколько я понял, тут нужно как-то обфусцировать подключение и дальнейшую передачу. Я читал про shadowsocks, cloak, wstunnel, udp2raw и другие инструменты. Вроде все на бумаге хорошо, только как их использовать на, допустим, смартфонах или планшетах? Там же не будет возможности создать интерфейс, через который можно будет пустить wireguard, не будет возможности добавить маршрут для подключения и т. д. То есть эти способы для мобильных устройств не работают. А какие есть универсильные способы тогда? Или можно забыть про них с мобильников и радоваться тому, что хотя бы на ноуте или десктопе смогу обойти?

Буду благодарен за наводки, а еще больше за статьи с подробностями настройки.

Сейчас удобно не получится. Только оборачивать привычные VPN протоколы (openVPN/Wireguard/etc) всякими прокси протоколами.

Wireguard + Cloak один из рабочик и удобных вариантов. Но удобный только между linux<->linux либо mac<->linux. С виндой просто не пробовал.

В принципе не важно cloak, udp2raw, dtlspipe , etc.

Между Android<->Linux удобно использовать туннель через протокол Trojan.
На Android - v2rayNG
На сервере - 3x-ui

Можете попробовать yggdrasil. Правда кажется там будет прокси.

Да, все что вы говорите, так. Но на мой вопрос, собственно не отвечаете (по крайней мере прямо). Мой вопрос: есть ли универсальный способ обфускации wireguard или другого VPN, чтобы работал на разрных платформах (iOS, macOS, GNU/Linux, iPadOS, Windows). Если нет, то прошу подсказать, как обфусцировать на iOS и iPadOS. Для остальных я уже разобрался и работаю через cloak.

Я, например, вижу, что у iOS и iPadOS в App Store есть некий Shadowrocket, который умеет shadowsocks с плагинами обфускации. Он платный. По описанию это просто прокси. На таком софте возможно пустить wireguard через shadowsocks на iOS? Может быть есть другие приложения, которые это позволяют?

От VPN мне отходить нельзя. В итоге любой инструмент, который я буду использовать, должен обеспечивать в первую очередь работу VPN. Без VPN у меня уже есть xray, который для меня чуть более, чем бесполезен в отсутствии доступа к другим устройствам, в т. ч. домашнему NAS.

Не знаю, какой иггдрасиль вы имели ввиду (нашел как минимум 3 программы с таким названием), но если это та, которая организует что-то вроде скрытой сети поверх существующей, то это не работает на apple устройствах, не говоря уже про то, что по отзывам там скорость работы пара сотен килобайт в лучем случае и не решает мою проблему с сохранением существующей инфраструктуры VPN.

Из вариантов мне известных раньше способ был, но за неуплату содержания приложения в эппстор этот вариант вендор удалил. Сейчас можно попробовать найти VPS в вашем регионе, куда не блокируются протоколы поддерживаемые вашими платформами, а для него уже настроить любой обфусцирующий/мимикрирующий протокол на зарубежный VPS (или наоборот, настроив reverse proxy).

Второй вариант — купить Android устройство для использования его в качестве роутера (VPNHotspot в помощь) и раздавать уже через него по WiFi устройствам эпл.

Да, как вариант. Я думал еще о покупке роутера с модемом для последующей перепрошивки под openwrt. Но пока хотелось бы обойтись малой кровью.

Как уже писал, даже до дома блокируется. Не знаю, кому это надо и зачем, ведь это банально ломает инфраструктуру организаций. Я пробовал вдсину, таймвеб, фвдс и еще кого-то. До всех блок. Я думаю, дело не в хостере VPS, а в том, что в НН серьезный блок по протоколам по отпечаткам. По крайней мере у МТС и Мегафон. ЧСХ дома Ростелеком, который не блочит.

Вариант роутера с модемом хуже, т. к. навряд ли сможете так же легко апгрейдить ПО по мере развития блокировок, как на Android устройстве (либо такой универсальный роутер будет стоить втридорога).

Понятно. Да, сейчас вводят белые списки для господ.

Под фразой

Сейчас удобно не получится.

Я как раз имел ввиду, что универсального способа, под все платформы, где все из коробки на данный момент не существует. Увы придется самостоятельно собирать из различных компонентов схемы который вас устроят. Причем под разные платформы разные схемы.

От VPN мне отходить нельзя.

И не надо. По крайней мере на Win/Mac/Linux. Вы по прежнему используете Wireguard или OpenVPN. Просто дополнительно трафик заворачиваете в прокси протоколы.

iOS и iPadOS

Вот тут посмотрите. Тут придется отказаться от WG/openVPN.

Автору вопроса необходим IP туннель до своего NAS.

Похоже на что-то такое. На VPS надо будет только маршрутизацию настроить. Сам Home Router должен быть на чем-то линуксовом, чтобы cloak запусить полагаю.

Как в такой схеме настроить маршрутизацию, чтобы trojan или ss клиент имел доступ к ресурсам wireguard, например, NAS? Если все так просто, как вы описываете, то все, что я описал в ОП вообще не проблема.

Я попробовал добавлять правило в iptables вида:

iptables -t nat -I PREROUTING -d 192.168.1.211 -j DNAT --to-destination 10.70.0.4

Форвардинг, естественно, включен. В конфиге wireguard сервера в отношении этого пира прописано:

# nas                    
[Peer]
PublicKey = 
PresharedKey = 
AllowedIPs = 10.70.0.4/32

В конфиге wireguard NAS:

[Interface]
Address = 10.70.0.4/24
PrivateKey = 

[Peer]
Endpoint =
AllowedIPs = 10.70.0.0/24
PublicKey = 
PresharedKey = 
PersistentKeepalive = 25

Доступ к NAS по IP 192.168.1.211 и 10.70.0.4, если клиент, с которого пытаюсь получить доступ, подключен к ss/trojan до VPS с wireguard, но находится не в той же LAN, а, например, через LTE, отсутствует. Интернет работает штатно. SS/Trojan поднял через shadowrocket. Там же попробовал VLESS+XTLS-Reality, тоже работает.

Что нужно поправить в маршрутизации/конфигах для получения доступа к клиентам wireguard через VPS со стороны клиента, подключенного к этой же VPS через ss/trojan/vless? Пробовал в конфиге shadowrocket в настройках маршрутизации направлять трафик на 10.70.0.4 через proxy - не помогло.

может этого не хватает?
iptables -t nat -A POSTROUTING -j MASQUERADE

Маскарадинг есть, конечно. Это я описал то, что добавил для работы с ss/trojan/vless. Полный список правил:

Chain INPUT (policy DROP 276K packets, 36M bytes)
 pkts bytes target     prot opt in     out     source               destination         
72644 2912K DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
    3   292 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
 724K 4109M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
 4080  156K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
   16   960 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22122
16245 2859K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:49999
    1    82 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:50099
 2055  126K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
    4  2734 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:443
 3268  209K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:59997
  175 76661 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:59997
    0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:5201
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5201

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    40 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
  418 77392 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  wgserv0 eth0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  eth0   wgserv0  0.0.0.0/0            0.0.0.0/0           
    2   168 ACCEPT     all  --  wgserv0 wgserv0  0.0.0.0/0            0.0.0.0/0           
   69  4337 ACCEPT     all  --  tun0   eth0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  eth0   tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun0   tun0    0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     all  --  tun0   wgserv0  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 649K packets, 2069M bytes)
 pkts bytes target     prot opt in     out     source               destination         
  189  8664 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       all  --  *      *       0.0.0.0/0            192.168.1.211        to:10.70.0.4
2500K  268M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
12248  853K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0 

Что-то может быть не совсем оптимально, я не спец. Но работает.

Оптимальным будет вместо iptables использовать людской firewalld с настроенным policy ingress-zone и egress-zone.

Вспомнил про приложение nekobox на андроид. Это клиент для различных прокси/vpn типа vless, ss, wg, hysteria… Там есть возможность создавать proxy chain, т.е. например можно подключаться к wireguard через vless или ss.
Все это в теории, сам лично не пробовал wg over vless/ss чисто с помощью этой проги (без отдельного клиента wg).
Через ядро sing-box в этих прогах можно так же просто пробросить порт с локалхоста на сервер через различные протоколы (и это я уже пробовал, проброс порта wg через vless работает)

Так все же к вопросу о маршрутизации. Подскажите, пожалуйста, как сконфигурировать iOS/iPadOS устройство, чтобы подключаясь, например, по shadowsocks до VPS, это устройство могло взаимодействовать с wireguard пирами этой же VPS?

ну так проброс порта не подходит? или на ios не получится?
вот примерный конфиг проброса порта для проги https://sing-box.sagernet.org/installation/clients/sfi/
wg_over_ss.json (653 байта)
измени под свой сервер, импортируй в прогу и стартуй, потом в wg клиенте поменяй endpoint на 127.0.0.1:1025. В wg клиенте добавь прогу sing-box в исключения

Такой вариант не сработает, т. к. в системе может быть активно только 1 такое подключение: или в sing-box, или wireguard. Как только включаешь одно, выключается другое.

Выше писали про подключение через trojan к серверу и давали схему. Насколько я понял, имелось ввиду что схема удовлетворяет моим требованиям, т.е. можно будет подключаться к пирам wireguard.

Поясните, пожалуйста, про маршрутизацию на сервере для получения доступа из trojan к пирам wireguard. Выше я дал свои правила iptables. Форвардинг включен. Доступа нет.