Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

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

В своем тг-канале я выложил все актуальные способы ускорения Ютуба

Почему 3X-UI? Существует, на самом деле, довольно много панелей для V2Ray/XRay: оригинальный X-UI, Marzban, Libertea, Hiddify. Проблема в том, что в процессе экспериментов заставить их нормально работать с пол-пинка не получилось. Например, одним из требований была установка в Docker (чтобы не создавать бардак в системе и не запускать непонятные bash-скрипты на хосте вне контейнера), и на этом этапе отвалились уже многие панели: у каких-то установка падала еще на этапе разворачивания docker-контейнера из-за ошибок в скриптах, какие-то устанавливались, но не могли нормально запуститься (фронтенд говорил, что не может подключиться к бэкенду), какие-то в итоге запускались, и после получаса тыканья везде в попытках переключить язык с китайского или фарси хотя бы на английский выяснялось что что-то глючит или не работает.

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

Выбор домена для маскировки

Нам нужно найти сайт, под который мы будем маскироваться.

Требования довольно простые:

это должен быть иностранный сервер (вне РФ), не забаненный по домену Роскомнадзором, поддерживающий подключения по TLSv1.3 и HTTP/2, имеющий заглавную страницу, которая не переадресовывает на какой-нибудь другой домен. Если совсем упарываться, то неплохо было бы если бы IP-адрес был из диапазона того же облачного хостера, что и у вас, и чтобы сервер поддерживал Online Certificate Status Protocol (OCSP). Если вы не знаете, что вся эта фигня значит - не заморачивайтесь, выбирайте что-нибудь простое, например

  • www.samsung.com:443
  • www.googletagmanager.com:443
  • www.asus.com:443
  • www.amd.com:443
  • www.cisco.com:443
  • www.microsoft.com:443
  • dl.google.com:443
  • www.linksys.com:443
  • www.nvidia.com:443и т.д.

Лучше всего выбирать что-нибудь из сети того же хостера, каким пользуетесь вы.Для этого есть специальный инструмент: https://github.com/XTLS/RealiTLScanner

Скачиваете его под Windows/Linux со страницы Releases, или собираете сами (go build).

Далее, запускаете как-то так:

./RealiTLScanner -addr IP_вашего_VPS -showFail

и ждете.

Сканер будет перебирать IP-адреса из той же подсети, что и ваш сервер, и пытаться к ним подключиться по TLS. Если он что-то найдет - вы это увидите. Пример (я сканирую рандомный IPшник):

89.116.243.206:443 TLS handshake failed: EOF 89.116.243.207:443 TLS handshake failed: EOF 89.116.243.208:443 ----- Found TLS v1.3 ALPN CN=caprover.com,O=CapRover.com,L=Vancouver,ST=British Columbia,C=CA,1.2.840.113549.1.9.1=#0c11696e666f40636170726f7665722e636f6d 89.116.243.209:443 TLS handshake failed: EOF 89.116.243.210:443 ----- Found TLS v1.3 ALPN CN=patentpath.io 89.116.243.211:443 ----- Found TLS v1.3 ALPN CN=vps3.gecon.pl 89.116.243.212:443 TLS handshake failed: EOF 89.116.243.213:443 TLS handshake failed: EOF 89.116.243.214:443 TLS handshake failed: EOF 89.116.243.215:443 TLS handshake failed: read tcp 192.168.136.132:55142->89.116.243.215:443: i/o timeout 89.116.243.216:443 ----- Found TLS v1.3 ALPN CN=localhost,OU=none,O=none,L=Sometown,ST=Someprovince,C=US,1.2.840.113549.1.9.1=#0c137765626d6173746572406c6f63616c686f7374 89.116.243.217:443 TLS handshake failed: EOF 89.116.243.218:443 TLS handshake failed: EOF 89.116.243.219:443 TLS handshake failed: EOF 89.116.243.220:443 TLS handshake failed: EOF 89.116.243.221:443 TLS handshake failed: EOF 89.116.243.222:443 ----- Found TLS v1.3 ALPN 89.116.243.223:443 ----- Found TLS v1.3 ALPN CN=milapanel.milahosting.com 89.116.243.224:443 ----- Found TLS v1.3 ALPN CN=vps-us.workx.dev 89.116.243.225:443 ----- Found TLS v1.3 ALPN CN=www.google.com 89.116.243.226:443 ----- Found TLS v1.3 ALPN CN=www.bookifynow.com 89.116.243.227:443 ----- Found TLS v1.3 ALPN CN=next.tasosvl.cc 89.116.243.228:443 TLS handshake failed: EOF 89.116.243.229:443 ----- Found TLS v1.3 ALPN CN=alpaca-dreams.com 89.116.243.230:443 TLS handshake failed: EOF

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

