Skip to main content

Настройка SHADOWSOCKS и REALITY или Не wireguard'ом единым

Еще один вариант прорыва цифровой блокады

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

Последние месяц многие пользователи Wireguard и OpenVPN столкнулись с переодической блокировкой этих протоколов со стороны провайдеров. В основном отличились операторы мобильной связи, но и некоторые провайдеры проводной связи так же поучаствовали. Блокировки все еще продолжаются, то здесь то там у людей WireGuard и OpenVPN на какое-то время работать перестают, потом начинают. По всей видимости операторы тестируют блокировки в разных сегментах сетей.

Естественно многие начали искать выход и нашли его при помощи Outline или AmneziaVPN, но обсуждать мы их сегодня не будем, т.к. первые как детище гугла страдают сбором телеметрии, а вторым просто респект, молодцы, но о WireGuard over ss, все таки стоит подумать, потому что OpenVPN over cloak хоть и не заблокировано но прямо совсем не быстро.

А говорить мы сегодня будет об установке X-Ray, графической панели 3X-UI для него и настройке одного из самых стойких к блокировке соединений на сегодняшний день.

Немного об X-Ray

X-Ray - это форк V2Fly, который форк V2Ray, который был придуман что бы как раз обходить dpi и другие штуки которыми государства пытаются навести цензуру в интернете. Если которотко то главный разработчик V2Ray перестал выходить на связь, и остальным разработчикам пришлось форкнуться, и так появился V2Fly, потом у разработчиков начались разногласия и часть из них форкнулась уже в X-Ray. И на данный момент разработчики X-Ray выглядят немного впереди планеты всей в плане улучшений протокла для снижения детектируемости и стойкости к блокировке.

Совчем чуть чуть о 3X-UI

3X-UI - это одна из многих web панелей для создания и управления X-Ray. А от многих ее отличает то что она поддерживает весь функционал сервера X-Ray, крайне легко и стабильно устанавливается, ну и поддерживает русский язык.

Побольше об установке

Установить 3X-UI и X-Ray можно в докер, можно на чистый сервер скриптом автор 3X-UI подготовил простой и понятный установщик подходящий для Centos 8 и выше, Ubuntu 20 и выше, Debian 10 и соответственно выше, а так же для Fedora 36 и ArchLinux, подробности об установке можно посмотреть в официальном гитхабе проекта.

Я в свою очередь подготовил скрипт обертку для Ubuntu 20 который дополнительно настроит firewall, установит вебсервер caddy для реверспроксирования, т.к. панель по умолчанию работает на http, с автоматическим получением и продлением ssl сертификата если у вас есть домен/сабдомен для сервера, либо с автоматическим выпуском самоподписанного сертификата если работать без домена. Дополнительно для повышения безопасности, что бы ни кто перебором дефолтных портов не наткнулся на адрес веб интерфейса в скрипте реализован запуск вебсервера на рандомном порту.

И так, нам понадоибится сервер на Ubuntu 20, и доступ пользователем root по ssh
С использованием windows cmd, PuTTy(последнее время многие рапортуют что оно тупит и не всегда верно передает пароль серверу, в результате чего не может авторизоваться), BitVise или то что вы предпочитаете и подключаетесь к вашему серверу и выполняете команду:

