【Глава 8】Настройка Xray на клиенте
8.1 Как работает Xray: краткое описание
Чтобы правильно настраивать и использовать Xray
, важно понимать принципы его работы. Новичкам поможет упрощённая схема, на которой не показаны некоторые сложные моменты:
Ключевые моменты:
Приложение должно самостоятельно или с помощью стороннего инструмента перенаправить трафик на входящее подключение (
inbounds
) клиентаXray
.Поступивший на клиент трафик обрабатывается модулем маршрутизации (
routing
) в соответствии с заданными правилами и перенаправляется на разные исходящие подключения (outbounds
) клиентаXray
, например:- Трафик на китайские ресурсы — напрямую (
direct
) - Трафик на зарубежные ресурсы — через VPS (
proxy
) - Рекламный трафик — блокируется (
block
)
- Трафик на китайские ресурсы — напрямую (
Трафик на зарубежные ресурсы, перенаправленный на VPS, проходит через Великий Китайский Файрвол и попадает на входящее подключение (
inbounds
) сервераXray
.Как и на клиенте, трафик, поступивший на сервер, обрабатывается модулем маршрутизации (
routing
) в соответствии с заданными правилами и перенаправляется на разные исходящие подключения (outbounds
):- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (
direct
). - При необходимости можно настроить перенаправление трафика на другие VPS (
proxy
). - На сервере также можно блокировать нежелательный трафик, например, рекламу или торренты (
block
).
- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (
Внимание!
Важно помнить, что маршрутизация в Xray
очень гибкая, и описанный выше сценарий — лишь один из множества возможных.
Используя файлы geosite.dat
и geoip.dat
, можно очень гибко управлять маршрутизацией трафика по доменным именам и IP-адресам. Это гораздо удобнее, чем устаревший GFWList
, поскольку позволяет очень точно настроить правила: например, можно разрешить прямое подключение к доменам Apple, перенаправить трафик на домены Amazon через прокси-сервер, блокировать доступ к доменам Baidu и т. д.
Более подробно о маршрутизации в Xray читайте в статье «Разбор функции маршрутизации (routing)». Советую сначала дочитать эту главу и настроить базовый клиент, а потом уже углубляться в тонкости маршрутизации.
8.2 Подключение клиента к серверу
Теперь, когда вы понимаете принципы работы Xray
, настройка клиента сводится к тому, чтобы сообщить ему, как подключиться к вашему VPS. Это как настроить PuTTY
для подключения к серверу, только в случае с Xray параметров подключения больше, чем IP-адрес, порт, имя пользователя и пароль.
Набор параметров подключения в Xray
зависит от используемого протокола. В главе 7 мы настроили сервер на использование протокола VLESS
с шифрованием XTLS
. Посмотрим на файл конфигурации сервера, чтобы узнать, какие параметры нужны для подключения:
- Адрес сервера:
sub.yourdomain.com
- Порт сервера:
443
- Протокол:
vless
- Поток:
xtls-rprx-vision
(режимvision
подходит для всех платформ) - Идентификатор:
uuiduuid-uuid-uuid-uuid-uuiduuiduuid
- Безопасность:
"allowInsecure": false
Ниже приведен список популярных клиентов Xray для мобильных и настольных устройств. Каждый клиент имеет свой собственный интерфейс, поэтому я не буду делать скриншоты для каждого из них. Внимательно изучите документацию к выбранному клиенту и укажите нужные параметры подключения.
Внимание!
Многие клиенты поддерживают как xray-core
, так и v2fly-core
. Но по умолчанию может использоваться не тот, который вам нужен. Убедитесь, что вы выбрали нужный инструмент!
v2rayN - для Windows
- Скачайте последнюю версию из репозитория на GitHub
- Настройте клиент в соответствии с документацией
v2rayNG - для Android
- Скачайте последнюю версию из репозитория на GitHub
- Настройте клиент в соответствии с документацией
Shadowrocket - для iOS, macOS на базе Apple M1
- Создайте учётную запись iCloud не в китайском регионе
- Купите приложение в App Store
- Настройте клиент в соответствии с документацией
Qv2ray - кроссплатформенный графический интерфейс для Linux, Windows, macOS
- Скачайте последнюю версию из репозитория на GitHub (или более новую версию из раздела сборок на GitHub)
- Изучите документацию на сайте проекта
- Настройте клиент в соответствии с документацией
V2RayXS - клиент для macOS, основанный на V2RayX и использующий xray-core
- Скачайте последнюю версию из репозитория на GitHub
- Поддерживает импорт ссылок на конфигурации VLESS / VMessAEAD по стандарту, предложенному в этой задаче
- Настройте клиент в соответствии с документацией
На этом этапе ваша система готова к работе!
8.3 Дополнительное задание 1: настройка xray-core
на ПК вручную
Хотя на предыдущем шаге мы уже всё настроили, любознательным и обладающим хорошей памятью читателям наверняка вспомнятся мои слова из предыдущей главы о том, что xray-core
можно запускать как на сервере, так и на клиенте. Так как же использовать xray-core
в качестве клиента?
Чтобы ответить на этот вопрос, я добавил этот раздел с дополнительным заданием. Оно немного выходит за рамки основного материала и может показаться сложным, но у него есть свои преимущества:
- Вы всегда будете использовать самую последнюю версию
xray-core
, не дожидаясь, пока разработчики клиентов выпустят обновления. - Вы получите максимальную гибкость в настройке маршрутизации (хотя стоит отметить, что Qv2ray имеет мощный редактор маршрутизации, который позволяет настраивать все функции
xray-core
). - Вы сэкономите системные ресурсы (графические клиенты всегда потребляют больше ресурсов, чем консольные).
Недостаток этого способа заключается в том, что вам придётся настраивать клиент вручную, редактируя файл конфигурации. Но ведь на сервере вы уже делали это, так что ничего сложного здесь нет. Давайте разберёмся по шагам:
Скачайте последнюю версию
xray-core
для вашей платформы из репозитория на GitHub и распакуйте архив в удобное место.Создайте пустой файл конфигурации
config.json
в той же папке (думаю, с этим проблем не возникнет).Что значит "удобное место"? Это зависит от платформы.
Заполните файл конфигурации.
- Я написал пример конфигурации, основанный на схеме из раздела 8.1 (прямое подключение к китайским ресурсам, проксирование трафика на зарубежные ресурсы через VPS, блокировка рекламы) и параметрах подключения из раздела 8.2.
- Замените
uuid
на идентификатор из вашей конфигурации сервера. - Замените
address
на доменное имя вашего сервера. - Замените
serverName
на доменное имя вашего сервера. - Я добавил подробные комментарии к каждому разделу конфигурации.
// ССЫЛКИ: // https://github.com/XTLS/Xray-examples // https://xtls.github.io/config/ // Типичный конфигурационный файл, как для сервера, так и для клиента, состоит из 5 основных частей. Разберём их по полочкам: // ┌─ 1_log Настройки логирования - что и куда писать в лог (чтобы было проще искать ошибки) // ├─ 2_dns Настройки DNS - как выполнять DNS-запросы (защита от DNS-спуфинга, защита от слежки, предотвращение маршрутизации трафика на китайские серверы и т. д.) // ├─ 3_routing Настройки маршрутизации - как обрабатывать трафик (фильтрация рекламы, разделение трафика для разных стран) // ├─ 4_inbounds Настройки входящих подключений - какой трафик может поступать на Xray // └─ 5_outbounds Настройки исходящих подключений - куда направлять трафик, исходящий от Xray { // 1_Настройки логирования // В этом примере я закомментировал настройки файлов логов, потому что в Windows, macOS и Linux используются разные пути. Укажите свои пути. "log": { // "access": "/home/local/xray_log/access.log", // Файл для записи логов доступа // "error": "/home/local/xray_log/error.log", // Файл для записи логов ошибок "loglevel": "warning" // Уровень детализации логов: "none", "error", "warning", "info", "debug" (от меньшего к большему) }, // 2_Настройки DNS "dns": { "servers": [ // 2.1 Запросы к зарубежным доменам отправляем на зарубежный DNS-сервер { "address": "1.1.1.1", "domains": ["geosite:geolocation-!cn"] }, // 2.2 Запросы к китайским доменам отправляем на китайский DNS-сервер и ожидаем получить китайский IP-адрес. Если адрес не китайский, используем следующий DNS-сервер { "address": "223.5.5.5", "domains": ["geosite:cn"], "expectIPs": ["geoip:cn"] }, // 2.3 Резервный китайский DNS-сервер { "address": "114.114.114.114", "domains": ["geosite:cn"] }, // 2.4 Если все предыдущие DNS-серверы не ответили, используем локальный DNS-сервер "localhost" ] }, // 3_Настройки маршрутизации // Маршрутизация позволяет перенаправлять трафик, соответствующий определённым условиям, на определённое исходящее подключение (см. раздел 5). "routing": { "domainStrategy": "IPIfNonMatch", "rules": [ // 3.1 Блокировка рекламных доменов { "type": "field", "domain": ["geosite:category-ads-all"], "outboundTag": "block" }, // 3.2 Прямое подключение к китайским доменам { "type": "field", "domain": ["geosite:cn"], "outboundTag": "direct" }, // 3.3 Проксирование трафика на зарубежные домены { "type": "field", "domain": ["geosite:geolocation-!cn"], "outboundTag": "proxy" }, // 3.4 Трафик, который идёт на DNS-сервер 223.5.5.5, отправляем напрямую { "type": "field", "ip": ["223.5.5.5"], "outboundTag": "direct" }, // 3.5 Прямое подключение к китайским IP-адресам { "type": "field", "ip": ["geoip:cn", "geoip:private"], "outboundTag": "direct" } // 3.6 Правило по умолчанию // В Xray любой трафик, который не соответствует ни одному из правил маршрутизации, отправляется на первое исходящее подключение (см. раздел 5.1). Поэтому важно разместить настройки прокси-сервера на первом месте. ] }, // 4_Настройки входящих подключений "inbounds": [ // 4.1 Обычно используется протокол SOCKS5 для локального перенаправления трафика { "tag": "socks-in", "protocol": "socks", "listen": "127.0.0.1", // Адрес, на котором будет слушать SOCKS5-сервер "port": 10800, // Порт, на котором будет слушать SOCKS5-сервер "settings": { "udp": true } }, // 4.2 Некоторые приложения не поддерживают SOCKS. Для них можно использовать HTTP-прокси { "tag": "http-in", "protocol": "http", "listen": "127.0.0.1", // Адрес, на котором будет слушать HTTP-сервер "port": 10801 // Порт, на котором будет слушать HTTP-сервер } ], // 5_Настройки исходящих подключений "outbounds": [ // 5.1 Настройки прокси-сервера // Этот раздел должен быть первым, как уже было сказано в разделе 3.6. Все правила по умолчанию будут использовать эти настройки. { "tag": "proxy", "protocol": "vless", "settings": { "vnext": [ { "address": "sub.yourdomain.com", // Замените на доменное имя вашего сервера "port": 443, "users": [ { "id": "uuiduuid-uuid-uuid-uuid-uuiduuiduuid", // Должен совпадать с идентификатором на сервере "flow": "xtls-rprx-vision", "encryption": "none", "level": 0 } ] } ] }, "streamSettings": { "network": "tcp", "security": "tls", "tlsSettings": { "serverName": "sub.yourdomain.com", // Замените на доменное имя вашего сервера "allowInsecure": false, // Запретить использование недоверенных сертификатов "fingerprint": "chrome" // Использовать uTLS для подмены отпечатка браузера Chrome / Firefox / Safari или случайный отпечаток } } }, // 5.2 Прямое подключение // Используется, если в настройках маршрутизации указан тег "direct" { "tag": "direct", "protocol": "freedom" }, // 5.3 Блокировка трафика // Используется, если в настройках маршрутизации указан тег "block" { "tag": "block", "protocol": "blackhole" } ] }
8.4 Дополнительное задание 2: запуск xray-core
на ПК
Итак, мы создали файл конфигурации. Как теперь запустить xray-core
? Двойной клик по файлу не работает!
Во-первых, вам нужно открыть командную строку.
- Пользователи Linux и macOS наверняка знают, как это сделать. Просто найдите приложение «Терминал».
- В Windows используйте «Командную строку» или PowerShell (пользователи WSL, можете использовать привычный вам «Терминал»).
Во-вторых, нам нужно указать xray
путь к файлу конфигурации config.json
и запустить его.
В Windows, если файл
xray.exe
находится в папкеC:\Xray-windows-64\
, а файлconfig.json
— в той же папке, то команда запуска будет выглядеть так:C:\Xray-windows-64\xray.exe -c C:\Xray-windows-64\config.json
Подсказка
Параметр
-c
указывает путь к файлу конфигурации.Аналогично, в Linux и macOS, если файл
xray
находится в папке/usr/local/bin/
, а файлconfig.json
— в папке/usr/local/etc/xray/
, то команда запуска будет выглядеть так:/usr/local/bin/xray -c /usr/local/etc/xray/config.json
Подсказка
В каждой системе есть переменные окружения, которые хранят пути к часто используемым папкам. Указывать полный путь к файлу
xray
не обязательно, при его расположении в таких директориях. Но я всё же указал его для надёжности.
8.5 Дополнительное задание 3: автозапуск xray-core
на ПК
Если вы попробовали запускать xray-core
вручную, то наверняка заметили следующие недостатки:
- При каждом запуске
Xray
открывается чёрное окно консоли, что не очень красиво. Xray
не запускается автоматически при загрузке системы, поэтому его приходится запускать вручную каждый раз.
Спешу вас обрадовать: эти проблемы решаемы! Но как именно их решить, я оставлю вам в качестве домашнего задания (подсказка: загляните в раздел FAQ на сайте документации).
8.6 Финишная прямая!
Уверен, что те, кто дочитал до этого места, — это любознательные и целеустремлённые люди, которые готовы учиться новому! Я от всей души поздравляю вас, ведь вы самостоятельно, начиная с самых азов, настроили сервер VPS и клиент Xray! Это огромная победа!
Надеюсь, теперь вы больше не боитесь Linux
и разобрались с тем, как работает Xray
.
На этом наше повествование завершается!
⬛⬛⬛⬛⬛⬛⬛⬛ 100%
8.7 В бесконечность и далее!
Но это ещё не всё, что может Xray.
Xray
— это мощный и многофункциональный инструмент, который можно использовать для решения самых разных задач. В этом руководстве мы лишь поверхностно рассмотрели самые простые и наглядные варианты его настройки.
Если вам достаточно и этого, то наслаждайтесь свободой в интернете! Но если ваш пытливый ум жаждет новых знаний, то продолжайте изучать безграничные возможности Xray
!
Дополнительную информацию можно найти здесь:
- xtls.github.io — официальная документация
- Официальная группа в Telegram — активное и дружелюбное сообщество
Вместо послесловия
Надеюсь, это небольшое путешествие, в которое я вас отправил, поможет вам сделать интернет лучше.
Конечно, со временем информация из этого руководства устареет. Но вы будете расти и развиваться, и, возможно, когда-нибудь, вспоминая это руководство и те цели, которые я ставил перед собой, создавая его, вы передадите свои знания другим, чтобы эта эстафета помощи новичкам не прекращалась.
Мы живём в мире, где царят тьма и цензура. Люди бродят в одиночестве в поисках лучика света. И если мы не будем помогать друг другу и поддерживать друг друга на этом пути, то в конце концов нас ждёт лишь печальная картина запустения.