HomeProxy или luci-app-homeproxy это часть проекта ImmortalWRT, графическая надстройка для sing-box позволяющая настроить подключение к Shadowsocks2022, Hysteria2, XRay, VLESS, VMESS, Trojan, TUIC в т.ч. с помощью подписок (subscription). Основное отличие sing-box на сегодняшний день это поддержка URLTest - механизма отслеживания состояния и перебора списка прокси серверов.
В данной статье будет рассматриваться установка luci-app-homeproxy на примере OpenWRT 23.05.5 и 24.10.2 (поддерживаются версии 23.05.0 и выше).
Также настроим раздельную маршрутизацию на примере списков Re:filter
Можно использовать как чистую версию OpenWRT так и от проекта ImmortalWRT.
Потребуется роутер со свободными 40 Мб памяти и минимум 256 Мб ОЗУ (Работающий HomeProxy занимает от 70Мб ОЗУ).
Оглавление:
1. Установка luci-app-homeproxy
2. Настройка homeproxy
3. Отличия в настройке DNS на 24.10
4. Дополнительные настройки Homeproxy
1. Установка luci-app-homeproxy
Для установки достаточно установить ipk файл, для 23.05.0 и выше можно использовать команду:
. /etc/os-release && if [ "$VERSION_ID" = "23.05.5" ]; then VERSION_ID="23.05.4"; fi && REPO="https://downloads.immortalwrt.org/releases/${VERSION_ID}/packages/${OPENWRT_ARCH}/luci" && PKG=$(wget -qO- "$REPO/" | grep -o 'luci-app-homeproxy_[^"]*\.ipk' | head -n 1) && [ -n "$PKG" ] && wget "$REPO/$PKG" -O "/tmp/$PKG" && echo "Downloaded to /tmp/$PKG" || echo "Error: Package not found." opkg update && opkg install /tmp/$PKG
т.к. для версии 23.05.5 нет аналога ImmortalWRT используется ветка 23.05.4
При желании можно добавить дополнительные репозитории от проекта ImmortalWRT (если вы используете сборку от ImmortalWRT этот шаг пропускаем)
VERSION_ID=$(grep "VERSION_ID" /etc/os-release | awk -F '"' '{print $2}') ARCH=$(grep "OPENWRT_ARCH" /etc/os-release | awk -F '"' '{print $2}') sed -i 's/option check_signature/# option check_signature/g' /etc/opkg.conf echo "src/gz immortalwrt_routing https://downloads.immortalwrt.org/releases/$VERSION_ID/packages/$ARCH/routing" >> /etc/opkg/customfeeds.conf echo "src/gz immortalwrt_packages https://downloads.immortalwrt.org/releases/$VERSION_ID/packages/$ARCH/packages" >> /etc/opkg/customfeeds.conf echo "src/gz immortalwrt_luci https://downloads.immortalwrt.org/releases/$VERSION_ID/packages/$ARCH/luci" >> /etc/opkg/customfeeds.conf echo "src/gz immortalwrt_base https://downloads.immortalwrt.org/releases/$VERSION_ID/packages/$ARCH/base" >> /etc/opkg/customfeeds.conf opkg update opkg install luci-app-homeproxy
Если установка прошла успешно, переходим к настройке.
При возникновении проблем, замените $VERSION_ID на значение из Releases Index of /releases/ (immortalwrt.org) или отредактируйте файл /etc/opkg/customfeeds.conf с учётом актуального совместимого релиза ImmortalWRT
2. Настройка Homeproxy
Большую часть настройки будем проводить на примере sing-box v.1.11.15 на OpenWRT 23.05.5, версия Homeproxy на 24.10 имеет некоторые отличия связанные с изменениями DNS в версиях sing-box выше 1.13.0 их опишу в конце статьи
Переходим в раздел Службы - Homeproxy

Сперва нужно добавить сервер, для этого переходим во вкладку Node Settings - Nodes

Нажимаем Import share links для добавления статичной конфигурации shadowsocks (outline), vless, trojan или иной

После добавления нажимаем Импорт

Применяем изменения.
Для добавления подписки (Subscription) открываем вкладку Subscriptions

Update via Proxy - Обновление подписок через прокси
Filter nodes - Blacklist mode - исключаются только ссылки из фильтра, остальные добавляются, при необходимости меняется на Whitelist mode
Официальный sing-box на 09.04.2026 не поддерживает xhttp и в список ключевых слов можно добавить xhttp чтобы при наличии конфигураций xhttp в списке нод подписки они не подгружались в список
Перед скачиванием списка прокси из подписки нажимаем Save subscription settings - для применения изменений
После чего обновляем подписки - Update nodes from subscriptions

После этого убеждаемся что количество нод из подписки отобразилось внизу страницы:

Далее переходим к настройкам подключения:
Для раздельного туннелирования выбираем режим Routing Mode — Custom Routing - проксирование подключений согласно правилам (Sing-box Rule-set).
Для направления всего трафика через Main Node можно выбрать режим Global (большой расход трафика и шанс быстрее засветить подключение), остальные режимы привязаны к Китайским спискам и для РФ не очень актуальны на мой взгляд

