Вместо предисловия
В этой статье я хочу рассказать об open-source плагине XRAYUI, который предназначен для управления xray-core на популярных роутерах ASUS.
Этот инструмент позволяет настраивать и управлять xray-core как в режиме клиента (подключая роутер и всю домашнюю сеть к внешнему xray-серверу), так и в режиме сервера. Причем это реализуется без сложностей с ручным редактированием конфигурационных файлов — все операции доступны через веб-интерфейс.
Что это такое и для чего это мне
По сути, XRAYUI — это аддон для роутеров, работающих на прошивках MerlinWRT, который значительно упрощает настройку, конфигурацию и управление xray-core. Вдаваться в подробности о том, что такое xray-core, я не стану — на эту тему уже написано множество статей на Хабре. Вместо этого, давайте сразу перейдем к рассмотрению возможностей аддона.
MerlinWRT — это не стоковая прошивка, а кастомная версия, основанная на оригинальной прошивке ASUS. Она добавляет множество полезных функций и расширяет возможности роутеров.

Как можно заметить, плагин предоставляет возможность визуально работать с конфигурацией xray-core. Можно добавлять inbounds, outbounds, настраивать правила маршрутизации, управлять встроенным DNS-сервером и многое другое.
Фактически, основная задача аддона — минимизировать необходимость ручного редактирования конфигурационных файлов и использования сторонних утилит, максимально упростив работу с проксей прямо из веб-интерфейса роутера.
Например, можно сразу сгенерировать ключи для REALITY или WireGuard, а также одним нажатием настроить SSL-сертификаты.

Правила маршрутизации визуально понятны. Возможно сортировать элементы:

Например, в режиме сервера аддон может сгенерировать для клиента QR-код для быстрого подключения в приложении клиента. Или же мониторить активные подключения.
Что нам понадобиться
Перед установкой, нам нужно убедиться в следующем:
наличие роутера, поддерживающего не официальную прошивку MerlinWRT (минимум версии 384.15 или 3006.102.1). Работоспособность аддона уже подтверждена на следующих моделях: RT-BE88U, RT-AX88U, RT-AX58U, RT-AX86U, GT-AX11000 Pro.
Установленный на борту менеджер пакетов Entware (легко ставится через amtm)
Устновка
В командной строке роутера выполняем следующую команду:
wget -O /tmp/asuswrt-merlin-xrayui.tar.gz https://github.com/DanielLavrushin/asuswrt-merlin-xrayui/releases/latest/download/asuswrt-merlin-xrayui.tar.gz && rm -rf /jffs/addons/xrayui && tar -xzf /tmp/asuswrt-merlin-xrayui.tar.gz -C /jffs/addons && mv /jffs/addons/xrayui/xrayui /jffs/scripts/xrayui && chmod 0777 /jffs/scripts/xrayui && sh /jffs/scripts/xrayui install
Дожидаемся завершения установки. После этого перезаходим в веб-интерфейс роутера (выполнив logout и снова login) и убеждаемся, что в разделе VPN появилась новая вкладка X-RAY.

Удалить аддон можно с помощью соотвествующей команды
/jffs/scripts/xrayui uninstall
Начнем работу
Кстати, если у вас уже имеется конфигурационный файл xray, то его можно смело положить в директорию
/opt/etc/xray/config.json
.Тогда, xrayui автоматически подгрузит его в свою форму.
Конечно, дальнейшая настройка зависит от того, как вы собираетесь использовать xray:
Серверный режим: в этом случае сторонние клиенты смогут подключаться к вашей сети.
Клиентский режим: здесь роутер подключается к внешнему xray-серверу. Вы можете настроить клиентский режим как DIRECT или через TPROXY (прозрачное проксирование) — xrayui автоматически добавит все необходимые правила маршрутизации роутера.
Мне кажется настроить xray в качестве сервера - очень простая задача. С клиентом же сложнее. Ниже я приведу небольшой пример настройки xray-core в режиме клиента с использованием VLESS + REALITY через xrayui.
Сразу же не забываем переключить xrayui в режим Client
.

