Обход блокировок с полной маскировкой:3X-UI: Shadowsocks-2022 & XRay (XTLS), настройка сервера на Debian 12

Материал из Шпаргалка знаний
Перейти к навигации Перейти к поиску

После установки на сервер Debian 12 (Minimal) (x86_64) 2Gb RAM, 1 CPU, 20Gb SSD, приступаем к подготовке сервера.

Выбор провайдера:

https://hostkey.ru/vps/#preconfigured -300р самый простой VPS/VDS сервер.

https://ishosting.com/ru/vps/nl -5$ самый простой VPS/VDS сервер.

3X-UI. Основные возможности

Шифрование трафика: VLESS, Shadowsocks-2022 и XRay (XTLS) позволяют шифровать пользовательский трафик, что делает его невозможным для чтения или мониторинга со стороны провайдера Интернета или других третьих лиц.

Многофакторная аутентификация: поддержка многофакторной аутентификации повышает уровень безопасности и защищает пользовательские данные от несанкционированного доступа.

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

Оптимизация скорости: оптимизация для быстрого соединения по сети. Они могут использовать различные технологии, такие как TCP Fast Open и Congestion Control, что позволяет ускорить передачу данных и улучшить качество соединения.

Поддержка различных операционных систем: Windows, MacOS, Linux, Android и iOS. Это обеспечивает универсальность и доступность продукта для пользователей на любой платформе.

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

Надежность и стабильность: VLESS, Shadowsocks-2022 и XRay (XTLS) являются надежными и стабильными протоколами. Они предоставляют высокую скорость и стабильность соединения, а также защиту пользовательских данных.

Установка

