Re:HomeProxy на OpenWrt: обход блокировок и гибкая маршрутизация
Re:HomeProxy на OpenWrt: обход блокировок и гибкая маршрутизация
Пошаговая инструкция по установке Re:HomeProxy на роутер с OpenWrt — от чистой системы до работающего обхода блокировок. Рассчитана на пользователя, который умеет подключаться к роутеру по SSH.
Проверено на Xiaomi Redmi Router AX6000 (aarch64_cortex-a53) с OpenWrt 24.10.0.
Как читать команды: каждая команда приведена отдельной строкой и выполняется самостоятельно — копируйте и вставляйте их по одной, дожидаясь завершения предыдущей. Ничего править перед запуском не нужно, кроме мест, где это указано явно.
Что мы построим
Одна панель в LuCI, которая управляет всем: туннелем, списками заблокированных ресурсов и обходом DPI.
| Компонент | Назначение |
|---|---|
| Re:HomeProxy | Веб-панель в LuCI. Управляет узлами, маршрутизацией и обходом DPI. |
| sing-box-extended | Ядро. Поддерживает VLESS (REALITY, XHTTP), Hysteria2, Trojan, Shadowsocks, AnyTLS, WireGuard, AmneziaWG, Mieru, NaïveProxy и др. |
| Списки маршрутизации | Готовые наборы доменов и IP (Re-filter, Russia Inside, отдельные сервисы). Обновляются автоматически раз в сутки. |
| Zapret 2 | Обход DPI без туннеля — для сервисов, которые не заблокированы, а замедлены (например, видеохостинги). Трафик идёт напрямую, не нагружая VPS. |
Принцип простой: списки решают, какой трафик особенный, а узел или Zapret — через что его пустить. Всё, что не попало ни в один список, идёт напрямую.
Что понадобится
| Требование | Описание |
|---|---|
| Роутер | OpenWrt / ImmortalWrt 24.10 и новее (opkg) либо 25.12 и новее (apk)
|
| Доступ | Веб-интерфейс LuCI и SSH к роутеру |
| Узел | Ссылка на ваш сервер: vless://, hysteria2://, naive+https://, ss:// и т.п.
|
Установка
Шаг 1. Установить панель
Подключитесь к роутеру по SSH и выполните команды по очереди.
Обновить список пакетов:
opkg update
Установить зависимости:
opkg install ucode-mod-digest kmod-nft-tproxy kmod-tun
Перейти в каталог для загрузок:
cd /tmp
Скачать панель:
wget -O rhp.ipk https://github.com/1andrevich/homeproxy-hiddify/releases/download/2026.06.29-r1/luci-app-re-homeproxy_2026.06.29-r1_all.ipk
Установить:
opkg install /tmp/rhp.ipk
Скачать русский язык интерфейса:
wget -O rhp-ru.ipk https://github.com/1andrevich/homeproxy-hiddify/releases/download/2026.06.29-r1/luci-i18n-homeproxy-ru_2026.06.29-r1_all.ipk
Установить язык:
opkg install /tmp/rhp-ru.ipk
Актуальную версию пакета смотрите на странице релизов — в командах указана 2026.06.29-r1. Для OpenWrt 25.12 и новее замените в ссылках .ipk на .apk, а команду установки — на apk add --allow-untrusted /tmp/rhp.apk.
Шаг 2. Установить ядро
Ядро sing-box-extended ставится вручную — сборка из репозитория OpenWrt собрана без поддержки NaïveProxy, поэтому берём универсальную musl-сборку, где есть все протоколы.
Скачать ядро:
wget -O sb.tar.gz https://github.com/shtorm-7/sing-box-extended/releases/download/v1.13.18-extended-2.6.5/sing-box-1.13.18-extended-2.6.5-linux-arm64-musl.tar.gz
Распаковать:
tar xzf sb.tar.gz
Установить:
cp /tmp/sing-box-1.13.18-extended-2.6.5-linux-arm64-musl/sing-box /usr/bin/sing-box
Сделать исполняемым:
chmod +x /usr/bin/sing-box
Убрать временные файлы:
rm -rf /tmp/sing-box-1.13.18-extended-2.6.5-linux-arm64-musl /tmp/sb.tar.gz
Внимание — архитектура и путь. В ссылке указана архитектура arm64; если у вас другая, возьмите подходящий файл linux-<арх>-musl на странице релизов ядра. Копировать ядро нужно строго в /usr/bin/sing-box — по другому пути служба его не запустит.
Шаг 3. Запустить службу
Включить автозапуск:
/etc/init.d/homeproxy enable
Запустить:
/etc/init.d/homeproxy start
Дальше вся настройка — в веб-интерфейсе: Сервисы → Re:HomeProxy. Если пункт меню не появился, обновите страницу с очисткой кэша (Ctrl+F5).
Шаг 4. Добавить узел
Откройте вкладку Настройки узлов. Список пока пуст.