Импортирование настроек
Плагин поддерживает импортирование настроек. Если у вас есть строка подключения к серверу (чаще всего начинается с названия протокола, например vless://...
), то можно воспользоваться инструментом импорта - в секции Configuration
жмем кнопку import
.
В появившемся окне можно как подгрузить QR код с конфигурацией, так и вставить ссылку напрямую. Стоит отметить галочку I'd like to have a complete setup! - это позволит конфигуратору добавить все необходимые настройки, что описаны далее в статье. Таким образом можно получить готовый к работе xray-core.
Тут же можно добавить сервисы, которые будут маршрутизироваться через прокси.

Хитрая галка don't break my network devices
позволяет настроить роутер на режим bypass
. Тут нужно пояснить. По умолчанию весь трафик роутер будет перебрасывать на сервис x-ray (т.н. режим redirect
). В некоторых случаях это может быть изслишеством, и нужно, наоборот, только определенные порты перебрасывать на x-ray, а по умолчанию все остальное должно работать как работало раньше.
Иными словами, эта галочка позволит маршрутизировать только стандартные порты (80 и 443) на x-ray. Это удобно в тех случаях, если у вас в доме полно разных сетевых устройств (умные кормушки для животных, wi-fi розетки и проч. IoT), тогда они не будут затронуты.
Если же по каким-то причинам такой вид настройки не устраивает, то ниже описан пример конфигурации вручную по шагам.
Inbounds - входящий прокси
Поскольку мы настраиваем xray в режиме клиента, необходимо настроить механизм, который будет прослушивать входящий трафик. Xray-core поддерживает широкий спектр прокси-серверов, которые могут одновременно работать как для приема, так и для отправки трафика.
Для роутеров наиболее подходящим вариантом является прокси типа DOKODEMO-DOOR (он же Anywhere Door). Он позволяет эффективно перенаправлять весь трафик с указанного порта.
Добавим DOKODEMO-DOOR в качестве Inbound. Вы можете выбрать любой свободный порт, в данном примере используется порт 5599
.

DOKODEMO-DOOR
Также важно отметить галочку Follow Redirect
. Сохраняем прокси.
Sniffing
Чтобы наши исходящие прокси могли точнее определять информацию о передаваемых пакетах, рекомендуется включить функцию Sniffing для нашего DOKODEMO-DOOR. Это позволит прокси анализировать заголовки пакетов и принимать решения на основе содержимого.
Для этого нажмите кнопку Sniffing
, расположенную напротив вашего входящего прокси в интерфейсе xrayui.

Outbounds - исходящие прокси
Этот шаг критически важен для корректной маршрутизации трафика. Настройка исходящего трафика должна соответствовать параметрам входящего соединения на сервере Xray. В данном примере мы решили использовать надежную конфигурацию VLESS + REALITY.
FREEDOM Outbound - прокси прямого выхода
Первым делом добавим исходящий прокси с протоколом FREEDOM. Этот протокол используется для выхода в интернет напрямую, минуя дополнительные обработки. Дадим нашей прокси тэг direct
.

VLESS + REALITY Outbound
Начиная с версии 0.27.0 появилась возможность импорта конфигурации с сервера X-ray. На данный момент это доступно только для протокола
VLESS
. Напротив опции создания новой прокси расположена кнопка для импорта конфигурации. Можно добавить как ссылку, так иQR-код
. После добавления конфигурация отобразится в списке Outbounds. Таким образом, шаг сVLESS
можно пропустить и перейти сразу кBLACKHOLE
шагу.

Теперь добавим основной исходящий прокси с использованием VLESS + REALITY.

Не забываем указать сервер нашего xray и порт соотвественно.
Добавляем пользователя. При каждом создании пользователя система автоматически генерирует новый UUID, который можно использовать позже на сервере.
Если у вас уже есть заранее созданный UUID на сервере, просто замените предложенный XRAYUI идентификатор своим.
Сохраняем VLESS.
Настройка транспорта и безопасности
Следующим шагом нажимаем на кнопку Transport
, чтобы настроить параметры транспорта и безопасности для исходящего VLESS прокси.
Транспорт в Xray определяет способ передачи данных между клиентом и сервером. Он отвечает за базовую обработку сетевых соединений.
В разделе Network выбираем
TCP
как транспортный протокол.В разделе Security выбираем
REALITY
.