Routing Ports — Common ports only - для избежания потенциальных проблем с трафиком, если хотите перенаправлять все порты в Main Node то можно выбрать All ports.
Proxy Mode — Redirect TCP + TProxy UDP - оставляем параметр по умолчанию
Redirect TCP (перенаправление только TCP трафика, согласно правилам Homeproxy, а не основного firewall).
При установке ip-full и kmod-tun также доступны:
Redirect TCP + Tun UDP как Redirect TCP + TProxy UDP, но UDP трафик идёт через интерфейс singtun и регулируется основными правилами firewall.
Tun TCP/UDP — весь трафик идёт через интерфейс singtun регулируется правилами firewall
Поддержка IPv6 - рекомендую выключить т.к. списки Re:filter пока не включают адресов IPv6
Default outbound - Direct - весь трафик не направленный правилами в прокси будет идти через шлюз по умолчанию
Далее - Применяем изменения и переходим во вкладку Routing Nodes

Внизу страницы добавляем новый элемент, можно назвать его proxy и нажимаем Добавить
само название не принципиально, но оно должно быть уникальным

Далее по параметрам:
Node - URLTest
URLTest nodes - выбираем нужные из выпадающего списка (ранее добавляли через Subscriptions и статичные конфигурации)
Test URL - это страница для тестирования подключения к прокси, я использую эти captive portal:
http://captive.apple.com/hotspot-detect.html
http://www.gstatic.com/generate_204
Но можно использовать любой captive portal
можно использовать настройки по умолчанию:
Test interval - 180 сек - каждая нода через заданный промежуток (180 сек) будет протестирована на доступность и величину задержки
Test tolerance - 50 мс - разница в задержке прокси при которой будет произведено переключение, например у активного прокси 327 мс, если у другого задержка будет ниже 277 мс - sing-box сделает активным его
Idle timeout - 1800 сек - если не было сетевой активности на прокси в течении заданного промежутка, проверка нод приостановится (для снижения нагрузки) до возобновления активности
Сохраняем - Применяем изменения
Переходим во вкладку Rule Set

Добавляем 1ый ruleset - ipsum:

Тип - Remote - регулярное скачивание списка по ссылке, альтернативно можно использовать Local
Format - Binary File - использование формата srs, также можно использовать json при выборе Source File
Rule set URL - https://github.com/1andrevich/Re-filter-lists/releases/latest/download/ruleset-ip-refilter_ipsum.srs - srs список заблокированных подсетей refilter_ipsum
Outbound - proxy - скачивание списков через выбранный outbound - прокси
Update interval - 1d - для регулярного скачивания списков, по умолчанию 1 день , ставьте по вашему усмотрению
Сохраняем и добавляем 2ой ruleset - domains:

Аналогично:
Тип - Remote - регулярное скачивание списка по ссылке, альтернативно можно использовать Local
Format - Binary File - использование формата srs, также можно использовать json при выборе Source File
Rule set URL - https://github.com/1andrevich/Re-filter-lists/releases/latest/download/ruleset-domain-refilter_domains.srs - srs список заблокированных доменов refilter_domains
Outbound - proxy - скачивание списков через выбранный outbound - прокси
Update interval - 1d - для регулярного скачивания списков, по умолчанию 1 день , ставьте по вашему усмотрению

Сохраняем - Применяем изменения
Переходим к Routing Rules:

Добавляем первое правило - refilter_ipsum (Направление IP адресов из списка в прокси):

IP version - IPv4
Rule set - ipsum - выбираем из выпадающего списка
Outbound - proxy
Сохранить
Добавляем второе правило - refilter_domains (Направление доменов из списка в прокси):


Протокол - (из списка) HTTP, QUIC, TLS
Rule set - domains
Outbound - proxy
Сохранить - Применить изменения
После применения изменений раздельная маршрутизация уже должна работать, но для полноценной работы VoIP трафика (Telegram, WhatsApp, Discord, Viber) нужны дополнительные правила для портов и настройка DNS для избежания утечки DNS


Сперва добавляем правило для UDP портов:


Метка - Calls UDP - может быть любая, не обязательно совпадает с названием правила
Сеть - UDP
Outbound - proxy
Далее переходим во вкладку - Port fields

Порт - 1400 и 8443
Диапазон портов - 50000:65530 596:599 3478:3497 16384:16387 16393:16402 - каждый диапазон через двоеточие, это диапазоны для работы звонков Whatsapp, Viber, Facetime, Telegram и Discord, ранее писал об этом в статье по V2RayA
Сохраняем и создаём ещё одно правило для TCP+UDP портов:


Метка - TCP+UDP Ports
Outbound - proxy
Далее переходим во вкладку - Port fields

Порт - 4244 7985 5222 5223 5242 5243 - Для работы WhatsApp и Viber
Сохраняем - Применяем изменения

