Конфиг Xray-core: inbound, outbound, routing и правила JSON
Полное руководство по структуре конфигурационного файла Xray-core: JSON-блоки, назначение inbound и outbound, настройка routing, валидация и безопасность хранения секретов.
Содержание
Конфигурация Xray-core представляет собой JSON-файл, который определяет, как прокси-сервер принимает и передаёт трафик. Понимание структуры этого файла — ключ к эффективной настройке и устранению неполадок. В этой статье мы разберём основные блоки конфига: inbound, outbound, routing и правила JSON, а также расскажем о валидации и безопасном хранении секретов.
Основные блоки конфигурации
JSON-конфиг Xray-core состоит из нескольких ключевых секций. Каждая секция отвечает за определённый аспект работы прокси. Рассмотрим их по порядку.
log
Секция log определяет уровень логирования и путь к файлу логов. Она необязательна, но полезна для отладки. Пример: уровень error или warning, файл access.log и error.log.
inbound
Секция inbound описывает, как Xray принимает входящие соединения. Это может быть SOCKS-прокси, HTTP-прокси или VLESS-сервер. Каждый inbound имеет свой порт, протокол и настройки аутентификации. Важно помнить, что inbound может быть несколько, и каждый из них должен иметь уникальный порт.
outbound
Секция outbound определяет, как Xray отправляет исходящие соединения. Это может быть прямое соединение (freedom), проксирование через другой сервер или использование цепочки прокси. Outbound также может быть несколько, и они выбираются на основе правил routing.
routing
Секция routing — это сердце конфигурации. Она содержит правила, по которым трафик направляется на тот или иной outbound. Правила могут основываться на домене, IP-адресе, порте или других атрибутах. Например, можно направить трафик на определённый сайт через один outbound, а остальной трафик — через другой.
Подробнее о структуре inbound
Каждый inbound в конфиге — это объект JSON с обязательными полями: port, protocol, listen (необязательно, по умолчанию 0.0.0.0), settings. Рассмотрим типичные протоколы inbound.
- socks: классический SOCKS5 прокси. Настройки включают auth (noauth или password) и accounts.
- http: HTTP-прокси. Аналогично настройки аутентификации.
- vless: современный протокол с поддержкой TLS и реального трафика. Требует настройки users, а также может включать потоковый контроль.
Пример структуры inbound для VLESS (без реальных секретов):
В поле settings указываются пользователи (users) с их UUID и уровнем доступа. Для повышения безопасности рекомендуется использовать уникальные UUID для каждого пользователя.
Структура outbound
Outbound также имеет протокол и настройки. Распространённые протоколы: freedom (прямое соединение), blackhole (отбрасывание трафика), vless (подключение к другому серверу). Для vless необходимо указать адрес сервера, порт, UUID пользователя и транспорт.
Важно помнить, что outbound может быть несколько, и каждый должен иметь уникальное имя (tag). Это имя используется в правилах routing.
Правила routing
Routing — это массив правил. Каждое правило имеет условие (domain, ip, port, network) и действие (outboundTag). Правила проверяются сверху вниз, и первое совпадение определяет маршрут. Если ни одно правило не подошло, используется outbound по умолчанию (обычно freedom).
Примеры условий: domain содержит определённый домен, ip начинается с определённого префикса, port равен определённому значению. Можно комбинировать условия с помощью логических операторов.
Валидация конфигурации
Перед запуском Xray-core рекомендуется проверить корректность JSON-файла. Для этого существует команда xray run -test. Она проверяет синтаксис и наличие ошибок в структуре. Если конфиг невалиден, вы получите сообщение об ошибке с указанием места проблемы.
Также можно использовать онлайн-валидаторы JSON, но они не проверяют специфику Xray. Лучше использовать встроенную проверку.
Безопасность секретов
В конфиге часто содержатся секреты: UUID, пароли, ключи. Никогда не храните их в открытом виде в файле, который может попасть в публичный доступ. Используйте переменные окружения или файлы с правами доступа 600. В Xray-core можно ссылаться на переменные окружения в конфиге, например, с помощью синтаксиса ${VARIABLE}.
Также важно не включать секреты в логи. Убедитесь, что уровень логирования не выводит полные данные аутентификации.
Последовательность действий при настройке
- Определите, какие протоколы вам нужны для входящих и исходящих соединений.
- Создайте базовый конфиг с одним inbound и одним outbound (например, socks и freedom).
- Проверьте конфиг командой xray run -test.
- Добавьте routing правила, чтобы направлять трафик по нужным outbound.
- Проверьте работу прокси, используя curl или браузер.
- Постепенно добавляйте дополнительные inbound/outbound, каждый раз проверяя конфиг.
Ограничения и подводные камни
Ошибки в конфиге могут привести к неработоспособности прокси. Частые проблемы: неправильный порт, конфликт портов, неверный синтаксис JSON, отсутствие обязательных полей. Также не забывайте, что при изменении конфига необходимо перезапустить Xray-core.
Использование сложных правил routing может замедлить обработку трафика, поэтому старайтесь минимизировать количество правил.
Заключение
Понимание структуры конфига Xray-core — важный шаг для эффективной настройки. Мы разобрали основные блоки: inbound, outbound, routing и правила JSON. Помните о валидации и безопасности секретов. Следуя рекомендациям, вы сможете создать надёжную и безопасную конфигурацию.
Мини-чеклист
- Проверьте, что все порты inbound уникальны и не заняты другими службами
- Убедитесь, что каждый outbound имеет уникальный tag, используемый в routing
- Проверьте конфиг командой xray run -test перед запуском
- Используйте переменные окружения для хранения UUID и паролей
- Установите права доступа к файлу конфига 600 или 400
Частые ошибки
- Неверный синтаксис JSON: пропущены запятые или кавычки
- Конфликт портов: два inbound слушают один и тот же порт
- Отсутствие обязательного поля settings в inbound или outbound
- Routing правило ссылается на несуществующий outboundTag
- Хранение секретов в открытом виде в конфиге, доступном другим пользователям
FAQ
Как проверить корректность конфигурации Xray-core?
Используйте команду xray run -test. Она проверит синтаксис JSON и структуру конфига, выведет ошибки при наличии.
Можно ли использовать несколько inbound с одним портом?
Нет, каждый inbound должен иметь уникальный порт. Если нужно несколько протоколов на одном порту, используйте специальные схемы, например, VLESS с fallback.
Что такое tag в outbound и зачем он нужен?
Tag — это уникальное имя outbound, используемое в правилах routing для направления трафика. Без tag нельзя создать правило для этого outbound.
Как безопасно хранить UUID и пароли в конфиге?
Используйте переменные окружения: в конфиге укажите ${VAR_NAME}, а сами значения задайте в окружении. Также ограничьте доступ к файлу конфига.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