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
Удалить аддон можно с помощью соотвествующей команды
/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 как есть
Настройки DNS сервера
Для начала настроим внутренний DNS-сервер.
Стоит отметить, что теги в конфигурациях xray играют ключевую роль. Рекомендуется задавать понятные и осмысленные теги объектам, чтобы избежать путаницы. В нашем случае пропишем tag — dnsQuery.
раздел внутреннего сервера DNS
Добавим сервер DNS (нажмем кнопку manage
напротив Servers
). Нам достаточно одной простой записи https+local://dns.google/dns-query
.
добавляем DoH Google
Inbounds — входящий прокси
Поскольку мы настраиваем xray в режиме клиента, необходимо настроить механизм, который будет прослушивать входящий трафик. Xray-core поддерживает широкий спектр прокси-серверов, которые могут одновременно работать как для приема, так и для отправки трафика.
Для роутеров наиболее подходящим вариантом является прокси типа DOKODEMO-DOOR (он же Anywhere Door). Он позволяет эффективно перенаправлять весь трафик с указанного порта.
Добавим DOKODEMO-DOOR в качестве Inbound. Вы можете выбрать любой свободный порт, в данном примере используется порт 5599
.
DOKODEMO-DOOR
Также важно отметить галочку Follow Redirect
. Сохраняем прокси.
Кстати, если вы хотите использовать xray через
TPROXY
, то это самое время настроить. В противном случае просто пропускаем этот шаг и переходим кSniffing
.
TPROXY
Напротив нашего входящего прокси нажимаем кнопку transport
и далее manage
напротив поля Socket options (tproxy).
В настройках Sockopt выбираем tproxy
.
Sniffing
Чтобы наши исходящие прокси могли точнее определять информацию о передаваемых пакетах, рекомендуется включить функцию Sniffing для нашего DOKODEMO-DOOR. Это позволит прокси анализировать заголовки пакетов и принимать решения на основе содержимого.
Для этого нажмите кнопку Sniffing
, расположенную напротив вашего входящего прокси в интерфейсе xrayui.
Sniffing в Xray — это функция, которая позволяет анализировать содержимое сетевого трафика для определения доменов, которые использует клиент.
Outbounds — исходящие прокси
Этот шаг критически важен для корректной маршрутизации трафика. Настройка исходящего трафика должна соответствовать параметрам входящего соединения на сервере Xray. В данном примере мы решили использовать надежную конфигурацию VLESS + REALITY.
FREEDOM Outbound — прокси прямого выхода
Первым делом добавим исходящий прокси с протоколом FREEDOM. Этот протокол используется для выхода в интернет напрямую, минуя дополнительные обработки. Дадим нашей прокси тэг direct
.
настройки прокси FREEDOM
VLESS + REALITY Outbound
Теперь добавим основной исходящий прокси с использованием VLESS + REALITY.
настройки прокси VLESS
Не забываем указать сервер нашего xray и порт соотвественно.
Добавляем пользователя. При каждом создании пользователя система автоматически генерирует новый UUID, который можно использовать позже на сервере.
Если у вас уже есть заранее созданный UUID на сервере, просто замените предложенный XRAYUI идентификатор своим.
Сохраняем VLESS.
Настройка транспорта и безопасности
Следующим шагом нажимаем на кнопку Transport
, чтобы настроить параметры транспорта и безопасности для исходящего VLESS прокси.
Транспорт в Xray определяет способ передачи данных между клиентом и сервером. Он отвечает за базовую обработку сетевых соединений.
окно Transport
Далее, из выпадающего списка выбираем REALITY
и нажимаем кнопку Settings
, чтобы задать дополнительные параметры.
Эти настройки необходимы для обеспечения безопасного и стабильного соединения. В интерфейсе XRAYUI заполним следующие поля:
Server Name: Укажите имя сервера, например,
dl.google.com
. Это имя должно точно соответствовать значению, указанному в свойствеdest
серверной конфигурации.Short ID: Укажите Short ID, который должен совпадать с параметром на стороне сервера. Этот идентификатор используется для согласования соединения.
Public Key: Вставьте публичный ключ, предоставленный сервером. Этот ключ необходим для шифрования соединения.
Fingerprint: Определите отпечаток (fingerprint) сообщения TLS Client Hello, который задает способ представления трафика для большей безопасности.
настройка REALITY
Убедитесь, что имя сервера (
Server name
) строго совпадает с указанным в свойствеdest
конфигурации на стороне сервера. Неправильное значение может привести к проблемам с подключением.
BLACKHOLE Protocol
Добавьте третий Outbound с использованием протокола 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
2: Создание правила для остального трафика
Хотя это правило не является обязательным, если ваш первый Outbound настроен как прямое соединение (FREEDOM), его добавление повысит читаемость конфигурации и снизит вероятность ошибок. По сути повторяем правило из первого примера:
Остальной трафик маршрутизируется напрямую
правила
Вот и все! Нажимаем большую кнопку Apply
, чтобы xrayui сохранил всю нашу форму в конфигурацию xray. После чего Нажимаем Reconnect
в самом верху аддона, чтобы перезапустить xray сервис.
оно работает!
Если все правильно сделано, мы увидим соотвествующий статус, а наш роутер начнет перенаправлять трафик через xray. Проверяем наши устройства в сети на подключения.
Послесловие
Автором данного мануала и аддона XRAYUI являюсь я сам. Надеюсь, что это руководство оказалось для кого-то нужным и поможет лучше разобраться с настройкой и использованием xray на роутерах ASUS.
Если у вас есть вопросы или предложения по улучшению, буду рад выслушать и ответить. Хотя я старался сделать аддон максимально стабильным и удобным в использовании, допускаю, что в нем могут быть недоработки или баги. Надеюсь на ваше терпение и понимание, а также буду благодарен за обратную связь.