Установка панели 3-XU (X-UI)

Официальный репозиторий 3X-UI: https://github.com/MHSanaei/3x-ui

Официальный репозиторий форка X-UI: https://github.com/alireza0/x-ui

Итак, дано: VPS с IPv4 (неплохо бы иметь еще IPv6, но не обязательно) и Debian либо Ubuntu Linux (на других дистрибутивах суть будет примерно та же самая). И установленные Docker и docker-compose (если вдруг нет - следуйте инструкциям для вашего дистрибутива, у меня без проблем установилось простым "apt install docker.io docker-compose"). Ну и git в придачу.

Сначала клонируем исходники. Лучше всего использовать последнюю стабильную версию, можно проверить в "Releases" на гитхабе.

Для 3X-UI:

git clone https://github.com/MHSanaei/3x-ui.git cd 3x-ui git checkout v1.4.6

Для X-UI:

git clone https://github.com/alireza0/x-ui.git cd x-ui git checkout 1.4.1

Запускаем docker-compose:

docker-compose up -d

Готово! Вы восхитительны! Я серьезно, все, панель установлена и работает.

Дело осталось за малым - настроить ее:

Для 3X-UI идем браузером по адресу http://yourserverip:2053/panel/, где yourserverip - IP-адрес вашего сервера или доменное имя, если оно у вас есть и настроено (обратите внимание, протокол http://, а не https://). Для X-UI нужно сначала посмотреть с помощью команды "docker logs x-ui", на каком именно порту запустилась панель.

Логинимся под стандартными реквизитами admin/admin и видим нашу прекрасную панель управления:

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Первым делом я советую сделать несколько вещей. Перейти в "Settings" (настройки) и там:

  • Изменить порт на котором работает панель со стандартного 2053 на какой-нибудь другой (лучше всего где-нибудь в верхнем конце диапазона, до 65535) - обязательно ;
  • Изменить корневой путь URL-адреса панели с / на что-то типа /mysecretpanelroot/ - обязательно;
  • При желании переключить язык на русский (но имейте в виду, в русском переводе есть некоторые неточности, сбивающие с толку);
  • На второй вкладке "Настройки безопасности" изменить стандартный админский пароль на свой - обязательно;
  • После чего сохраняем настройки и рестартуем панель. Нужно будет изменить URL с учетом нового порта и пути, заданных в настройках.
Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер
Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

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

Создаем подключения

Идем в раздел меню Inbounds (в русском переводе он почему-то называется "Пользователи", это неправильно и сбивает с толку). Нажимаем "Add Inbound" ("Добавить пользователя"):

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Появляется милое окошо. Сначала добавим возможность подключаться через Shadowsocks

"Remark" (Примечание) - ввести что угодно, это просто человекочитаемое название;"Протокол" выбираем shadowsocks;"Listening IP" (в русском переводе называется "Порт IP", и это тоже неправильно и запутывает) можно оставить пустым, тогда сервер будет слушать на всех IP-адресах, либо можно явно указать требуемый;"Порт" - панель выберет рандомный.

