Ник Пост Дата
Hvuplaw(Hvuplaw)

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

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

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

2023-09-08T08:29:00.132Z
atomlab(Atomlab)

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

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

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

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

2023-09-08T09:01:18.393Z
anon94384997

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

2023-09-08T09:49:30.411Z
Hvuplaw(Hvuplaw)

Да, все что вы говорите, так. Но на мой вопрос, собственно не отвечаете (по крайней мере прямо). Мой вопрос: есть ли универсальный способ обфускации 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.

2023-09-08T11:51:43.397Z
Hvuplaw(Hvuplaw)

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

2023-09-08T11:54:06.612Z
Xunlei

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

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

2023-09-08T12:13:33.794Z
Hvuplaw(Hvuplaw)

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

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

2023-09-08T12:20:39.174Z
Xunlei

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

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

2023-09-08T12:26:34.011Z
atomlab(Atomlab)

Под фразой

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

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

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

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

iOS и iPadOS

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

2023-09-08T12:43:15.071Z
Xunlei

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

2023-09-08T12:46:39.410Z
atomlab(Atomlab)

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

2023-09-08T13:28:50.375Z
Hvuplaw(Hvuplaw)

Как в такой схеме настроить маршрутизацию, чтобы 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 - не помогло.

2023-09-08T20:55:46.062Z
0ka(0ka)

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

2023-09-09T00:29:40.385Z
Hvuplaw(Hvuplaw)

Маскарадинг есть, конечно. Это я описал то, что добавил для работы с 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 

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

2023-09-09T12:04:01.830Z
Xunlei

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

2023-09-09T13:06:40.924Z
0ka(0ka)

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

2023-09-09T21:56:34.760Z
Hvuplaw(Hvuplaw)

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

2023-09-09T23:39:50.008Z
0ka(0ka)

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

2023-09-10T11:49:54.536Z
Hvuplaw(Hvuplaw)

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

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

2023-09-11T05:10:39.509Z
Hvuplaw(Hvuplaw)

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

2023-09-11T06:02:38.210Z
0ka(0ka)

“такое подключение” это какое такое? sing-box это прокси, wireguard это vpn

2023-09-11T11:23:32.809Z
Hvuplaw(Hvuplaw)

В iOS они работают на уровне VPN. Есть глобальное меню разрешений и они там равноправные, хотя я с вами согласен, sing-box прокси. Однако при включенном proxy в sing-box wireguard сразу же отключается vice versa. Тоже самое, к слову, происходит с приложениями WingsX и Shadowrocket с любым типом прокси.

2023-09-11T13:20:43.035Z
0ka(0ka)

мой кастомный конфиг sing-box не создает tun адаптер, не активирует системный впн, а только открывает порт. вы точно его пробовали?

2023-09-11T18:13:52.554Z
Sofi

Полную топологию сети и ваши хотелки можете более подробно описать?

2023-09-11T22:00:56.233Z
0ka(0ka)

еще как вариант: wg outbound на xray сервере

2023-09-11T22:58:29.236Z
lord(Savely Krasovsky)

Так ничего не мешает вам в iOS/Android клиентах sing-box на inbound указать не socks, а TUN. Тогда приложение запросит системный доступ на создание VPN.

2023-09-14T11:52:27.118Z
0ka(0ka)

Мне нужно подключить другое впн приложение как системный впн, чтобы оно работало через sing-box. И у меня там нет socks inbound, а только direct. Tun inbound выключится когда я запущу другое vpn приложение…

2023-09-14T13:39:53.543Z
NimuraF(Balbes)

А есть какой-нибудь подробный гайд по связке wireguard + cloak? А то на просторах интернета мне такого найти не удалось.

2023-09-20T19:01:08.201Z
atomlab(Atomlab)

Да, я настраивал по инструкции в README.md GitHub - cbeuw/Cloak: A censorship circumvention tool to evade detection by authoritarian state adversaries. Там все довольно просто.
Так же помогли примеры конфигов https://github.com/cbeuw/Cloak/tree/master/example_config

2023-09-21T05:48:52.908Z
NimuraF(Balbes)

Понял, благодарю за ответ, я усложнил себе жизнь тем, что пытался всё это в мульти-сервисный контейнер засунуть и ничерта не получалось)

2023-09-21T14:20:49.453Z