easy-xray/README.ru.md
Evgeny Nerush 8b4e084e3d add boosty
2024-11-13 14:33:59 +03:00

253 lines
19 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# easy-xray
*XRay - это просто*
[(EN)](README.md) [(CN(todo))](README.cn.md)
[XRay (aka ProjectX)](https://xtls.github.io/en/) - современное решение для обхода интернет-цензуры. Он - как прокси - позволяет проводить
трафик через сервер (VPS) за пределами региона с цензурой, при этом подключение к серверу XRay выглядит как подключение к обычному сайту.
Попытки обнаружения VPN, такие как активное зондирование [(active probing)](https://ensa.fi/active-probing/) или блокировка по правилу
«блокируем все протоколы, кроме https», для XRay не страшны. Кроме того, сервер XRay можно настроить на открытие только "зарубежных"
веб-сайтов, что предотвращает попытки обнаружения туннеля сайтами "домашнего" региона. XRay (в случае использования протокола
VLESS-Reality) не шифрует уже зашифрованный https-трафик, поэтому нагрузка на процессор невелика. XRay не нужно поддерживать соединение, и
пользователям не нужно время от времени повторно подключаться к нему вручную. При правильной настройке клиента пользователям не нужно
отключаться от сервера, чтобы перейти на большинство веб-сайтов "домашнего" региона.
![схема: трафик до зарубежных сайтов идёт через сервер, а до домашних сайтов - напрямую с ПК](figs/xray-schematic.png)
Помимо плюсов, у XRay есть и недостатки - например, сложная настройка и администрирование, что стало мотивацией для создания этого
репозитория и скрипта `ex.sh`. Этот скрипт поможет
- установить/обновить/удалить XRay
- генерировать учетные данные и конфигурации сервера/клиента
- добавлять/удалять пользователей
- и т. д.
### Как использовать на VPS
#### Linux
_Краткая инструкция_
Для начала нужно арендовать VPS сервер вне региона с цензурой (или попросить друзей за границей сделать это). После на сервер нужно
установить [jq](https://jqlang.github.io/jq/) и `openssl` - их можно найти в репозиторияx практически всех популярных Linux дистрибутивов.
Создайте обычного пользователя с возможностью выполнять sudo - **не устанавливайте easy-xray из-под рута**, в такой конфигурации он не будет
работать! Для упрощения первоначальной настройки redhat-based дистрибутивов можно воспользоваться скриптами [init0.sh](misc/init0.sh) и
[init1.sh](misc/init1.sh).
Из-под обычного пользователя скачайте `easy-xray` (всю директорию целиком), сделайте исполняемым файл `ex.sh` и запустите нужную
команду. Используйте `./ex.sh help` для получения списка всех команд и короткой справки по ним. Для установки и настройки xray используйте
`./ex.sh install` - эта команда предложит вам ввести ip-адрес вашего сервера, адрес сайта, под который ваш сервер будет маскироваться, и
имена пользователей. Не используйте easy-xray для пользователя root, используйте обычного пользователя и sudo!
```
chmod +x ex.sh
./ex.sh help
sudo ./ex.sh install
```
В результате у вас появится директория `conf` с серверным конфигом, основным клиентским конфигом и конфигами пользователей. Серверный конфиг
будет должным образом установлен, а xray - запущен с ним. Настало время раздать конфиги пользователям! Для многих графических клиентов
удобно использовать конфиги в виде ссылок, которые можно сгенерировать командой `./ex.sh link user_config_file.json`.
одробная инструкция, включая Cloudflare CDN_
Если у вашего VPS сервера есть два IP-адреса (IPv4 и IPv6), easy-xray может быть сконфигурирован так, чтобы IPv4-адрес использовался для
доступа напрямую, а IPv6-адрес использовался для доступа через сеть CDN от Cloudflare. Смотрите [полную инструкцию](CDN.ru.md).
#### Docker
Скрипт `ex.sh` написан прежде всего для использования в системе с systemd, однако может быть использован и в Docker. Для этого скачайте
директорию `easy-xray` (из ветки main) и соберите образ Docker, используя файл `Dockerfile`; ключ -t задаёт тег, например
`ximage`:
```
curl -L https://codeload.github.com/EvgenyNerush/easy-xray/tar.gz/main | tar -xz
cd easy-xray-main # обратите внимание на `-main` !!
docker build -t ximage ./
```
Обычно пользовательские приложения не могут использовать порты ниже 1024, однако для того, чтобы замаскировать xray сервер под обычный
вебсайт, мы должны использовать порты 80 и 443. Поэтому для начала на хосте нужно разрешить пользовательским приложениям использовать порты,
начиная с 80-го (эту команду, возможно, придётся выполнять после каждой перезагрузки системы):
```
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=80
```
Также нужно разрешить не-залогиненному пользователю выполнять долгоживущие сервисы. Иначе после выхода пользователя с сервера контейнер
может перестать работать:
```
sudo loginctl enable-linger your_username
```
Теперь можно запустить docker контейнер в интерактивном режиме (флаги `-i -t`), пробрасывая порты 80 и 443 от хоста к контейнеру:
```
docker run -it --name xcontainer -p 80:80 -p 443:443 ximage
```
В интерактивном режиме можно установить и сконфигурировать xray так же, как и в обычной системе, кроме последнего шага - копировать
серверный конфиг в директорию xray и перезапускать xray через systemctl нет смысла. Сообщения об отсутствии systemd можно
просто проигнорировать. Xray можно запустить с серверным конфигом вручную:
```
./ex.sh install
xray -c conf/config_server.json
```
После запуска xray можно отсоединиться от контейнера, используя *Ctrl+p затем Ctrl+q*. Если нужно снова присоединиться к контейнеру, можно
использовать `docker attach xcontainer` (после этого нужно нажать *Ctrl+c*, чтобы завершить работающий xray), или можно воспользоваться
командой `docker exec -it xcontainer bash` для запуска ещё одной сессии. Для того, чтобы скопировать конфиг-файлы из контейнера на хост,
сначала нужно узнать Id контейнера:
```
docker ps -a
docker cp 123abc456def:/easy-xray/conf ./
```
Команду `./ex.sh link conf_file` можно использовать на любом компьютере с Linux, если на нём хранятся конфиг-файлы. Работающий xray для этой
команды не нужен.
### Клиенты
#### Linux
Для подключения к XRay-серверу существуют клиенты с графическим интерфейсом (Nekoray, v2rayA,..), но о них чуть позже. На Linux удобно
использовать сам XRay в качестве клиента. XRay можно установить вручную, используя [официальный
скрипт](https://github.com/XTLS/Xray-install), после чего скопировать `customgeo.dat` в `/usr/local/share/xray/`. Другой вариант установить
XRay и `customgeo.dat` - воспользоваться командой `sudo ./ex.sh install`. Затем нужно скопировать клиентский конфиг с сервера и выполнить
```
sudo cp config_client_username.json /usr/local/etc/xray/config.json
sudo systemctl start xray
```
или
```
sudo xray run -c config_client_username.json
```
XRay с текущим клиентским конфигом создаёт локальные http/https и socks5 прокси, которые могут быть прописаны в настройки Телеграма или
браузера примерно так:
![прокси в браузере: http/https прокси 127.0.0.1 порт 801, socks5 хост 127.0.0.1 порт 800](figs/browser-proxy-settings.png)
Чтобы проверить, что трафик до "зарубежных" и "домашних" сайтов идёт разными путями, зайдите на
[whatismyip.com](https://www.whatismyip.com/) и [2ip.ru](https://2ip.ru/). Они должны показать разные ip-адреса и локации.
#### Windows
На Windows обычно используют клиенты с графическим интерфейсом - *v2rayN*, *v2rayA* и *nekoray (nekobox)*. Инструкции для них доступны по
ссылкам:
[v2rayN](V2RayN.ru.md)
[v2rayA](V2RayA.ru.md)
[nekoray](Nekoray.ru.md).
#### MacOS
Используйте сам XRay:
```
brew install xray
cp customgeo.dat /usr/local/share/xray/ # not yet tested
sudo xray -config=config_client_username.json
```
Достаточно удобно использовать xray в качестве системного прокси. Примеры включения и выключения socks proxy:
```
# включение, подразумеваем что название подключения дефолтное (wi-fi)
networksetup -setsocksfirewallproxy wi-fi localhost 800
networksetup -setsocksfirewallproxystate wi-fi on
# отключение
networksetup -setsocksfirewallproxystate wi-fi off
```
Системный прокси используется по умолчанию большинством приложений: браузерами, VSCode, мессенджерами типа Slack или Telegram. Если приватность является наивысшим приоритетом, необходимо проверять, поддерживает ли системный прокси каждое приложение, так как некоторые специфичные приложения могут его игнорировать. Важное преимущество подключения через системный прокси - это возможность комбинировать Xray с другими VPN. Если указать ресурсы, доступные через VPN, в исключениях xray (`"outboundTag": "direct"`), то подключение к ним будет обходить Xray и проходить через подключенный VPN-туннель.
В качестве альтернативы можно использовать *v2rayA*. Это приложение имеет веб интерфейс, доступный в браузере по адресу localhost:2017.
Детальные инструкции для v2rayA можно найти [здесь](V2RayA.ru.md).
#### Android
Для многих мобильных клиентов вся настройка заключается в том, что нужно вставить конфиг-ссылку из буфера обмена, а после добавить сайты из
customgeo в подходящей форме (см. директорию `misc`) в "прямые" маршруты (в `Settings/Routing/Custom rules/Direct URL` или что-то подобное).
Приложения, которые были протестированы, перечислены ниже.
Скачайте из Google Play [V2RayNG](https://play.google.com/store/apps/details?id=com.v2ray.ang&pcampaignid=web_share),
[HiddifyNG](https://play.google.com/store/apps/details?id=ang.hiddify.com&pcampaignid=web_share) или [Hiddify
Next](https://play.google.com/store/apps/details?id=app.hiddify.com&pcampaignid=web_share). Они очень похожи друг на друга, здесь есть
инструкции для [V2RayNG](V2RayNG.ru.md) и [HiddifyNG (EN)](HiddifyNG.en.md).
#### iOS
Используйте [Streisand](https://apps.apple.com/us/app/streisand/id6450534064). Конфигурирование аналогично тому, что описано для V2Ray или
Hiddify, здесь [инструкция для Streisand](Streisand.ru.md).
#### OpenWRT
Используйте *v2rayA*. Инструкция [здесь](V2RayA.ru.md).
#### Другие
[Здесь](https://github.com/xtls/xray-core) можно найти дополнительный список клиентов.
### Tor
В случае использования XRay в качестве клиента с текущей конфигурацией не должно возникнуть проблем. Однако большинство графических
клиентов, хотя в качестве ядра используют xray, не дают полного доступа к его конфигурации. Из-за этого
[Torbrowser](https://www.torproject.org/download/) не всегда может работать "из коробки". Если подключиться к сети Tor не удаётся,
попробуйте использовать встроенный в Торбраузер obfs4 мост (специальный промежуточный сервер между вами и сетью Tor) - его можно найти в
разделе Настройки/Соединение.
### Bittorrent
Bittorent протокол блокируется в текущих настройках - использование bittorrent может привести к бану со стороны VPS провайдера.
### Что ещё?
#### Советы
Для того, чтобы выбрать сайт, который будет видеть на вашем сервере цензор в случае атаки active probing (`serverName` в конфигах), можно
воспользоваться утилитой [RealiTLScanner](https://github.com/XTLS/RealiTLScanner). Она может просканировать адреса, близкие к вашему серверу
(делайте это с домашнего компьютера, а не с сервера!), и показать имена сайтов на них. С помощью команды `nmap -T4 hostname` можно
проверить, что на выбранном вами сервере открыты только порты 80 и 443 (как в настройках xray здесь). Также неплохо выбрать далёкий порт для
ssh вместо 22-го, если на выбранном вами сайте этот порт не открыт. Дважды проверьте, что по выбранному вами порту ssh вы можете зайти на
сервер - только после этого закрывайте порт 22.
```
#Port 22
Port 43210
```
#### Ссылки
Шаблонные конфиг-файлы для сервера и клиента (`template_config_*.json`) содержат много комментариев, которые могут помочь в создании своей
собственной конфигурации клиента и сервера.
Шаблонные конфиги сделаны на основе этих [двух](https://github.com/XTLS/Xray-examples/tree/main/VLESS-gRPC-REALITY) [примеров](https://github.com/XTLS/Xray-examples/tree/main/VLESS-TCP-XTLS-Vision-REALITY).
[Описание всех возможных полей XRay конфигов (EN)](https://xtls.github.io/en/config/) очень подробное и хорошо помогает.
[Здесь](https://github.com/EvgenyNerush/coherence-grabber) детали того, как собраны сайты для доступа напрямую, прописанные в `customgeo`.
[Эта статья](https://habr.com/ru/articles/731608/) помогла мне установить XRay в первый раз.
[Чат проекта](https://t.me/eXRay_chat) в Телеграм.
#### Для донатов
[Boosty](https://boosty.to/exsh)
ZEC u1jyr346fqf7arfzp56p30gmc6j6r9lc2ppm8cl79p6zfhxgel44ht3glzyja0tajs3p6axf967f4cfxa7uqkspe82p9nz350ys6pey7st5sr26u6pplqe80v3mk468e8g4zaz52ccqxyp8fxnsnlq44s9yppapj3v20df0ntscvwesls9dujfpj94cvam8zf8xz74grp6rap0s7hzxsv
XMR 45cVo35KgNWhW8f1GRLKsJDjhtyuVuudeWx8Xy3r5kFcfgikACUUxHhcNLa2jLQ6qb3WxG8b9v69RJ4nFih79ijTPaajjpo