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

Во вкладке Service Status можно проверить состояние подключения
Во вкладке Service Status можно проверить состояние подключения

Сперва добавляем правило для 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 (или нужный вам вариант).

На этом всё.