Упрощённая инструкция по развёртыванию VLESS и Shadowsocks-2022 проксей на основе сервера XRay на линуксовом сервере

от автора

Что мы тут делаем?

1. Разворачиваем прокси на основе протоколов VLESS и Shadowsocks-22 при помощи сервера XRay

Зачем это нужно?

Роскомнадзор научился достаточно качественно блокировать популярные VPN-протоколы: OpenVPN, Wireguard и некоторые другие. VLESS позволяет маскировать трафик под обычное TLS-подключение к сайту, что на данном этапе развития возможностей Роскомнадзора обходит все существующие способы блокировки трафика и позволяет иметь нефильтрованный доступ в интернет.

Зачем тогда нужен Shadowsocks-22?

VLESS использует механизм «фронтирование» — с точки зрения цензора мы имитируем соединение к обычному сайту, а не к VPN или прокси. Для этого требуется не относящийся к делу сайт — например, microsoft.com. Иногда это может привести к проблемам: цензор может заблокировать доступ к сайту по домену, и тогда всё перестанет работать. В некоторых случаях владелец сайта может ограничить подключения к нему, заподозрив нехорошую деятельность с нашей стороны — и тогда всё тоже перестанет работать.

Прокси на Shadowsocks-22 разворачивается за компанию как запасной вариант доступа в сеть, на случай если VLESS-конфигурация вдруг перестанет работать.

Ограничения:

И VLESS, и Shadowsocks-22 — это именно ПРОКСИ, это не VPN. Со всеми вытекающими из этого нюансами.

Shadowsocks-22 более подвержен блокировке, поскольку с точки зрения фильтров цензора трафик выглядит как случайная каша. Это позволяет блокировать подобные прокси посредством введения «белых списков» — т.е. будет разрешён только тот трафик, который цензор явно узнает. Таким образом неоднократно блокировался доступ к Shadowsocks-прокси в Дагестане и Сибири. VLESS менее подвержен подобным блокировкам — на данный момент попытка его блокировки цензором приведёт к неработоспособности большинства сайтов.

Что потребуется?
1. Debian 11\12 или Ubuntu 22.04\24.04 + базовые навыки чтения и владения консолью
2. Сервер должен быть не в РФ — а например в Нидерландах. Такие можно купить за рубли и на российскую карту через множество хостеров (например IHOR или VDSina). Должно хватить любого сервера с 1-2 потоками и 512 мегабайт памяти.

Устанавливаем XRay на сервере:

1. apt install curl mc htop nano 2. bash -c «$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)» @ install 3. systemctl stop xray.service 4. ./usr/local/bin/xray uuid 5. ./usr/local/bin/xray x25519 (ключи стоит записать, они нигде не сохранятся в виде файла) 6. nano /usr/local/etc/xray/config.json

Пример конфига:

