Xray-docs-next/docs/ru/document/level-0/ch08-xray-clients.md
2024-09-04 15:51:14 +02:00

337 lines
26 KiB
Markdown
Raw 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.

# 【Глава 8】Настройка Xray на клиенте
## 8.1 Как работает Xray: краткое описание
Чтобы правильно настраивать и использовать `Xray`, важно понимать принципы его работы. Новичкам поможет упрощённая схема, на которой не показаны некоторые сложные моменты:
![Поток данных в Xray](./ch08-img01-flow.png)
Ключевые моменты:
1. Приложение должно самостоятельно или с помощью стороннего инструмента перенаправить трафик на **входящее подключение** (`inbounds`) клиента `Xray`.
2. Поступивший на клиент трафик обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`) клиента `Xray`, например:
- Трафик на китайские ресурсы — напрямую (`direct`)
- Трафик на зарубежные ресурсы — через VPS (`proxy`)
- Рекламный трафик — блокируется (`block`)
3. Трафик на зарубежные ресурсы, перенаправленный на VPS, проходит через Великий Китайский Файрвол и попадает на **входящее подключение** (`inbounds`) сервера `Xray`.
4. Как и на клиенте, трафик, поступивший на сервер, обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`):
- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (`direct`).
- При необходимости можно настроить перенаправление трафика на другие VPS (`proxy`).
- На сервере также можно блокировать нежелательный трафик, например, рекламу или торренты (`block`).
:::warning Внимание!
Важно помнить, что маршрутизация в `Xray` очень гибкая, и описанный выше сценарий — лишь один из множества возможных.
Используя файлы `geosite.dat` и `geoip.dat`, можно очень гибко управлять маршрутизацией трафика по доменным именам и IP-адресам. Это гораздо удобнее, чем устаревший `GFWList`, поскольку позволяет очень точно настроить правила: например, можно разрешить прямое подключение к доменам Apple, перенаправить трафик на домены Amazon через прокси-сервер, блокировать доступ к доменам Baidu и т. д.
Более подробно о маршрутизации в Xray читайте в статье [«Разбор функции маршрутизации (routing)»](../level-1/routing-lv1-part1.md). Советую сначала дочитать эту главу и настроить базовый клиент, а потом уже углубляться в тонкости маршрутизации.
:::
## 8.2 Подключение клиента к серверу
Теперь, когда вы понимаете принципы работы `Xray`, настройка клиента сводится к тому, чтобы **сообщить ему, как подключиться к вашему VPS**. Это как настроить `PuTTY` для подключения к серверу, только в случае с Xray параметров подключения больше, чем IP-адрес, порт, имя пользователя и пароль.
Набор параметров подключения в `Xray` зависит от используемого [протокола](../../config/inbounds/). В главе 7 мы настроили сервер на использование протокола `VLESS` с шифрованием `XTLS`. Посмотрим на файл конфигурации сервера, чтобы узнать, какие параметры нужны для подключения:
- **Адрес сервера**: `sub.yourdomain.com`
- **Порт сервера**: `443`
- **Протокол**: `vless`
- **Поток**: `xtls-rprx-vision` (режим `vision` подходит для всех платформ)
- **Идентификатор**: `uuiduuid-uuid-uuid-uuid-uuiduuiduuid`
- **Безопасность**: `"allowInsecure": false`
Ниже приведен список популярных клиентов Xray для мобильных и настольных устройств. Каждый клиент имеет свой собственный интерфейс, поэтому я не буду делать скриншоты для каждого из них. Внимательно изучите документацию к выбранному клиенту и укажите нужные параметры подключения.
:::warning Внимание!
Многие клиенты поддерживают как `xray-core`, так и `v2fly-core`. Но по умолчанию может использоваться не тот, который вам нужен. Убедитесь, что вы выбрали нужный инструмент!
:::
- **v2rayN - для Windows**
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayN/releases)
- Настройте клиент в соответствии с документацией
- **v2rayNG - для Android**
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayNG/releases)
- Настройте клиент в соответствии с документацией
- **Shadowrocket - для iOS, macOS на базе Apple M1**
- Создайте учётную запись iCloud **не** в китайском регионе
- Купите приложение в App Store
- Настройте клиент в соответствии с документацией
- **Qv2ray - кроссплатформенный графический интерфейс для Linux, Windows, macOS**
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/Qv2ray/Qv2ray/releases) (или более новую версию из раздела [сборок на GitHub](https://github.com/Qv2ray/Qv2ray/actions))
- Изучите документацию на [сайте проекта](https://qv2ray.net/)
- Настройте клиент в соответствии с документацией
- **V2RayXS - клиент для macOS, основанный на V2RayX и использующий xray-core**
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/tzmax/v2rayXS/releases)
- Поддерживает импорт ссылок на конфигурации VLESS / VMessAEAD по стандарту, предложенному в [этой задаче](https://github.com/XTLS/Xray-core/issues/91)
- Настройте клиент в соответствии с документацией
На этом этапе ваша система готова к работе!
## 8.3 Дополнительное задание 1: настройка `xray-core` на ПК вручную
Хотя на предыдущем шаге мы уже всё настроили, любознательным и обладающим хорошей памятью читателям наверняка вспомнятся мои слова из предыдущей главы о том, что `xray-core` можно запускать как на сервере, так и на клиенте. Так как же использовать `xray-core` в качестве клиента?
Чтобы ответить на этот вопрос, я добавил этот раздел с дополнительным заданием. Оно немного выходит за рамки основного материала и может показаться сложным, но у него есть свои преимущества:
- Вы всегда будете использовать самую последнюю версию `xray-core`, не дожидаясь, пока разработчики клиентов выпустят обновления.
- Вы получите максимальную гибкость в настройке маршрутизации (хотя стоит отметить, что Qv2ray имеет мощный редактор маршрутизации, который позволяет настраивать все функции `xray-core`).
- Вы сэкономите системные ресурсы (графические клиенты всегда потребляют больше ресурсов, чем консольные).
Недостаток этого способа заключается в том, что вам придётся **настраивать клиент вручную, редактируя файл конфигурации**. Но ведь на сервере вы уже делали это, так что ничего сложного здесь нет. Давайте разберёмся по шагам:
1. Скачайте последнюю версию `xray-core` для вашей платформы из [репозитория на GitHub](https://github.com/XTLS/Xray-core/releases) и распакуйте архив в удобное место.
2. Создайте пустой файл конфигурации `config.json` в той же папке (думаю, с этим проблем не возникнет).
3. Что значит "удобное место"? Это зависит от платформы.
4. Заполните файл конфигурации.
- Я написал пример конфигурации, основанный на схеме из раздела 8.1 (прямое подключение к китайским ресурсам, проксирование трафика на зарубежные ресурсы через VPS, блокировка рекламы) и параметрах подключения из раздела 8.2.
- Замените `uuid` на идентификатор из вашей конфигурации сервера.
- Замените `address` на доменное имя вашего сервера.
- Замените `serverName` на доменное имя вашего сервера.
- Я добавил подробные комментарии к каждому разделу конфигурации.
```json
// ССЫЛКИ:
// 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`? Двойной клик по файлу не работает!
Во-первых, вам нужно открыть **командную строку**.
1. Пользователи Linux и macOS наверняка знают, как это сделать. Просто найдите приложение **«Терминал»**.
2. В Windows используйте **«Командную строку»** или **PowerShell** (пользователи WSL, можете использовать привычный вам **«Терминал»**).
Во-вторых, нам нужно **указать `xray` путь к файлу конфигурации `config.json` и запустить его**.
1. В Windows, если файл `xray.exe` находится в папке `C:\Xray-windows-64\`, а файл `config.json` — в той же папке, то команда запуска будет выглядеть так:
```shell
C:\Xray-windows-64\xray.exe -c C:\Xray-windows-64\config.json
```
:::tip
Параметр `-c` указывает путь к файлу конфигурации.
:::
2. Аналогично, в Linux и macOS, если файл `xray` находится в папке `/usr/local/bin/`, а файл `config.json` — в папке `/usr/local/etc/xray/`, то команда запуска будет выглядеть так:
```shell
/usr/local/bin/xray -c /usr/local/etc/xray/config.json
```
:::tip
В каждой системе есть переменные окружения, которые хранят пути к часто используемым папкам. Указывать полный путь к файлу `xray` не обязательно, при его расположении в таких директориях. Но я всё же указал его для надёжности.
:::
## 8.5 Дополнительное задание 3: автозапуск `xray-core` на ПК
Если вы попробовали запускать `xray-core` вручную, то наверняка заметили следующие недостатки:
1. При каждом запуске `Xray` открывается чёрное окно консоли, что не очень красиво.
2. `Xray` не запускается автоматически при загрузке системы, поэтому его приходится запускать вручную каждый раз.
Спешу вас обрадовать: **эти проблемы решаемы!** Но как именно их решить, я оставлю вам в качестве домашнего задания (подсказка: загляните в раздел FAQ на сайте документации).
## 8.6 Финишная прямая!
Уверен, что те, кто дочитал до этого места, — это любознательные и целеустремлённые люди, которые готовы учиться новому! Я от всей души поздравляю вас, ведь вы **самостоятельно, начиная с самых азов, настроили сервер VPS и клиент Xray!** Это огромная победа!
Надеюсь, теперь вы больше не боитесь `Linux` и разобрались с тем, как работает `Xray`.
**На этом наше повествование завершается!**
> ⬛⬛⬛⬛⬛⬛⬛⬛ 100%
## 8.7 В бесконечность и далее!
**Но это ещё не всё, что может Xray.**
`Xray` — это мощный и многофункциональный инструмент, который можно использовать для решения самых разных задач. В этом руководстве мы лишь поверхностно рассмотрели **самые простые** и **наглядные** варианты его настройки.
Если вам достаточно и этого, то наслаждайтесь свободой в интернете! Но если ваш пытливый ум жаждет новых знаний, то продолжайте изучать безграничные возможности `Xray`!
Дополнительную информацию можно найти здесь:
1. [xtls.github.io](https://xtls.github.io/) — официальная документация
2. [Официальная группа в Telegram](https://t.me/projectXray) — активное и дружелюбное сообщество
![В бесконечность и далее!](./ch08-img02-buzz.png)
:::tip Вместо послесловия
Надеюсь, это небольшое путешествие, в которое я вас отправил, поможет вам сделать интернет лучше.
Конечно, со временем информация из этого руководства устареет. Но вы будете расти и развиваться, и, возможно, когда-нибудь, вспоминая это руководство и те цели, которые я ставил перед собой, создавая его, вы передадите свои знания другим, чтобы эта эстафета помощи новичкам не прекращалась.
Мы живём в мире, где царят тьма и цензура. Люди бродят в одиночестве в поисках лучика света. И если мы не будем помогать друг другу и поддерживать друг друга на этом пути, то в конце концов нас ждёт лишь печальная картина запустения.
:::