Вместо предисловия
В этой статье я хочу рассказать об 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
.
Настройки DNS сервера
Для начала настроим внутренний DNS-сервер.
Стоит отметить, что теги в конфигурациях xray играют ключевую роль. Рекомендуется задавать понятные и осмысленные теги объектам, чтобы избежать путаницы. В нашем случае пропишем tag — dnsQuery.
Добавим сервер DNS (нажмем кнопку manage
напротив Servers
). Нам достаточно одной простой записи https+local://dns.google/dns-query
.
Inbounds - входящий прокси
Поскольку мы настраиваем xray в режиме клиента, необходимо настроить механизм, который будет прослушивать входящий трафик. Xray-core поддерживает широкий спектр прокси-серверов, которые могут одновременно работать как для приема, так и для отправки трафика.
Для роутеров наиболее подходящим вариантом является прокси типа DOKODEMO-DOOR (он же Anywhere Door). Он позволяет эффективно перенаправлять весь трафик с указанного порта.
Добавим DOKODEMO-DOOR в качестве Inbound. Вы можете выбрать любой свободный порт, в данном примере используется порт 5599
.
Также важно отметить галочку 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.
Если у вас есть вопросы или предложения по улучшению, буду рад выслушать и ответить. Хотя я старался сделать аддон максимально стабильным и удобным в использовании, допускаю, что в нем могут быть недоработки или баги. Надеюсь на ваше терпение и понимание, а также буду благодарен за обратную связь.
Комментарии (16)
XOR2048
21.01.2025 13:27А будет ли в будущем введена возможность настройки при помощи URI (
vless://
,ss://
и подобных)?Jholinar Автор
21.01.2025 13:27Она будет прям буквально сегодня :), почти закончил.
XOR2048
21.01.2025 13:27Просто фантастика!
Jholinar Автор
21.01.2025 13:27в 0.27 добавил возможность такую :).
Кстати, внизу справа, он сам показывает обновления, и можно одним кликом накатить последнее. Я об этом не упоминал в статье.пока что работает только с VLESS протоколом. Позже накачу остальные.
Jholinar Автор
21.01.2025 13:27Тут еще затык, что эти урлы протоколов - абсолютный нестандарт. То есть буквально нет нигде описания по ним. Черт ногу сломит, найти по ним информацию.
Foxchasing
21.01.2025 13:27Просто мысли вслух: Интересно, когда рунет окончательно ляжет, с ростом количества туннелей в нём, если туннели могут настроить даже домохозяйки...
Denis1121
21.01.2025 13:27Да вряд-ли рухнет, но вот что неприятно - рост цен за интернет, ведь международный трафик растёт, а он, насколько я знаю, гораздо дороже, чем внутренний по стране или вообще, который локальный внутри одного оператора.
Ну а в продолжение темы, не так уж и много людей могут всё это сделать. Просто то что вы читаете в комментарии в местах, где собрались какие-никакие специалисты, создаёт ощущение, что вокруг одни специалисты… но отнюдь, многие не то что не могут приложение на Android поставить, они вообще не совсем понимают что такое приложение. А, ну да, такие люди и не то что на хабре или 4пда не сидят, они на форуме садоводов то вряд-ли есть, у них есть реальные огроды, товарищи для поездок на шашлыки и т.д. Так вот, таких обычно выручает настройкой "шарящий" товарищ… но когда как, ведь не у всех такие товарищи имеются. И это в том числе приводит к тому, что люди вообще чуть ли ни сбербанк через сервера зарубежные гоняют.
Jholinar Автор
21.01.2025 13:27Ну трафик-то итак был бы международным, если только у конторы был свой cdn в РФ, который закрылся (на примере тытрубы). Так-то не думаю, что сильно нагрузка изменилась.
А насчет сложности - мне кажется такие проекты как тот же xray, v2ray и проч, очень хорошо используются в качестве серверной части в каких-нибудь впн сервисах, которые в свою очередь просто продают впн-клиенты людям. Ну, то есть на их стороне крутится что-то подобное, что я сделал для Азуса, только в больших масштабах на серверной части, а они просто забацали клиент-приложение и продают подписку (аля какая-нибудь бумагаВПН). В таком случае-то и не нужны большие знания в линухе :).
В случае с xrayui - тот же айтишник с прямыми руками может условно маме в квартире настроить роутер.Denis1121
21.01.2025 13:27Логично. Возможно, и другие причины. Кстати, у меня оператор уже поднял ценники ещё раз, уже свыше 700₽ (это самый дешёвый тариф), хотя совсем недавно поднимал цены до около 600₽. А раньше долго по 500₽ платил и всё было шикарно, почти не дорожало. Что-то у них там внутри расходы растут, почему - непояно.
Но тут не стоит исключать и другие факторы, не относящиеся к интернету, да. Поэтому первопричина может быть, действительно, любой.
Denis1121
Хм, забавно. Интересно, насколько сложно такое же организовать на роутерах MSI и/или TP-Link?
Jholinar Автор
Честно скажу, пока интегрировал это все в свой роутер, успел несколько раз одуреть. При всей моей любви к этим девайсам Asus, интеграция там в веб интерфейс - привет разработчикам из начала нулевых. Что-то мне подсказывает, что у остальных производителей дела с этим далеко не лучше, учитывая популярность Азуса.