Далее, из выпадающего списка выбираем REALITY
и нажимаем кнопку Settings
, чтобы задать дополнительные параметры.
Эти настройки необходимы для обеспечения безопасного и стабильного соединения. В интерфейсе XRAYUI заполним следующие поля:
Server Name: Укажите имя сервера, например,
dl.google.com
. Это имя должно точно соответствовать значению, указанному в свойствеdest
серверной конфигурации.Short ID: Укажите Short ID, который должен совпадать с параметром на стороне сервера. Этот идентификатор используется для согласования соединения.
Public Key: Вставьте публичный ключ, предоставленный сервером. Этот ключ необходим для шифрования соединения.
Fingerprint: Определите отпечаток (fingerprint) сообщения TLS Client Hello, который задает способ представления трафика для большей безопасности.

Убедитесь, что имя сервера (
Server name
) строго совпадает с указанным в свойствеdest
конфигурации на стороне сервера. Неправильное значение может привести к проблемам с подключением.
BLACKHOLE Protocol
Добавьте третий Outbound с использованием протокола BLACKHOLE. Этот протокол предназначен для блокировки нежелательного трафика, эффективно отсекая любые запросы, которые мы хотим блокировать.

Routing - правила маршрутизации трафика
Для эффективного разделения трафика необходимо настроить правила маршрутизации. Xray использует внутренние механизмы для определения типа и свойств трафика, чтобы направлять его в разные исходящие прокси.
Очередность правил: порядок применения правил имеет решающее значение. Убедитесь, что более специфичные правила идут выше, а общие — ниже. Неправильный порядок может нарушить маршрутизацию.

Общие списки доменов и IP-адресов
Xray поддерживает использование готовых списков общих доменов и IP-адресов. Эти списки могут быть использованы через механизм geosite:token
для маршрутизации или DNS-фильтрации. Они включают популярные домены и IP, позволяя быстро настроить маршрутизацию.
XRAYUI может сам закачать и установить списки сообщества. Рекомендую обращаться к данному списку , чтобы проверить, какие токены доступны на данное время. В секции Routing нажмите кнопку Update Metadata
, чтобы скачать и обновить списки. После обновления вы сможете использовать эти списки в правилах маршрутизации.

Настройка правил
Конфигурация правил маршрутизации зависит от вашего сценария и того, как вы планируете управлять сетевым трафиком через роутер. Ниже я приведу два примера.
Сценарий 1: Перенаправление всего трафика на прокси
Мы просто перенаправим весь входящий трафик на сервер xray.
В секции Rules нажмем кнопку manage
и далее add
, чтобы добавить новое правило в список. Отметим все наши входящие прокси и зададим Friendly name, описав правило (например "весь трафик в прокси").

Сценарий 2: Прокси для YouTube-трафика
В этом сценарии трафик, связанный с YouTube, направляется через прокси, в то время как весь остальной трафик отправляется напрямую.
1: Создание правила для YouTube-трафика
Выбираем в качестве Outbound наш VLESS прокси (тэг proxy на картинке) .
В поле
Domains
прописываемgeosite:youtube
.

2: Создание правила для остального трафика
Хотя это правило не является обязательным, если ваш первый Outbound настроен как прямое соединение ( FREEDOM), его добавление повысит читаемость конфигурации и снизит вероятность ошибок. По сути повторяем правило из первого примера:


Вот и все! Нажимаем большую кнопку Apply
, чтобы xrayui сохранил всю нашу форму в конфигурацию xray. После чего Нажимаем Reconnect
в самом верху аддона, чтобы перезапустить xray сервис.

Если все правильно сделано, мы увидим соотвествующий статус, а наш роутер начнет перенаправлять трафик через xray. Проверяем наши устройства в сети на подключения.
Послесловие
Автором данного мануала и аддона XRAYUI являюсь я сам. Надеюсь, что это руководство оказалось для кого-то нужным и поможет лучше разобраться с настройкой и использованием xray на роутерах ASUS.
Если у вас есть вопросы или предложения по улучшению, буду рад выслушать и ответить. Хотя я старался сделать аддон максимально стабильным и удобным в использовании, допускаю, что в нем могут быть недоработки или баги. Надеюсь на ваше терпение и понимание, а также буду благодарен за обратную связь.