RouteFlux — это нативный для OpenWrt менеджер Xray-подписок для роутеров и перефирийных устройств.
Он помогает импортировать прокси-подписки, выбирать подходящую ноду, применять правила маршрутизации трафика роутера и управлять DNS без ручного редактирования Xray JSON. Если RouteFlux экономит вам время, поставьте звезду репозиторию и поделитесь им с другими пользователями OpenWrt.
RouteFlux создан для тех, кому нужен практичный сценарий работы с прокси на OpenWrt:
- Импортируйте URL подписки, сырую ссылку
vless://,vmess://,trojan://,socks5://,hysteria://илиhy2://, либо валидный JSON-конфиг 3x-ui/Xray. - Подключайтесь к конкретной ноде вручную или позвольте RouteFlux автоматически выбрать лучшую.
- Управляйте всем из CLI, веб-интерфейса LuCI или локального TUI.
- Держите настройки маршрутизации роутера и DNS в понятном виде, а не прячьте их внутри сгенерированного Xray-конфига.
Текущая целевая среда выполнения — OpenWrt и совместимые форки, такие как ImmortalWrt. Практический базовый вариант — OpenWrt 22.03+ с nftables.
- Быстрый импорт подписок, share-ссылок и поддерживаемых JSON-файлов 3x-ui/Xray.
- Поддержка нод VLESS, VMess, Trojan, Socks5, Hysteria и Hysteria 2.
- Безопасные обновления runtime через
xray -test, резервную копию последней рабочей конфигурации и контролируемую перезагрузку сервиса. - Автоматический режим с проверками состояния, live failover, anti-flap логикой и восстановлением runtime после перезагрузки.
- Удобный список серверов (Server List) для оптимизированного управления подписками и отдельными серверами.
- Режим «Только выбранные устройства» (Only Selected Devices) для перенаправления через прокси только указанных LAN-хостов.
- Параллельный замер задержки и автоматическое переподключение к лучшему серверу при наличии дублирующихся имен нод.
- Простые правила прозрачной маршрутизации для LAN-хостов, CIDR, диапазонов или целевых адресов.
- Отдельные DNS-команды с разумным профилем по умолчанию для повседневного использования роутера.
- Общее состояние для CLI, LuCI и TUI, поэтому можно переключаться между интерфейсами без потери контекста.
Установите последний стабильный релиз на ваш роутер:
wget -O /tmp/routeflux-install.sh "https://github.com/Alaxay8/routeflux/releases/latest/download/install.sh" && sh /tmp/routeflux-install.shЗатем импортируйте подписку и подключитесь:
routeflux add https://provider.example/subscription
routeflux list subscriptions
routeflux connect --auto --subscription sub-1234567890После установки можно использовать:
- LuCI:
Services -> RouteFluxоткрываетSubscriptions - CLI: по SSH через
routeflux ... - TUI:
routeflux tui
RouteFlux включает интерфейс LuCI для повседневного управления подписками.
Экран профиля показывает метаданные подписки, быстрые действия, auto exclusions и список доступных нод.
Таблица нод позволяет сравнить задержку, посмотреть детали транспорта, подключиться вручную, перепроверить маршрут или исключить ноду из auto mode.
На странице Routing также есть экран Keep Direct для bypass selectors, где можно оставить выбранные домены или IPv4-цели на прямом маршруте, пока активен bypass mode.
Для сценариев split routing есть экран Excluded Devices, где можно оставить выбранные LAN-хосты вне proxy path и управлять ими прямо из LuCI.
В LuCI также доступен экран управления Zapret fallback, где видны автоматическое переключение, test mode и текущее состояние транспорта.
На странице Settings есть переключение внешнего вида, чтобы можно было сменить тему RouteFlux внутри LuCI без изменения остального интерфейса OpenWrt.
Используйте последний стабильный установщик:
wget -O /tmp/routeflux-install.sh "https://github.com/Alaxay8/routeflux/releases/latest/download/install.sh" && sh /tmp/routeflux-install.shЧтобы обновить уже установленный RouteFlux поверх текущей версии без потери подписок, пользовательских service alias и preset-ов из /etc/routeflux:
ROUTEFLUX_TAG=v0.1.5
wget -O /tmp/routeflux-install.sh "https://github.com/Alaxay8/routeflux/releases/download/${ROUTEFLUX_TAG}/install.sh" && sh /tmp/routeflux-install.shЕсли нужен зафиксированный релиз:
ROUTEFLUX_TAG=v0.1.5
wget -O /tmp/routeflux-install.sh "https://github.com/Alaxay8/routeflux/releases/download/${ROUTEFLUX_TAG}/install.sh" && sh /tmp/routeflux-install.shУстановщик автоматически ставит встроенный runtime Xray, если роутер ещё не предоставляет рабочий бинарный файл Xray и сервис.
Он обновляет RouteFlux поверх текущей установки и сохраняет существующие state-файлы в /etc/routeflux.
Сейчас готовые артефакты для простой установки публикуются для:
mipsel_24kcx86_64aarch64_cortex-a53
Чтобы удалить RouteFlux и встроенный runtime Xray:
wget -O /tmp/routeflux-uninstall.sh "https://github.com/Alaxay8/routeflux/releases/latest/download/uninstall.sh" && sh /tmp/routeflux-uninstall.shТребования:
- Go
1.26или новее - OpenWrt или ImmortalWrt с
nftables
Соберите локальный бинарник:
make buildКросс-сборка для OpenWrt:
make build-openwrt
make build-openwrt-x86_64
make build-openwrt-aarch64_cortex-a53Создайте артефакты релиза:
make package-releaseДля ручной установки на роутер скопируйте сгенерированный tarball на роутер и распакуйте его в /:
VERSION="$(git describe --tags --always --dirty | sed 's/^v//')"
ARCH="${ARCH:-aarch64_cortex-a53}"
scp -O "./dist/routeflux_${VERSION}_${ARCH}.tar.gz" root@router:/tmp/
ssh root@router "tar -xzf /tmp/routeflux_${VERSION}_${ARCH}.tar.gz -C / && rm -f /tmp/luci-indexcache && rm -rf /tmp/luci-modulecache && /etc/init.d/rpcd reload && /etc/init.d/uhttpd reload"routeflux add https://provider.example/subscription
routeflux list subscriptions
routeflux list nodes --subscription sub-1234567890
routeflux connect --subscription sub-1234567890 --node abcdef123456
routeflux status
routeflux disconnectrouteflux connect --auto --subscription sub-1234567890
routeflux daemonИспользуйте routeflux daemon --once, если хотите выполнить одно обновление и одну проверку состояния без постоянного фонового сервиса.
На OpenWrt включите сервис, если хотите автоматическое обновление, мониторинг failover и восстановление после перезагрузки:
/etc/init.d/routeflux enable
/etc/init.d/routeflux startSubscriptions: импорт провайдеров, просмотр профилей и подключение.Routing: упрощённый повседневный flow дляOff,Bypass, прямых доменов, IPv4 selector-ов и выбора DNS preset.DNS: полный контроль DNS дляsystem,remote,splitиdisabled.Zapret: только fallback-домены. Используйте fully qualified domains вродеyoutube.comилиgooglevideo.com.servicesв CLI остаются advanced alias-ами для firewall targets.
На OpenWrt routeflux dns set default применяет Recommended DNS preset. Это preset, а не пятый DNS-режим. Режимы remote|split и остальные реальные DNS-режимы по-прежнему влияют на реальный DNS роутера и LAN, пока подключена нода. RouteFlux перенаправляет dnsmasq в локальный Xray DNS runtime, сохраняет локальные имена вроде .lan локальными в режиме split и возвращает system DNS при disconnect.
routeflux dns get
routeflux dns set default
routeflux dns explain
routeflux firewall get
routeflux firewall set hosts 192.168.1.150
routeflux firewall set targets youtube instagram 1.1.1.1
routeflux services set openai openai.com chatgpt.com oaistatic.com
routeflux services list
routeflux zapret get
routeflux zapret set selectors youtube.com googlevideo.com
routeflux firewall explainrouteflux refresh --all
routeflux move sub-1234567890 up
routeflux restart
routeflux remove sub-1234567890
routeflux diagnostics
routeflux logs
routeflux settings get
routeflux services list
routeflux version
routeflux tuiИмпортируйте сырую share-ссылку:
routeflux add 'vless://uuid@example.com:443?...#Example'Импортируйте валидный JSON-конфиг 3x-ui или Xray:
routeflux add < ./client-config.jsonНаправьте один LAN-девайс через активное соединение RouteFlux:
routeflux firewall set hosts 192.168.1.150
routeflux connect --subscription sub-1234567890 --node 90c42d5dd302Направьте всю приватную LAN-сеть через RouteFlux:
routeflux firewall set hosts all
routeflux connect --subscription sub-1234567890 --node 90c42d5dd302Используйте зашифрованный DNS для внешних доменов, сохранив локальные имена на роутере:
routeflux dns set defaultСоздайте свой alias для targets один раз и затем переиспользуйте его:
routeflux services set openai openai.com chatgpt.com oaistatic.com
routeflux firewall set targets openai youtubeПо умолчанию RouteFlux хранит состояние в /etc/routeflux на OpenWrt. Для локальной разработки он использует ./.routeflux.
Полезные переменные окружения:
ROUTEFLUX_ROOT: переопределяет директорию состоянияROUTEFLUX_XRAY_CONFIG: переопределяет путь к сгенерированному Xray-конфигуROUTEFLUX_XRAY_SERVICE: переопределяет скрипт управления сервисом XrayROUTEFLUX_XRAY_BINARY: переопределяет бинарный файл Xray, используемый для проверкиROUTEFLUX_FIREWALL_RULES: переопределяет путь к сгенерированному файлу правилnftables
Основные сохраняемые файлы:
/etc/routeflux/subscriptions.json/etc/routeflux/settings.json/etc/routeflux/state.json
Для понятных объяснений лучше использовать встроенную справку:
routeflux dns explainrouteflux firewall explainrouteflux settings --help
CLI help показывает только короткий основной путь. Этот раздел — подробный справочник по DNS.
Если не хочется разбираться в деталях DNS, используйте это:
routeflux dns set defaultЭто лучший повседневный вариант для большинства пользователей: локальные имена остаются локальными, а внешний DNS шифруется.
system: оставить DNS как есть Пример: DNS на роутере уже работает нормально, и вы не хотите, чтобы RouteFlux что-то менял.
routeflux dns set mode systemremote: отправлять каждый DNS-запрос на выбранные DNS-серверы Пример: вы хотите, чтобы весь DNS шёл через Cloudflare или Google DNS.
routeflux dns set mode remote
routeflux dns set transport doh
routeflux dns set servers "1.1.1.1,1.0.0.1"split: оставлять локальные имена на роутере, а интернет-домены отправлять на выбранный DNS Пример:router.lanостаётся локальным, аgoogle.comуходит на зашифрованный DNS.
routeflux dns set defaultdisabled: не записывать DNS-настройки RouteFlux в Xray config Пример: полезно только для кастомных сценариев, где DNS управляется в другом месте.
routeflux dns set mode disabledТранспорт DNS:
plain: обычный DNS, без шифрованияdoh: зашифрованный DNS Over HTTPS
CLI help показывает только короткий основной путь. Этот раздел — подробный справочник по фаерволу.
disabled: не перенаправлять трафик роутера через RouteFlux
Пример: RouteFlux установлен, но ни одно устройство не направляется принудительно через прокси.
routeflux firewall disableЧто продолжает работать, когда фаервол выключен:
- можно добавлять, обновлять, удалять и просматривать подписки
- можно подключаться к ноде вручную или в автоматическом режиме
- RouteFlux всё равно генерирует и применяет конфиг Xray для выбранной ноды
- DNS-настройки продолжают работать
- CLI, LuCI, TUI, daemon, проверки состояния и failover продолжают работать
Что не происходит, когда фаервол выключен:
- RouteFlux не добавляет правила перенаправления
nftables - трафик роутера не отправляется через прокси автоматически
- LAN-устройства не используют выбранную ноду, пока вы не включите
hostsилиtargets - режим прозрачного прокси не включается для перехватываемого трафика
Простыми словами: RouteFlux продолжает управлять подписками и активным runtime Xray, но сам по себе не перехватывает трафик роутера или вашей LAN.
targets: отправлять трафик через RouteFlux только тогда, когда адрес назначения совпадает с выбранными сервисами, доменами или IPv4-целями Пример: через прокси должен идти трафик только к конкретным сервисам.
routeflux firewall set targets youtube instagram 1.1.1.1Селекторы targets:
- service preset:
discord,facetime,gemini,gemini-mobile,instagram,netflix,notebooklm,notebooklm-mobile,telegram,telegram-web,twitter,whatsapp,youtube - пользовательский alias сервиса:
openai - домен:
youtube.com - IPv4-адрес:
1.1.1.1 - подсеть:
8.8.8.0/24 - диапазон:
203.0.113.10-203.0.113.20
Замечания для доменных targets:
-
Создавайте свои alias через
routeflux services set <name> <domain-or-ip...>, а затем используйте это имя вrouteflux firewall set targets .... -
Пользовательский alias может содержать только домены, IPv4-адреса, CIDR и IPv4-диапазоны.
-
Имена встроенных preset-ов зарезервированы и остаются read-only.
-
RouteFlux трактует
youtube.comкак сам домен и его поддомены. -
Популярные preset-ы вроде
youtube,instagram,discord,twitter,netflix,whatsapp,gemini,gemini-mobile,notebooklmиnotebooklm-mobileавтоматически разворачиваются во внутренние доменные семейства. -
Популярные root-домены вроде
youtube.com,instagram.com,netflix.com,x.com,gemini.google.comиnotebooklm.google.comтоже автоматически разворачиваются во внутренние доменные семейства. -
Используйте
gemini-mobileиnotebooklm-mobileдля Android и iOS приложений, когда web preset оказывается слишком узким. -
Для mobile preset-ов Google AI может добавляться небольшой набор IPv4 targets поверх доменов, потому что часть трафика приложения не раскрывает пригодный hostname.
-
gemini,gemini-mobile,notebooklm,notebooklm-mobile,telegram,facetime,twitterиnetflixэто best-effort preset-ы, потому что их приложения могут использовать прямые IP или более широкую общую инфраструктуру вендора. -
Мобильные Google AI preset-ы намеренно шире и могут зацеплять общую Google-инфраструктуру. Если и этого недостаточно, добавьте недостающие Google-домены в свой custom alias и маршрутизируйте уже его.
-
Для доменных targets нужен
dnsmasqс поддержкойnftset, обычно этоdnsmasq-fullна OpenWrt. -
Доменные targets зависят от DNS-ответов, которые видит роутер. Если клиенты используют собственный DoH или DoT напрямую, набор IP может остаться пустым.
-
На shared CDN RouteFlux теперь откатывает несоответствующий прозрачный трафик на
direct, а не отправляет весь совпавший IP через выбранную ноду. -
split: использовать отдельные таблицы для трафика через RouteFlux, direct-исключений и полностью исключённых устройств Пример: YouTube и рабочие сервисы идут через RouteFlux, банковские сайты остаются direct, а один ноутбук или ТВ вообще не перехватывается.
routeflux firewall set split --proxy youtube openai --bypass gosuslugi.ru sberbank.ru --exclude-host 192.168.1.50Селекторы split:
- service preset:
discord,facetime,gemini,gemini-mobile,instagram,netflix,notebooklm,notebooklm-mobile,telegram,telegram-web,twitter,whatsapp,youtube - пользовательский alias сервиса:
openai - домен:
gosuslugi.ru - IPv4-адрес:
1.1.1.1 - подсеть:
8.8.8.0/24 - диапазон:
203.0.113.10-203.0.113.20 - исключённое устройство:
192.168.1.50,192.168.1.0/24,192.168.1.10-192.168.1.20илиall
Замечания для split:
-
Split использует тот же парсинг селекторов и то же разворачивание alias, что и
targets. -
Keep Directимеет приоритет надRoute Through RouteFlux, если совпадают одни и те же назначения. -
В LuCI и основном CLI unmatched split-трафик по умолчанию остаётся
direct. -
Для доменных split-правил на OpenWrt нужен
dnsmasqс поддержкойnftset, если домены должны попадать в nftables destination sets. -
routeflux firewall set anti-target ...остаётся как legacy alias дляsplitс bypass-only селекторами и proxy fallback. -
block-quicуправляет обработкой проксируемого QUIC. Включайте его только если хотите намеренно блокировать проксируемый QUIC и заставить клиентов перейти на TCP. -
hosts: отправлять весь трафик выбранных LAN-устройств через RouteFlux Пример: направить через прокси один телефон, телевизор или ноутбук.
routeflux firewall set hosts 192.168.1.150Селекторы хостов:
- одно устройство:
192.168.1.150 - подсеть:
192.168.1.0/24 - диапазон:
192.168.1.150-192.168.1.159 - вся приватная LAN:
all
Примеры:
routeflux firewall set hosts 192.168.1.0/24
routeflux firewall set hosts 192.168.1.150-192.168.1.159
routeflux firewall set hosts allДругие параметры фаервола:
block-quic: блокировать проксируемый QUIC/UDP и при необходимости принуждать клиентов к TCP fallbackport: меняет порт прозрачного редиректа
Форматирование, vet и тесты:
make fmt
make lint
go test ./...Сборка и runtime coverage:
make build
make coverage-runtimeИнтеграционный набор OpenWrt:
make test-integrationДополнительная документация проекта:
MIT