bash <(curl -Ls https://github.com/mozaroc/bash-hooks/raw/main/3xui_install.sh)

Скрипт не задвая лишних вопросов в течении 1-2 минут должен выполнится и в конце, если все прошло хорошо, вы увидите:

x-ui installation finished, it is running now...
###############################################
username: admin
password: admin
###############################################
The panel is available at https://X.X.X.X:51379
###############################################

Много о настройке

Первым делом, нам нужно сменить хост на котором слушает сама панель по http, с внешнего адреса на внутренний 127.0.0.1, а так же дефолтный пароль.

Открываем браузер и заходим по адресу который в конце нам выдал скрипт установщик. Если вы уже привязали к серверу какой-либо домен то можно сразу идти на домен.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Авторизуемся, заходим в настройки, и сразу указываем в качестве IP адреса панели адрес 127.0.0.1, сохраняем перезапускаем

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Это нужно для того что бы панель перестала светить протоколом http наружу, и к сожалению эта настройка доступна только через веб интерфейс, настроить это через консольные команды у меня не получилось.

После перезапуска панели веб страница попытается перенаправить вас на тот порт и адрес что указаны у нее в настройках и страница перестанет быть доступна, но нужно всего лишь перезайти по IP адресу сервера и порту на который заходили первоначально.

Далее меняем пароль в настройках безопасности

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

После подтверждения панель сделает автоматичесский logout, что бы вы могли авторизоваться с новым паролем.

Теперь можно переходить к настройке первого подключения. Подключения -> добавить подключение.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Для удобства разобью настройку подключения и первого клиента на три части, сначала настроим протоколы а затем первого клиента.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Примечание - название подключения
Протокол - vless
Порт IP - оставляем пустым, панель автоматически заполнит это поле
Порт - 443, т.к. мы хотим маскироваться под реальный https трафик

Далее проматываем вниз и включаем Reality, появится дополнительные поля

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

uTLS - я выбираю chrome, т.к. это основной мой браузер, но большая часть рекомендаций сходятся на том что нужно указывать firefox
Домен - панель заполнит автоматически
Dest и Server Names - рекомендуется указывать сайт за пределами РФ, не заблокированный РКН, без редиректов, очень хорошо если сайт имеет айпишник принадлежащий тому же хостеру где работает прокси. Подойдут сайты крупных технологических компаний, Microsoft, Samsung, Asus и т.д.
Private Key и Public Key - генерируем нажатием кнопки Get New Key

Возвращаемся к настройкам первого клиента

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Email - здесь не обязательно должен быть email, указываем что-нибудь что поможет в будущем идентифицировать клиента и протокол
Subscription - Поле оставляем пустым, вообще вешь полезная, но по умолчанию так же работает на http, о том как ее включить и настроить на https и прочее расскажу в следующий раз.
Flow - надо выбрать "xtls-rprx-vision", данное поле появится только после того как Reality будет включен.
Ждем Создать. И видим в списке подключенией что-то подобное:

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Список пользователей можно открыть по плюсику рядом с ID подключения, по кнопке меню можно добавить новых пользователей, как по одному так и массово.
Напротив каждого клиента видим кнопки QR-кода который достаточно отсканировать мобильным устройством и подключение на нем будет создано, если включена подписка то будет показано два кода, один для подключения, другой для подписки.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Кнопка изменения и кнопка информации, под которой можно посмотреть ссылку на подключение, и ссылку подписки по которой эту настройку сможет скачать клиент, а так же другие параметры подключения для пользователя если настраиваете клиент вручную.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Теперь о клиентах

На даный момент один из самых удобных и работающих клиентов это Nekobox/Nekoray
Есть сборки для Windows, Linux, MacOS, он же есть под Android.
Для iOS хорошо показал себя FoXray.

Для Windows и Linux качаем https://github.com/MatsuriDayo/nekoray/releases новые релизы выходят один раз в одну две недели.

Для MacOS https://github.com/abbasnaqdi/nekoray-macos/releases

Для Android https://github.com/MatsuriDayo/NekoBoxForAndroid/releases или из официального магазина, но там он платный.

Для iOS ищем FoXray в официальном магазине.

Сначала настроим клиент на ПК, я делаю на Linux, на Windows и Mac все аналогично.
Открываем информацию о пользователе и копируем URL. Запускаем Nekoray, при первом запуске он предложит выбрать ядро, выбираем sing-box. Сразу включаем Tun mode.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

URL подключения мы уже скопировали, идем в Server, Add profile from clipboard, или просто нажимаем Ctrl+V в интерфейсе и наше подключение сразу добавляется в клиенте.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Нажимаем enter или правой кнопкой по подключению и выбираем start. После появления галочки идем проверять на какой-нибудь 2ip.ru, если видим там IP адрес вашего сервера то все хорошо, прокси/VPN работает.

Для iOS устанавливаем ForXray, открываем, выбираем сканировать QR, сканируем

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Подключение сразу появляется в клиенте, запускаем и проверяем браузером

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Для Android идем на гитхаб https://github.com/MatsuriDayo/NekoBoxForAndroid/releases и скачиваем apk последнего релиза для архитектуры arm64

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Устанавливаем на телефон, и запускаем. У меня на Xiaomi с MiUI установилось без лишних вопросов. Далее нажимаем на плюсик в правом верхнем углу

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Выбираем Отсканировать QR-код.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Тапом выделяем появившееся подключение и нажимаем запуск

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Телефон скорее всего попросит разрешения на запуск впн подключений, их естественно нужно разрешить. И сразу будет видно запущенное и активное подключение плюс появится значок в трее.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

На этом собственно все, мы молодцы.
А если когда-нибудь статью удалят по планируемому закону, то вот вам ссылка на телеграм канал где так же будут появлятся гайды и обновления по этой теме

https://t.me/crazy_day_admin

Для тех кто дочитал до конца и решил попробовать вот промокод SEPTEMBER2023 на покупку сервера у компании VEESP по моей реферальной ссылке https://secure.veesp.com/?affid=860

Спасибо за внимание!

UPD:

Спасибо @KawaiiMonster за важное уточнение и дополнение в каментах:

Пару месяцев назад, Microsoft из-за наплыва людей, которые использовали на своих серверах резервный домен microsoft.com поменяли настройки TLS и в один момент у всех перестал этот Reality работать. Так как всё делали просто по гайдам, понимания того, что произошло небыло. Потом конечно всё стало понятно и люди переключился на другие домены, например Yahoo. Но сама суть Reality в том, чтобы маскировать вас под обычный сайт и довольно странно, что при переходе по вашему ip (при active probing) открывался сайт майкрософт или яху с совсем другим ip, от другого хостера с другой сети. Поэтому лучше всего использовать домен, который ведёт на ip из той же сети, что и ваш сервер с прокси. Но вот как найти такой домен, ещё и с tls 1.3 никто не говорит.

Есть инструмент,  RealiTLScanner, который можно скачать или себе на компьютер с виндой, либо себе на vps сервер с Linux и запустить сканирование. На винде команда примерно такая ".\RealiTLScanner-windows-64.exe -addr 1.1.1.1 -port 443 -thread 100 -timeOut 5"

Где 1.1.1.1 это адрес вашего сервера. Нужно дать секунд 5 - 10 посканировать и нажать Ctrl - c, выбрать домен с поддержкой tls 1. 3 и h2, например как на скрине.

Не wireguard'ом единым Linux, Гайд, Windows, Android, iOS, VPN, Длиннопост

Cкачать программу можно здесь
https://github.com/XTLS/RealiTLScanner/releases

UPD-2:

Так же была рекомендация отключить ICMP на сервере, нужно это для того что бы не работала функция обнаружения анонимайзеров на некоторых сайтах. Для убунту 20 это можно сделать так:
1. Подключаемся к серверу по SSH
2. Выполняем команды
- sudo sed -i '/ufw-before-input.*icmp/s/ACCEPT/DROP/g' /etc/ufw/before.rules
- sudo ufw reload