XRAYUI: плагин XRAY-Core для роутеров ASUS

Вместо предисловия

В этой статье я хочу рассказать об open-source плагине XRAYUI, который предназначен для управления xray-core на популярных роутерах ASUS.

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

Что это такое и для чего это мне

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

общий интерфейс плагина

общий интерфейс плагина

Как можно заметить, плагин предоставляет возможность визуально работать с конфигурацией 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.

закладка x-ray

закладка 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.

Client как есть

Client как есть

Настройки DNS сервера

Для начала настроим внутренний DNS-сервер.

Стоит отметить, что теги в конфигурациях xray играют ключевую роль. Рекомендуется задавать понятные и осмысленные теги объектам, чтобы избежать путаницы. В нашем случае пропишем tag — dnsQuery.

раздел внутреннего сервера DNS

раздел внутреннего сервера DNS

Добавим сервер DNS (нажмем кнопку manage напротив Servers). Нам достаточно одной простой записи https+local://dns.google/dns-query.

добавляем DoH Google

добавляем DoH Google

Inbounds — входящий прокси

Поскольку мы настраиваем xray в режиме клиента, необходимо настроить механизм, который будет прослушивать входящий трафик. Xray-core поддерживает широкий спектр прокси-серверов, которые могут одновременно работать как для приема, так и для отправки трафика.

Для роутеров наиболее подходящим вариантом является прокси типа DOKODEMO-DOOR (он же Anywhere Door). Он позволяет эффективно перенаправлять весь трафик с указанного порта.

Добавим DOKODEMO-DOOR в качестве Inbound. Вы можете выбрать любой свободный порт, в данном примере используется порт 5599.

DOKODEMO-DOOR

DOKODEMO-DOOR

Также важно отметить галочку Follow Redirect. Сохраняем прокси.

Кстати, если вы хотите использовать xray через TPROXY, то это самое время настроить. В противном случае просто пропускаем этот шаг и переходим к Sniffing.

TPROXY

Напротив нашего входящего прокси нажимаем кнопку transport и далее manage напротив поля Socket options (tproxy).

В настройках Sockopt выбираем tproxy.

841eb223adbe97d5f4bdb542d1cde0aa.png

Sniffing

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

Для этого нажмите кнопку Sniffing, расположенную напротив вашего входящего прокси в интерфейсе xrayui.

Sniffing в Xray – это функция, которая позволяет анализировать содержимое сетевого трафика для определения доменов, которые использует клиент.

Sniffing в Xray — это функция, которая позволяет анализировать содержимое сетевого трафика для определения доменов, которые использует клиент.

Outbounds — исходящие прокси

Этот шаг критически важен для корректной маршрутизации трафика. Настройка исходящего трафика должна соответствовать параметрам входящего соединения на сервере Xray. В данном примере мы решили использовать надежную конфигурацию VLESS + REALITY.

FREEDOM Outbound — прокси прямого выхода

Первым делом добавим исходящий прокси с протоколом FREEDOM. Этот протокол используется для выхода в интернет напрямую, минуя дополнительные обработки. Дадим нашей прокси тэг direct.

настройки прокси FREEDOM

настройки прокси FREEDOM

VLESS + REALITY Outbound

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

настройки прокси VLESS

настройки прокси VLESS

Не забываем указать сервер нашего xray и порт соотвественно.

Добавляем пользователя. При каждом создании пользователя система автоматически генерирует новый UUID, который можно использовать позже на сервере.

Если у вас уже есть заранее созданный UUID на сервере, просто замените предложенный XRAYUI идентификатор своим.
Сохраняем VLESS.

Настройка транспорта и безопасности

Следующим шагом нажимаем на кнопку Transport, чтобы настроить параметры транспорта и безопасности для исходящего VLESS прокси.

Транспорт в Xray определяет способ передачи данных между клиентом и сервером. Он отвечает за базовую обработку сетевых соединений.

окно Transport

окно Transport

Далее, из выпадающего списка выбираем REALITY и нажимаем кнопку Settings, чтобы задать дополнительные параметры.
Эти настройки необходимы для обеспечения безопасного и стабильного соединения. В интерфейсе XRAYUI заполним следующие поля:

  1. Server Name: Укажите имя сервера, например, dl.google.com. Это имя должно точно соответствовать значению, указанному в свойстве dest серверной конфигурации.

  2. Short ID: Укажите Short ID, который должен совпадать с параметром на стороне сервера. Этот идентификатор используется для согласования соединения.

  3. Public Key: Вставьте публичный ключ, предоставленный сервером. Этот ключ необходим для шифрования соединения.

  4. Fingerprint: Определите отпечаток (fingerprint) сообщения TLS Client Hello, который задает способ представления трафика для большей безопасности.

настройка REALITY

настройка REALITY

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

BLACKHOLE Protocol

Добавьте третий Outbound с использованием протокола BLACKHOLE. Этот протокол предназначен для блокировки нежелательного трафика, эффективно отсекая любые запросы, которые мы хотим блокировать.

Прокси BLACKHOLE

Прокси 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.

правило для доменов Youtube

правило для доменов Youtube

2: Создание правила для остального трафика

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

Остальной трафик маршрутизируется напрямую

Остальной трафик маршрутизируется напрямую

правила

правила

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

оно работает!

оно работает!

Если все правильно сделано, мы увидим соотвествующий статус, а наш роутер начнет перенаправлять трафик через xray. Проверяем наши устройства в сети на подключения.

Послесловие

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

Если у вас есть вопросы или предложения по улучшению, буду рад выслушать и ответить. Хотя я старался сделать аддон максимально стабильным и удобным в использовании, допускаю, что в нем могут быть недоработки или баги. Надеюсь на ваше терпение и понимание, а также буду благодарен за обратную связь.

© Habrahabr.ru