Альтернативным способом создания правил является редактирование файла настроек - можно вставить этот набор правил в конец файла, главное проверить совпадение названия outbound, если вы вдруг назвали его не "proxy" или имеете несколько outbound для прокси
/etc/config/homeproxy:
config routing_rule 'refilter_ipsum' option label 'refilter_ipsum' option enabled '1' option mode 'default' option ip_version '4' list rule_set 'ipsum' option outbound 'proxy' config routing_rule 'refilter_domains' option label 'refilter_domains' option enabled '1' option mode 'default' list protocol 'http' list protocol 'quic' list protocol 'tls' list rule_set 'domains' option outbound 'proxy' config routing_rule 'udp' option label 'Calls UDP' option enabled '1' option mode 'default' option network 'udp' option outbound 'proxy' list port '1400' list port '8443' list port_range '50000:65530' list port_range '596:599' list port_range '3478:3497' list port_range '16384:16387' list port_range '16393:16402' config routing_rule 'tcp_udp' option label 'TCP+UDP Ports' option enabled '1' option mode 'default' option outbound 'proxy' list port '4244' list port '7985' list port '5222' list port '5223' list port '5242' list port '5243'
Теперь к настройке DNS, для начала в версии Homeproxy для 23.05:
Во вкладке DNS Rules уже присутствует правило по умолчанию отправляющее все запросы через DNS прописанный в настройках интерфейсов роутера

Для отправки DNS запросов иными способами сначала необходимо добавить DNS серверы во вкладке DNS-серверы


Для примера возьмём Adguard DNS:
Адрес - https://dns.adguard.com/dns-query
Address resolver - Default DNS - т.к. доменное имя сервера для DNS-over-HTTPS нужно резолвить здесь можно выбрать через существующий DNS сервер это будет сделано
Address strategy - Prefer IPv4 - отдавать предпочтение результатам IPv4
Resolve strategy - Prefer IPv4
Outbound - proxy - осуществлять запросы через выбранный outbound
Сохранить и Применить изменения
Далее переходим к DNS Rules:

и добавляем dns_out_proxy

Rule set - domains
Сервер - dns_proxy
Сохранить и Применить изменения
На этом для OpenWRT 23.05 настройка окончена
3. Отличия в настройке DNS на OpenWRT 24.10
DNS Rules в этой версии по умолчанию пустой:

Добавим сначала DNS сервер с названием dns_proxy во вкладке DNS-серверы:

Настройки для Adguard DNS будут выглядеть несколько иначе чем для 23.05:

Тип - HTTPS - Также доступны варианты UDP, TCP, QUIC, HTTP/3, TLS
Адрес - dns.adguard.com - не полный, как в 23.05, а только домен
Порт - авто
Path -/dns-query
Address resolver - Default DNS
Address strategy - Prefer IPv4
Outbound - proxy
Теперь добавим правило default во вкладке DNS Rules:


Действие - Route
Сервер - Default DNS
Сохранить
Добавим правило dns_out_proxy для DNS через прокси:


Rule set - domains
Действие - Route
Сервер - dns_proxy
Domain strategy - Prefer IPv4
Сохранить и применить изменения

4. Дополнительные настройки Homeproxy
в меню Access Control есть вкладки:
Interface Control - Здесь настраивается входной и выходной интерфейс, по умолчанию остаётся пустым и определяется автоматически

в LAN IP Policy:

Proxy filter mode — имеет опции:
Proxy listed only — проксирует трафик только для IP/MAC из списка.
Proxy all except listed — проксирует трафик для всех, кроме IP/MAC из списка.
Gaming mode IPv4/MAC — не проксирует UDP трафик для выбранных устройств.
Global Proxy IPv4/MAC — проксирует весь трафик для выбранных устройств.
Диапазоны адресов для WAN для проксирования (Proxy IPv4 IP-s) / направления в шлюз по умолчанию (Direct IPv4 IP-s).
В Proxy Domain List и Direct Domain List можно скопировать списки адресов для проксирования (Proxy IPv4 IP‑s) / направления в шлюз по умолчанию (Direct IPv4 IP‑s).
во вкладке Service Status можно проверить статус работы и логи, а также подключение к Baidu и Google
В версии для 24.10 и выше есть возможность настройки логгирования, в версии 23.05 только warning

Также в Homeproxy есть возможность использования sing-box в качестве сервера на вкладке Server Settings:


Можно выбрать протокол, адрес и порт на котором сервер будет слушать подключения, в зависимости от протокола - логин и пароль для подключения, в качестве примера смешанный HTTP/SOCKS5 прокси на 127.0.0.1 и порту 20170


Если вы выбрали Tun TCP/UDP необходимо перейти в раздел Сеть - Межсетевой Экран -

Добавить новый интерфейс.

Выбрать Протокол неуправляемый, из списка устройств singtun0, присвоить название, например Proxy и Создать интерфейс.
После чего перейти в настройки интерфейса singtun0 (Изменить)

Настройки межсетевого экрана — wan (или нужный вам вариант).
На этом всё.