Далее настраиваем пользователя (в момент создания inbound'а создается один, других при желании можно добавить позже):Поле "Email" на самом деле не обязательно должно содержать емайл, может быть любой текст (имя пользователя) - панель генерирует рандомный набор символов, если вы хотите создавать несколько разных пользователей (например, раздать аккаунты друзьям, смотреть кто сколько накачал и при желании блокировать доступ), то лучше вбить сюда что-то человекочитаемое и понятное;"Subscription" - пока что можно вбить тот же самый юзернейм (о подписках я расскажу чуть позже).

Дальше снова идут настройки протокола:"Шифрование" - выбираем что-нибудь что начинается с "2022", вариант по умолчанию вполне неплох;"Пароль" (ключ) панель сгенерирует автоматически с правильной длиной для выбранного метода шифрования.

Нажимаем "Создать" и на этом настройка для Shadowsocks закончена, им уже можно пользоваться.

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Теперь переходим к настройке VLESS с XTLS-Reality. Тут все будет чуточку сложнее, но в целом так же просто.

"Remark" (Примечание) - любое название;"Протокол" - "vless","Listening IP" ("Порт IP", который на самом деле не порт, а адрес) - оставляем пустым, либо задаем вручную если надо;"Порт" - вместо рандомного ставим 443;

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Далее переходим к настройкам клиента."Email" - как в и в прошлом пункте, лучше указать что-то человекочитаемое и понятное. Важно: пользователи разных подключений не могут иметь один и тот же емайл (например, наш новый VLESS и старый Shadowsocks созданный в предыдущем пункте), поэтому можно добавить какой-нибудь префикс (например user1vl) для избежания конфликтов."Subscription" - тут наоборот, лучше будет если текст в этом поле будет совпадать с тем, что вы задали для Shadowsocks (подробности ниже). Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается, нужно сначала активировать функционал подписок в настройках панели."Flow" - надо выбрать "xtls-rprx-vision". Обратите внимание, поле Flow (см. скриншот) появится только после того, как чуть ниже вы поставите галочку на пункте "Reality". То есть лучше всего настривать так: сначала ставите галочку Reality, а потом заполняете поля с настройками пользователя.

Дальше у нас идут настройки транспорта:"Reality" - как уже сказано выше, должно быть активно;"XTLS" - наоборот, должно быть неактивно (это немного запутывает, не смотря на то, что Reality тоже относится к XTLS, здесь под XTLS подразумеваются только устаревшие версии протокола, и галочки "XTLS" и "Reality" в панели являются взаимоисключающими);"uTLS" - по умолчанию "firefox", я обычно выбираю "chrome", по факту особо без разницы (главное чтобы не "android", могут быть проблемы с клиентами);"Домен" - на самом деле это не домен, а адрес для подключения к вашему серверу. Можно оставить пустым, тогда панель автоматически подставит IP-адрес или домен, по которому вы обращаетесь в панели на сервере."ShortIds" - панель сгенерирует рандомный ID;"Public Key", "Private Key" - можно кликнуть на "Get new keys", и панель сама сгенерирует новые для вас;"Dest" и "Server names" - вот это самое интересное, это домен, под который вы будете маскироваться. По умолчанию панель предлагает маскировку под yahoo.com и www.yahoo.com с переадресацией на yahoo.com:443, но лучше выбрать какой-нибудь другой домен, как описано ранее;

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Сохраняем введенную форму, и - всё! Настройка завершена.

После этого на странице видим примерно вот это:

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Если тыкнуть на кнопочку "Меню" соответствующую нужному протоколу, можно его активировать/деактивировать, сбросить счетчики трафика, добавить пользователей (в том числе сгенерировать разом N аккаунтов по шаблону), и самое главное - раскрыв (плюсиком) список пользователей, можно посмотреть настройки подключения для вбивания в клиенты для этого пользователя.

Нажав на значок QR-кода, панель покажет QR-код, который можно отсканировать камерой в мобильных клиентах (v2rayNG или Nekobox на Android, Wings X/FoXray или Shadowrocket на iOS). Подробнее о клиентах читайте в этой статье.

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Нажав на иконку информации (с буквой "i") можно посмотреть настройки для вбивания в десктопные клиенты, в том числе и URL, который можно скопировать и вставить.

Под дестоп я рекомендую Nekobox (есть под Windows, Linux и билды от сообщества для MacOS). Подробнее о клиентах читайте в этой статье.

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Краткая настройка Nekobox

Если вы раньше им не пользовались, нужно переключить его на использование движка sing-box, Preferences -> Basic Settings -> Core.

Далее копируем URL подключения в буфер обмена, в Nekobox нажимаем Server -> Add profile from clipboard - вжух, и у нас в списке добавилось новое подключение!

Сохраняем, кликаем правой кнопкой мыши на новый сервер в списке, жмем Start, и проверяем подключение выбрав там же Current Select -> URL test.

Если все нормально, то галочками "VPN Mode" или "System proxy" можно завернуть трафик всех приложений на прокси.

Там же вы можете найти "subscription URL". Это - специальным образом сгенерированный список подключений для клиентов. Помните, вы указывали "Subscription" при создании пользователя? При запросе по такому subscription URL, сервер выдаст список настроек (сервера, ключи) для всех подключений с этим ID в поле subscription. Многие клиенты (включая v2rayNG, v2rayN, Nekobox, и другие) умеют автоматически либо по запросу скачивать настройки с таких URL и добавлять их к себе - таким образом, если вы добавили какие-то новые протоколы или решили поменять конфигурацию, пользователи могут легко получить новые параметры с вашего сервера.Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается и вообще функционал подписок по умолчанию отключен, его нужно активировать в настройках панели.

Дополнительные настройки

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

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

А еще можно заблокировать доступ через сервер к IP-адресам и доменам Ирана, Китая и России (Россия здесь в отличной компании, не правда ли?) - это нужно если вы по ряду соображений настроили на клиентах доступ к российским сайтам напрямую, и хотите заблокировать их на сервере чтобы случайно не вылезти в рунет через него из-за ошибок в настройках.

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Про опцию запрета IPv6 для Google

При включенном IPv6 в TUN-режиме есть одна проблема. Nekobox (возможно другие клиенты тоже, не проверял) в качестве "внутреннего" IPv6 адреса использует адрес из такого зарезервированного диапазона (ULA), где они должны генерироваться рандомно, и вероятность случайного совпадения двух рандомных адресов ничтожна. То есть такой адрес должен быть уникальным, но в Nekobox он наоборот захардкожен один для всех случаев, и в итоге некоторые сервисы, которые могут каким-то образом получать и анализировать локальные адреса клиентов (например, Google с его телеметрией в Chrome и в Android), считают всех клиентов с таким внутренним адресом... одним и тем же клиентом, после чего матчат их то ли с геолокацией, то ли с другими внутренними адресами, то ли и с тем и с тем, и в итоге в ряде случаев все пользователи Nekobox (и возможно других клиентов) для Гугла выглядят как юзеры откуда-то из Ирана, Китая или Азербайджана, вплоть до того, что со временем Гугл начинает считать публичный адрес прокси-сервера тоже иранским/китайским/etc, и это приводит к довольно забавным эффектам.Варианты решения: не использовать TUN-режим (он же VPN mode), либо в правилах маршрутизации запретить доступ до Google по IPv6, что и позволяют сделать некоторые форки X-UI.

Улучшения и баги

Сначала о паре багов.

При установке в Docker не получается посмотреть логи Xray, панель выплевывает ошибку. Иногда что-то подсмотреть и понять можно используя команду "docker logs 3x-ui", но там логи довольно куцые. Будем надеяться, что в следущих версиях это исправят (зарепортите им там кто-нибудь, а?).

Второй баг - не удается создать несколько inbounds с одним и тем же портом, но разными listening IP - панель ругается. Из-за этого, например, нельзя реализовать классическую схему с XTLS-Reality слушающем на 443 порту на IPv4-адресе, и VLESS+Websockets или VLESS+gRPC для работы через CDN (как запасной вариант) на IPv6 адресе. Опять же, будем надется, что авторы это когда-нибудь пофиксят.

Из того, что можно улучшить при конфигурации - по умолчанию панель слушает на чистом HTTP, без шифрования. Вариантов решения несколько:

  • Если у вас есть домен (даже бесплатный от no-ip, freenom, dynu), то можно установить certbot от letsencrypt, запросить сертификат для своего домена, положить его в папку ./certs (внутри директории, куда вы склонировали 3x-ui) или сделать туда симлинки, и указать путь к ключам в панели в виде /root/cert/privkey.pem и /root/cert/public.crt. Не забудьте добавить post-update hook для рестарта контейнера;
  • Другой вариант - поменять в настройках listen IP для панели на 127.0.0.1 - после этого панель станет недоступна "снаружи", но на нее всегда можно будет зайти с помощью SSH:"ssh -L 8080:localhost:2053 your_server_ip" - тогда вбивая в браузере http://localhost:8080, подключение через SSH пойдет на локальный порт 2053 сервера, где и слушает ваша панель;
  • Третий вариант - повесить на сетевой интерфейс на сервере еще один "виртуальный" IP-адрес: прописать в /etc/network/interfaces что-то типаiface lo:1 inet staticaddress 192.88.99.1network 192.88.99.0netmask 255.255.255.0и настроить панель, чтобы она слушала только на нем. Тогда "снаружи" панель будет недоступна, но при подключении через Shadowsocks/VLESS-прокси вы сможете до нее достучаться по этому адресу.

О VLESS

Мы настроили протокол VLESS. Иногда в интернете можно встретить утверждения, что, мол VLESS не шифрует данные, а значит он небезопасен. Это не так. То, что VLESS не предусматривает шифрования на уровне протокола, не значит, что данные передаются в нешифрованном виде. VLESS всегда работает поверх TLS, трафик шифруется именно механизмами TLS, а не самого VLESS. Никакой проблемы с безопасностью тут нет, все секьюрно :) То же самое с XTLS. XTLS отключает свой слой шифрования только в случае, если определяет, что обмен между пользователем и конечным сервером уже зашифрован TLS v1.3.