Официальный репозиторий 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 (если вдруг нет - следуйте инструкциям для вашего дистрибутива - https://docs.docker.com/engine/install/ , у меня без проблем установилось простым "apt install docker.io docker-compose"). Ну и git в придачу.

Задаем права пользователю Debian:

su
apt install sudo
su - root
adduser username sudo
reboot

* где username имя пользователя под которым зашли в систему.

sudo apt-get update
sudo apt-get upgrade

Устанавливаем Docker. на Debian 12

# Add Docker's official GPG key:

sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:

echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo apt install docker.io docker-compose

или

Устанавливаем Docker. на Debian 11

apt-get update -y

Когда вы закончите, установите другие необходимые зависимости, используя следующую команду:

apt-get install apt-transport-https software-properties-common ca-certificates curl gnupg lsb-release -y

Установить Докер

По умолчанию последняя версия Docker не включена в официальный репозиторий Debian 11. Поэтому вам нужно будет добавить репозиторий Docker CE в APT. Вы можете добавить его с помощью следующей команды:

curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

После добавления репозитория Docker обновите репозиторий и установите Docker CE с помощью следующей команды:

apt-get update -y
apt-get install docker-ce docker-ce-cli -y

После установки проверьте версию Docker CE с помощью следующей команды:

docker version

Вы должны получить следующий результат:

Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:54:22 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:31 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Управление службами Docker

Вы можете легко управлять службой Docker с помощью утилиты systemd.

Чтобы запустить службу Docker, выполните следующую команду:

sudo systemctl start docker

Чтобы перезапустить службу Docker, выполните следующую команду:

sudo systemctl restart docker

Чтобы остановить службу Docker, выполните следующую команду:

sudo systemctl stop docker

Чтобы служба Docker запускалась при перезагрузке системы, выполните следующую команду:

sudo systemctl enable docker

Чтобы проверить статус Docker, выполните следующую команду:

sudo systemctl status docker

Вы должны увидеть статус Docker в следующем выводе:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-09-10 07:19:35 UTC; 27s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 29018 (dockerd)
      Tasks: 7
     Memory: 32.6M
        CPU: 407ms
     CGroup: /system.slice/docker.service
             ??29018 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809035575Z" level=info msg="scheme \"unix\" not registered, fallback to def>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809219999Z" level=info msg="ccResolverWrapper: sending update to cc: {[{uni>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809410545Z" level=info msg="ClientConn switching balancer to \"pick_first\">
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.897972507Z" level=info msg="Loading containers: start."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.186940748Z" level=info msg="Default bridge (docker0) is assigned with an IP>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.298681937Z" level=info msg="Loading containers: done."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.356364773Z" level=info msg="Docker daemon" commit=75249d8 graphdriver(s)=ov>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.357524464Z" level=info msg="Daemon has completed initialization"
Sep 10 07:19:35 debian11 systemd[1]: Started Docker Application Container Engine.
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.401626151Z" level=info msg="API listen on /run/docker.so

Установить Docker Compose В Debian 11

Первое, что нужно сделать, это обновить систему. Выполните следующую команду:

sudo apt update && sudo apt upgrade -y

Вы можете скачать текущую стабильную версию Docker Compose, выполнив следующую команду:

sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Чтобы сделать двоичный файл исполняемым, предоставьте следующие разрешения:

sudo chmod +x /usr/local/bin/docker-compose

В случае сбоя установки вам, возможно, придется создать символическую ссылку между «/usr/bin» и любой другой папкой. Это можно сделать с помощью следующей команды.

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Теперь пришло время протестировать установку. Для подтверждения вывода используйте следующую команду:

docker-compose --version

Установка самой программы 3X-UI

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

Для 3X-UI:

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

или

Для X-UI:

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

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

sudo docker-compose up -d

Готово! Панель установлена и работает.

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

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

Создание протоколов в графической панели 3X-UI

Чтобы войти в веб версию панели, в браузере идём по адресу:

http://xxx.xxx.xxx.xxx:PORT/panel/, где xxx.xxx.xxx.xxx — IP-адрес вашего сервера, а PORT - номер вашего порта. В моём случае это порт 5580.

Логинимся и видим вот такую красивую панель управления 3X-UI

Переходим в "Settings" (настройки) и там:

Изменить порт на котором работает панель со стандартного 2053 на какой-нибудь другой (лучше всего где-нибудь в верхнем конце диапазона, до 65235);

Изменить корневой путь URL-адреса панели с / на что-то типа /mysecretpanelroot/;

При желании переключить язык на русский (но имейте в виду, в русском переводе есть некоторые неточности сбивающие с толку);

На второй вкладке "Настройки безопасности" изменить стандартный админский пароль на свой;

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

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

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

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

"Remark" (Примечание) - ввести что угодно, это просто человекочитаемое название;

"Протокол" выбираем shadowsocks;

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

"Порт" - панель выберет рандомный.

Далее настраиваем пользователя (в момент создания inbound'а создается один, других при желании можно добавить позже):

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

"Subscription" - пока что можно вбить тот же самый юзернейм (о подписках я расскажу чуть позже).

Дальше снова идут настройки протокола:

"Шифрование" - выбираем что-нибудь что начинается с "2022", вариант по умолчанию вполне неплох;

"Пароль" (ключ) панель сгенерирует автоматически с правильной длиной для выбранного метода шифрования.

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

Теперь переходим к настройке VLESS с XTLS-Reality.

Тут все будет чуточку сложнее, но в целом так же просто.

"Remark" (Примечание) - любое название;

"Протокол" - "vless",

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

"Порт" - вместо рандомного ставим 443;

Далее переходим к настройкам клиента.

"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, но лучше выбрать какой-нибудь другой домен.

Sniffing, HTTP, TLS, QUIC, fakedns — оставьте включённым.

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

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

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

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

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

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

Внимание: в отличие от 3X-UI, в X-UI поле Subscription по умолчанию не отображается и вообще функционал подписок по умолчанию отключен, его нужно активировать в настройках панели.


Если нажать на меню, то можно изменить, добавить одного или нескольких пользователей, сбросить трафик, экспортировать ключи и т. д.

Подключение клиентов

Подключение устройств на iOS (но не ниже 16 версии)

1. Скачайте приложение FoXray из AppStore по ссылке: https://apps.apple.com/ru/app/foxray/id6448898396?ref=dtf.ru

2. В графической панели 3X-UI создайте нового клиента. Для этого: нажмите на кнопку Меню в ранее созданной конфигурации, далее Добавить пользователя. В поле Email напишите название клиента, например "Мой iPhone", а в пункте Flow выберите xtls-rprx-vision.

3. Раскройте (плюсиком) список клиентов и под «Меню» рядом с только что созданным клиентом «Мой iPhone» нажмите на иконку QR-кода:

4. Запустите приложение FoXray и в левом верхнем углу нажмите значок сканирования QR-кода и отсканируйте его с экрана компьютера.

5. Всё, профиль добавлен! Теперь нажмите на кнопку «Play», далее разрешите добавление конфигурации VPN, введите пароль и можете пользоваться VPN соединением.

Подключение устройств на Windows

1. Скачайте архив с программой Invisible Man XRay c GitHub и распакуйте его (https://github.com/InvisibleManVPN/InvisibleMan-XRayClient)

2. В графической панели 3X-UI создайте нового клиента. Для этого: нажмите на кнопку Меню в ранее созданной конфигурации, далее Добавить пользователя. В поле Email напишите название клиента, например "Мой Windows", а в пункте Flow выберите xtls-rprx-vision.

3. Раскройте (плюсиком) список клиентов и под «Меню", рядом с только что созданным клиентом "Мой Windows» и нажмите на иконку Информация:

4. Скопируйте ссылку для подключение под надписью URL, нажав на кнопку копирования, как на скриншоте ниже:

5. Отправьте любым удобным способом данную ссылку на ваш компьютер, и там также её скопируйте.

6. Запустите программу Invisible Man XRay и перейдите в Manage server configuration.

7. Нажмите на кнопку "плюс" в правом нижнем углу окна.

8. Выберите Import from link и вставьте вашу ссылку, которую вы ранее скопировали в поле, как на скрине:

9. Если вы всё правильно сделали, должна добавиться новая конфигурция. Закройте этот менеджер и нажмите кнопку Run.

10. Готово! VPN на компьютере под управлением операционной системы Windows мы тоже настроили без проблем.

Пропускаем трафик через Tor

Torghost

Начала получим репозиторий из гитхаба (кстати, сначала нужно установить git):

sudo apt update && sudo apt upgrade
git clone https://github.com/SusmithKrishnan/torghost.git

После этого заходим в папку torghost (она появится после клонирования репозитория) и делаем файл build.sh исполняемым:

cd torghost 
sudo chmod +x build.sh

Запускаем установку:

sudo ./build.sh

Установщик сам подтянет все зависимости и поставит Тор. На этом установка закончена!

Далее ставим обновление:

pip3 install -r requirements.txt
wget -c https://github.com/SusmithKrishnan/torghost/releases/download/v3.0.2/torghost-3.0.2-amd64.deb
sudo dpkg -i torghost-*-amd64.deb

Открываем файл torghost.py на редактирование и комментируем 15 -ю строку.

nano torghost.py

'''
from packaging import version
'''

Запускаем утилиту torghost, ip адрес будет меняться автоматически через каждые 10 минут:

sudo python3 torghost.py -s

Варианты использования:

sudo python3 torghost.py -x (to stop Torghost - the tool will go back to you Ip ADDRESS from your ISP)

sudo python3 torghost.py -u (to update the tool - this is not required to do it every day)

sudo python3 torghost.py -r (to switch the IP Address - you will notice that the IP address that Torghost assigned you at the beginning will change again)

sudo python3 torghost.py -h (to open the help menu)

Скрипт чтобы IP адреса менялись через каждую минуту, если нужно:

#!/bin/bash
a=1
x=60
while [[ $a -gt 0 ]]
do
python3 torghost.py -s
sleep $x
done

Дополнительная информация из другого источника

Команда для запуска установки панели 3X-UI:

https://github.com/MHSanaei/3x-ui?ysclid=lstfiw45v6910325792


Скачать NekoBox:

https://github.com/MatsuriDayo/NekoBoxForAndroid/releases


Скачать V2RayN:

https://github.com/2dust/v2rayN/releases


Настройка ssh-ключей:

https://simplelinux.ru/nastrojka-podklyucheniya-k-serveru-po-ssh-klyucham/

Создания туннеля через несколько VPN серверов.

Для того чтобы пропустить наш трафик например через 2 сервера делаем следующее:

1) Копируемым ссылку на подключения например Shadowsocks на конечном сервере.

ss://MjAyMi1GFrZTMtYWVzLTI1Ni1nY206UlA0TTJWbHVudHlpUFdiWEdxdk1ieGd4SVNVOEZnaXUUxDN3ladU82bz06T0NJYkl2c1ZxZ2oyTmw5QVZG9KZUtMTjBzb25TSGprZDU90akxrOD0@135.120.45.13:22467?type=tcp#SS-Vasya_ss

2) Заходим на первый наш сервер, В правом меню нажимаем на "Настройка Xray" --> "Исходящие" --> "Добавить исходящий" --> JSON

И в поле "Link" вставляем нашу ссылку.

3) Нажимаем "Сохранить настройки" --> "Перезапустить Xray"

4) Далее опять в правом меню нажимаем на "Настройка Xray" --> "Правила маршрутизации" --> "Добавить правило"

5) Выбираем в поле "Network" --> "TCP,UDP", и в поле "Outbound" --> наш второй сервер.

6) Нажимаем "Сохранить настройки" --> "Перезапустить Xray"

Все, Трафик идет последовательно через 2 сервера. На выходе мы видим IP последнего сервера.