Нажмите Импортировать ссылку-конфигурацию для подключения и вставьте ссылку на ваш сервер.

После нажатия Импорт узел появится в списке.

Нажмите Применить.
Шаг 5. Выбрать основной узел
Перейдите на вкладку Настройки клиента → Настройки маршрутизации и выберите добавленный сервер в поле Основной узел.

Остальные поля менять не нужно — значения по умолчанию подходят для большинства случаев. Нажмите Применить.
Проверка: в заголовке страницы надпись должна смениться на зелёную — Re:HomeProxy (sing-box ...) РАБОТАЕТ. Если она красная и написано NOT RUNNING — вернитесь к шагу 2, ядро не установлено или лежит не по тому пути.
Шаг 6. Установить Zapret
Zapret нужен для сервисов, которые замедляют, а не блокируют — их не обязательно гнать через сервер.
Откройте Настройки узлов → Zapret и нажмите Установить. Панель скачает и установит всё сама.
Шаг 7. Настроить правила
Это главный шаг: здесь вы указываете, что и через что пускать. Откройте Настройки клиента → Правила прокси и кнопкой Добавить создайте нужные строки.

В каждой строке заполняются три поля: Включить (галочка), Отправитель (какой список) и Узел (через что пускать).
Рекомендуемый набор для начала:
| Отправитель | Узел | Зачем |
|---|---|---|
| Re-filter | Как основной узел | Всё, что заблокировано в России (60000+ доменов и 25000+ IP) |
| Telegram | Как основной узел | Мессенджер подключается к серверам по IP, поэтому нужен именно список сервиса |
| YouTube | Zapret | Видео идёт напрямую и не расходует трафик сервера |
| Discord | Zapret | То же самое; для голосовой связи надёжнее выбрать основной узел |
Нажмите Применить. Списки скачаются автоматически и дальше будут обновляться раз в сутки — вручную их вести не нужно.
Шаг 8. Добавить cloudflare-ech.com
Откройте Настройки клиента → Контроль доступа → Список доменов для проксирования и добавьте одну строку:
cloudflare-ech.com