О надежности

Как сделать хорошую, правильную маскировку для XTLS-Reality? Внимание к мелочам.

  • Выбирайте домен для маскировки от сайта, который хостится у того же хостера, что и вы (см. начало статьи).
  • Перевесьте SSH на вашем сервере с 22 порта на какой-нибудь другой сильно повыше, а то слишком палевно
  • Если вы используете панель типа X-UI или 3X-UI - то перевесьте ее тоже со стандартного порта на какой-нибудь нестандартный сильно повыше. В идеале стоит вообще заставить ее слушать на 127.0.0.1 (localhost), а подключаться к ней через SSH: например, если панель у вас на 127.0.0.1 и порту 48888, то сделав`ssh -L 8080:127.0.0.1:48888 user@serveraddress -p <ssh_port>`вы сможете попасть на панель пройдя браузером по адресу http://127.0.0.1:8080
  • Сделайте проброс порта не только на 443/TCP-порт (его делает XTLS-Reality), а еще на 443/UDP и 80/TCP до сервера, под который вы маскируетесь. Например, если вы маскируетесь под www.microsoft.com, то отрезолвте его IP-адрес (с помощью nslookup, ping или какого-нибудь онлайн-сервиса), а потом добавьте правила iptables (можно засунуть в /etc/rc.local, если он у вас есть - см. инструкции для вашего Linux-дистрибутива):iptables -t nat -A PREROUTING -i eth0 -p udp --dport 443 -j DNAT --to-destination fake_site_ip:443iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination fake_site_ip:80(вместо eth0 должен быть ваш сетевой интерфейс, иногда бывает ens3, например).
  • Если ваш хостер позволяет менять PTR-записи для IP-адресов (так называемые "обратные DNS"), то поменяйте ее на такую, какая есть у IP-адреса сайта, под который вы маскируетесь, или хотя бы просто на сам этот домен.

О клиентах

Весьма важно настроить на клиентских устройствах правила, чтобы доступ к внутренним (российским, если вы в РФ) ресурсам не шел через прокси-сервер.

Telegram

И занимательное на последок. Панель может работать как Telegram-бот :)

Сначала обращаемся к боту BotFather и просим его зарегистрировать нового бота:

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

Он сгенерирует для вас API-токен. Его надо вставить в настройки панели, и там же указать ваш ID как админа (его можно запросить у бота userinfobot):

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

После этого можно разговаривать с панелью через Telegram - смотреть статистику, делать бэкапы конфигурации, и т.д.

Как обойти блокировку Youtube: 3X-UI: Shadowsocks и XRay (XTLS) сервер

На этом всё.

Удачи, и да прибудет с вами сила.

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

2626
15 комментариев

ты же просто спиздил первый гайд из гугла

18
Ответить

Всё ради классов

1
Ответить

Рутуб работает.

Ответить

и по классике

17
Ответить

Нах рутуб

4
Ответить

Иди нах со своим рутубом, ботяра

Ответить

Почему нужно маскироваться именно под зарубежный домен?

Ответить