2023-12-23 22:47:12 +03:00
# 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
2024-01-08 00:16:51 +03:00
#### Linux
2023-12-23 22:47:12 +03:00
Для начала нужно арендовать VPS сервер вне региона с цензурой (или попросить друзей заграницей сделать это). После на сервер нужно
установить [jq ](https://jqlang.github.io/jq/ ) и `openssl` - их можно найти в р е по зито р ияx практически всех популярных Linux дистрибутивов.
Затем скачайте `easy-xray` (всю директорию целиком), сделайте исполняемым файл `ex.sh` и запустите нужную команду. Используйте `./ex.sh
help` для получения списка всех команд и короткой справки по ним. Для установки и настройки xray используйте ` ./ex.sh install` - эта команда
2024-03-26 17:00:10 +03:00
предложит вам ввести ip-адрес вашего сервера, адрес сайта, под который ваш сервер будет маскироваться, и имена пользователей. Н е
используйте easy-xray для пользователя root, используйте обычного пользователя и sudo!
2023-12-23 22:47:12 +03:00
```
chmod +x ex.sh
./ex.sh help
sudo ./ex.sh install
```
В результате у вас появится директория `conf` с серверным конфигом, основным клиентским конфигом и конфигами пользователей. Серверный конфиг
будет должным образом установлен, а xray - запущен с ним. Настало время раздать конфиги пользователям! Для многих графических клиентов
удобно использовать конфиги в виде ссылок, которые можно сгенерировать командой `./ex.sh link user_config_file.json` .
2024-03-26 17:00:10 +03:00
Если у вашего VPS сервера есть два IP-адреса (IPv4 и IPv6), easy-xray может быть сконфигурирован так, чтобы IPv6-адрес
использовался для доступа через сеть CDN от Cloudflare по протоколу grpc-tls. См. детали в [инструкции ](CDN.ru.md ).
2024-01-08 00:16:51 +03:00
#### 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 для этой
команды не нужен.
2023-12-23 22:47:12 +03:00
### Клиенты
#### Linux
2024-02-18 18:06:48 +03:00
Для подключения к 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` . Затем нужно скопировать клиентский конфиг с сервера и выполнить
2023-12-23 22:47:12 +03:00
```
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
2024-02-18 18:06:48 +03:00
Н а Windows обычно используют клиенты с графическим интерфейсом - *v2rayN* , *v2rayA* и *nekoray (nekobox)* . Инструкции для них доступны по
ссылкам:
2024-02-11 23:03:04 +03:00
[v2rayN ](V2RayN.ru.md )
2024-02-18 18:06:48 +03:00
[v2rayA ](V2RayA.ru.md )
2024-02-11 23:03:04 +03:00
[nekoray ](Nekoray.ru.md ).
2023-12-23 22:47:12 +03:00
#### MacOS
Используйте сам XRay:
```
brew install xray
cp customgeo.dat /usr/local/share/xray/ # not yet tested
sudo xray -config=config_client_username.json
```
2024-06-24 21:29:20 +03:00
Достаточно удобно использовать 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-туннель.
2024-02-18 18:06:48 +03:00
В качестве альтернативы можно использовать *v2rayA* . Это приложение имеет веб интерфейс, доступный в браузере по адресу localhost:2017.
Детальные инструкции для v2rayA можно найти [здесь ](V2RayA.ru.md ).
2023-12-23 22:47:12 +03:00
#### 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
2024-03-04 12:15:25 +03:00
Используйте [Streisand ](https://apps.apple.com/us/app/streisand/id6450534064 ). Конфигурирование аналогично тому, что описано для V2Ray или
Hiddify, здесь [инструкция для Streisand ](Streisand.ru.md ).
2023-12-23 22:47:12 +03:00
2024-02-18 18:06:48 +03:00
#### OpenWRT
Используйте *v2rayA* . Инструкция [здесь ](V2RayA.ru.md ).
2023-12-23 22:47:12 +03:00
#### Другие
[Здесь ](https://github.com/xtls/xray-core ) можно найти дополнительный список клиентов.
### Tor
В случае использования XRay в качестве клиента с текущей конфигурацией не должно возникнуть проблем. Однако большинство графических
клиентов, хотя в качестве ядра используют xray, не дают полного доступа к е г о конфигурации. Из-за этого
[Torbrowser ](https://www.torproject.org/download/ ) не всегда может работать "из коробки". Если подключиться к сети Tor не удаётся,
2024-01-25 16:36:30 +03:00
попробуйте использовать встроенный в Торбраузер obfs4 мост (специальный промежуточный сервер между вами и сетью Tor) - е г о можно найти в
разделе Настройки/Соединение.
2023-12-23 22:47:12 +03:00
### 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 в первый раз.
2023-12-23 23:25:08 +03:00
[Чат проекта ](https://t.me/eXRay_chat ) в Телеграм.