Внимание — без этой строки часть сайтов не откроется в браузере. Современные браузеры скрывают имя сайта в защищённом соединении (технология ECH), и панель не может определить, что за сайт запрошен. В результате он идёт напрямую и блокируется. Эта строка возвращает такие соединения в туннель. Подробности — в разделе «Почему нужен cloudflare-ech.com» ниже.
Нажмите Применить.
Готово. Обход работает для всех устройств в сети — телефонов, телевизоров, компьютеров. Ничего настраивать на них не нужно.
Дополнения и тонкости
Этот раздел не нужен для базовой установки — читайте по мере необходимости.
Как применить изменения списка доменов
Внимание: если вы изменили только список доменов и ничего больше, кнопка Применить может сообщить, что изменений нет, — и ядро продолжит работать со старым списком. Так устроено поле списка: оно сохраняет файл отдельно от остальных настроек.
Чтобы изменения вступили в силу, откройте вкладку Диагностика и нажмите Перезапустить службу. Либо меняйте список вместе с любой другой настройкой — тогда обычная кнопка Применить сработает как обычно.
Почему нужен cloudflare-ech.com
Сайты, работающие через Cloudflare, публикуют специальную DNS-запись, после которой браузер включает ECH (Encrypted Client Hello) и шифрует имя запрашиваемого сайта внутри защищённого соединения. Панель определяет сайт именно по этому имени, поэтому распознать его не может, не находит в списках и отправляет соединение напрямую — где его и обрывает провайдер.
Характерный признак: сайт есть в списке, но в браузере выдаёт ошибку защищённого соединения (в Firefox — PR_END_OF_FILE_ERROR), при этом проверка через curl с того же компьютера проходит успешно. Так происходит потому, что curl технологию ECH не использует и передаёт имя сайта открыто.
При включённом ECH скрывается только внутреннее имя, а внешнее остаётся видимым, и у всех сайтов за Cloudflare оно одинаковое — cloudflare-ech.com. Добавив его в список, вы возвращаете такие соединения в туннель. Решение работает для любого устройства в сети независимо от браузера и его настроек.
Проверить, использует ли конкретный сайт ECH (подставьте нужный адрес вместо example.com):
curl -s 'https://cloudflare-dns.com/dns-query?name=example.com&type=HTTPS' -H 'accept: application/dns-json'
Если в ответе есть ech=, имя сайта будет скрыто.
Почему списки сервисов важнее ручных доменов
Многие приложения — мессенджеры, игры, часть мобильных программ — подключаются к своим серверам по IP-адресам, без имени сайта. Правила по доменам на такие соединения не действуют в принципе: панели нечего сопоставлять со списком.
Готовые списки сервисов содержат не только домены, но и IP-подсети, поэтому закрывают оба случая. Показательный пример — Telegram: помимо доменов (t.me, telegra.ph, telesco.pe) список включает подсети серверов (149.154.160.0/20, 91.108.4.0/22, 91.108.56.0/22 и другие). Без них веб-версия откроется, а сам мессенджер подключиться не сможет.
Поэтому для мессенджеров и приложений всегда добавляйте готовое правило сервиса в «Правила прокси», а не отдельные домены в список.
Zapret не работает сам по себе
Внимание: установка Zapret ничего не обходит сама по себе. Он обрабатывает только тот трафик, который вы явно на него направили правилом в Правилах прокси. Пока ни одно правило не указывает на Zapret, он просто запущен и бездействует.
Проверить, что трафик действительно пошёл в обработку:
nft list chain inet fw4 homeproxy_zapret_queue
Ненулевые счётчики пакетов в строках правил означают, что механизм работает.
Стратегия обхода по умолчанию рассчитана на типовые ограничения российских провайдеров. Если сервис всё равно не открывается — на вкладке Zapret есть тестер стратегий: он проверяет разные варианты и показывает, какие работают у вашего провайдера.
Диагностика
Вкладка Диагностика показывает состояние ядра, версию, запущенные службы, занятые порты и позволяет проверить доступность контрольных сайтов.
Из командной строки — состояние службы:
/etc/init.d/homeproxy status
Журнал событий:
tail -30 /var/run/homeproxy/homeproxy.log
Журнал ядра:
tail -30 /var/run/homeproxy/hiddify-c.log
Уточнение: множество строк connection refused и i/o timeout на портах 6881, 51413 и произвольных высоких портах — это обычно торренты: клиент перебирает источники, часть которых недоступна. К работе туннеля отношения не имеет.
Как узнать, каким путём ушло соединение
Временно переключите Уровень журнала на info, откройте сайт с любого устройства и посмотрите записи вида:
outbound/vless[main-out]: outbound connection to 172.67.182.196:443
Обозначение в скобках показывает путь: main-out — через ваш сервер, direct-out — напрямую, zapret-out — с обходом DPI. После проверки верните уровень warn, иначе журнал быстро разрастается.
Проверка с устройства в сети
Проверять нужно с обычного компьютера или телефона, а не с самого роутера — его собственный трафик обрабатывается иначе.
Какой адрес видит внешний мир:
curl -s https://api.ipify.org
Доступность сайта (подставьте нужный адрес):
curl -s -o /dev/null -m 15 -w 'HTTP %{http_code} за %{time_total}s\n' https://example.com
Типовые неполадки
| Симптом | Причина и решение |
|---|---|
| В заголовке панели красное NOT RUNNING | Ядро не установлено или лежит не по пути /usr/bin/sing-box — см. Шаг 2
|
| Служба запущена, но ничего не проксируется | Не выбран Основной узел — см. Шаг 5 |
Сайт из списка не открывается в браузере, хотя curl работает
|
Не добавлен cloudflare-ech.com — см. Шаг 8
|
| Изменил список доменов, ничего не поменялось | Диагностика → Перезапустить службу |
| Мессенджер не подключается, хотя его сайт открывается | Нужно готовое правило сервиса с IP-подсетями, а не домены |
| Zapret включён, но сервис по-прежнему замедлен | Нет правила, направляющего трафик на Zapret |
| NaïveProxy отсутствует в списке типов узлов | Ядро установлено из репозитория OpenWrt. Нужна musl-сборка — см. Шаг 2 |
| Панель открывается по несколько секунд | Ядро сжато упаковщиком UPX — замените на обычный файл |
| Страницы «висят» по 30 секунд, потом открываются | Браузер уходит в QUIC мимо перехвата. Заблокируйте UDP/443 действием REJECT (не DROP) |
Удаление
Остановить службу:
/etc/init.d/homeproxy stop
Убрать из автозапуска:
/etc/init.d/homeproxy disable
Удалить панель:
opkg remove luci-app-re-homeproxy luci-i18n-homeproxy-ru
Удалить ядро:
rm -f /usr/bin/sing-box
Удалить настройки и списки:
rm -rf /etc/homeproxy /etc/config/homeproxy
Правила межсетевого экрана снимаются автоматически при остановке службы. Проброс портов и остальные настройки роутера не затрагиваются.