{ "log": { "loglevel": "info" }, "routing": { "rules": [], "domainStrategy": "AsIs" }, "inbounds": [ { "port": 42639, "tag": "ss", "protocol": "shadowsocks", "settings": { "method": "2022-blake3-aes-128-gcm", "password": "сюда вставить выхлоп команды openssl rand -base64 16", "network": "tcp,udp" } }, { "port": 443, "protocol": "vless", "tag": "vless_tls", "settings": { "clients": [ { "id": "сюда вставить ID из выхлопа ./usr/local/bin/xray uuid", "email": "user@server", "flow": "xtls-rprx-vision" } ], "decryption": "none" }, "streamSettings": { "network": "tcp", "security": "reality", "realitySettings": { "show": false, "dest": "www.microsoft.com:443", "xver": 0, "serverNames": [ "www.microsoft.com" ], "privateKey": "сюда вставить приватный ключ из выхлопа ./usr/local/bin/xray x25519", "minClientVer": "", "maxClientVer": "", "maxTimeDiff": 0, "shortIds": [ "сюда вставить выхлоп команды openssl rand -hex 8" ] } }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls" ] } } ], "outbounds": [ { "protocol": "freedom", "tag": "direct" }, { "protocol": "blackhole", "tag": "block" } ] }

Домен microsoft.com указан для примера, можно и нужно заменить на что-то своё. Крайне рекомендуется воспользоваться этим для нахождения подходящего домена для маскировки. Основное требование — поддержка TLSv1.3. Лучше всего выбирать сайт физически хостящийся в стране вашего сервера.

Подготавливаем строки конфигурации, которую можно вставить в клиента; выглядят примерно так:

VLESS:

vless://<ID из конфига>@<IP адрес машины>:443?security=reality&encryption=none&pbk=<публичный ключ из конфига>&headerType=none&fp=chrome&type=tcp&flow=xtls-rprx-vision&sni=<значение домена в serverNames из конфига>&sid=<значение shortIds из конфига>#<название под которым профиль будет сохранён в приложении>

Shadowsocks-22:

ss://<пароль из конфига shadowsocks>@<IP адрес машины>:<порт shadowsocks из конфига>#<название под которым профиль будет сохранён в приложении>

Любую из них можно запихнуть в QR в виде plain текста, большинство клиентов умеют их импортировать. Сгенерировать QR-код можно например здесь, нужно будет выбрать в поле «Contents» вариант «Text» и нажать кнопку «Generate».

Устанавливаем клиент и запихиваем в него конфиг.

Android: Hiddify https://github.com/hiddify/hiddify-next, v2rayNG https://github.com/2dust/v2rayNG/, Nekobox for Android GitHub — MatsuriDayo/NekoBoxForAndroid: NekoBox for Android / sing-box / universal proxy toolchain for Android

iOS: Foxray, Streisand (доступны в AppStore)

Десктопы: Nekoray https://github.com/MatsuriDayo/nekoray и Hiddify https://github.com/hiddify/hiddify-next

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

Обязательно перевесьте ssh с порта 22 на любой другой порт, куда-нибудь на 10-40 тысячные порты. Это нужно для того, чтобы сервер к которому мы отправляем наши соединения, прикидываясь законопослушным сайтом, не отвечал на ssh. Иначе для потенциального сканера Роскомнадзора это будет практически железобетонным аргументом для того чтоб решить что на этом сервере работает прокси и забанить его на ТСПУ.

Отрезолвьте домен который используется для фронтинга (домен из serverNames в конфиге) в IP при помощи nslookup и создайте следующие правила для файрволла:

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 443 -j DNAT --to-destination <IP>:443 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination <IP>:80

Что делают эти правила: форвардят трафик от потенциального сканера цензоров в сторону настоящего сайта, которым мы прикидываемся — т.е. UDP по порту 443 и TCP на порту 80. Это помогает с маскировкой.

Рекомендуется сделать эти правила persistent, т.е. запихнуть в rc.local, сервис systemd или куда-нибудь ещё.

Крайне рекомендуется изучить что такое routing. Это нужно в том числе для того чтобы пускать сайты находящиеся в РФ, а остальное через прокси. Если этого не делать — цензор может сопоставить ресурсы к которым вы обращаетесь, и предпололожить что вы пользуетесь прокси, после чего заблокировать его. Уже были случае таких блокировок в Китае, и было бы наивно предполагать что Роскомнадзор когда-нибудь этому не научится.

Ниже пример того как это настраивается в Nekoray на десктопе. Клиенты типа Hiddify при первом запуске предлагают выбрать регион работы, с автоприменением нужных правил маршрутизации на основе публичных geoip/geosite. Preferences->Routing setting->Simple route->Custom route и вставить конфиг. При необходимости — дополнить суффиксами или кейвордами. Список можно и нужно дополнять в зависимости от собственных предпочтений.

{ "rules": [ { "domain_keyword": [ "google", "vkontakte", "userapi", "yandex", "yastatic", "dzen", "yahoo", "microsoft", "tinkoff", "tbank", "gosuslugi", "lkfl", "lkfl2", "nalog", "sberbank" ], "outbound": "direct" }, { "domain_suffix": [ ".ru", ".su", ".by", ".рф", "vk.com", "userapi.com", "youtube.com", "gstatic.com", "gosuslugi.ru", "esia.gosuslugi.ru", "tbank.ru", "www.tbank.ru", "sme.tinkoff.ru", "lkfl2.nalog.ru", "sberbank.ru", "www.sberbank.ru", "sber.ru", "www.sber.ru", "online.sber.ru", "online.sberbank.ru" ], "outbound": "direct" } ] }

В моем тг канале я выложил все актуальные способы обхода блокировки YouTube с подробными инструкциями, можно подобрать для себя наиболее подходящие способы — для Smart TV, для ПК, Для Телефона, Android, IOS итд, а так же ссылки на статьи с различными настройками протоколов VLESS. Все в закрепе!


ссылка на оригинал статьи https://habr.com/ru/articles/844760/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *