PunchArgentina lose 2-1 to Uruguay in first post-Messi matchThe Jerusalem PostHaniyeh's ex-bodyguard convicted of knife attack in UK, wanted in Germany over Hamas terror plotDaily MaverickUS to resume flights after air traffic network failure sparks chaos한겨레인도서 버스와 컨테이너 트럭 충돌…최소 24명 숨져Bollywood HungamaVarun Dhawan to star in Yash Raj Films' first-ever horror film, set to release on March 31, 2028Inquirer EntertainmentOgie Alcasid musical ‘Kailangan Kita’ set to hold auditionsZDF heuteAktuelle Pressemitteilungen des ZDFCNN TürkSON DAKİKA... AFAD duyurdu: Marmara Denizi'nde depremCNN بالعربيةالقضاء الإماراتي يصدر حكمه بحق 10 متهمين بعد فيديو مشاجرة جماعية بفندقEl ComercioLa Kábala: a cuánto está el pozo para el sábado 14 de noviembre de 2026CBS SportsCollege football teams scrambling to find alternate travel plans after FAA lifts ground-stop orderDaily MailWhite House declares 'national emergency' over hours-long FAA ground stop: 'Nothing is certain right now'
The Daily Newsstand · Free, Always
Saturday, November 14, 2026

KeenProxy — выборочная маршрутизация на Keenetic и первые сборки для OpenWrt

Translate

Телевизор, рабочий ноутбук, КВН, разные маршруты, черные/белые списки. А потом еще сидишь и жонглируешь соединениями, чтобы условный клод не улетел в бан, а жена могла смотреть видео в гостиной с ютуба.

Раньше я пользовался Kvas на Keenetic. Для одного соединения и белого списка его хватало. В моей конфигурации я не мог развести трафик по нескольким соединениям и задать разные правила для ноутбука и телевизора. Да и заходить в консоль каждый раз, когда нужно поправить список, быстро надоело. Kvas на GitHub

В какой‑то момент мы решили сделать своё решение. Делали для себя, а в итоге получилось достаточно универсально. Так появился KeenProxy. В веб‑панели я могу задать разные маршруты для ноутбука и телевизора, а если что‑то пошло не туда — посмотреть в журнале, какое правило сработало. Сейчас сам пользуюсь им на моем Keenetic и, наконец, я действительно понимаю как это работает.

В основе KeenProxy — встроенный sing‑box. Исходники открыты под GPL-3.0-only. Если мы даём вам инструмент, который управляет маршрутами вашей домашней сети, вы как минимум имеете право знать, как он работает. Исходный код KeenProxy

Назначение проекта. KeenProxy предназначен для управления трафиком и маршрутами в сетях, которые вы администрируете. Проект не предназначен для обхода блокировок и ограничений доступа. Используйте его в соответствии с применимым законодательством и правилами вашей сети.

Обзор KeenProxy. На скриншотах в статье — браузерное демо с синтетическими данными.

Обзор KeenProxy. На скриншотах в статье — браузерное демо с синтетическими данными.

Как выглядит настройка

Возьмём пример с рабочим ноутбуком. В панели добавляем профиль WireGuard, собираем домены и подсети внутренних сервисов в группу и назначаем этой группе нужное соединение. Для ноутбука включаем раздельную маршрутизацию. Тогда трафик к этим сервисам пойдёт через WireGuard, а остальной — напрямую, если для него нет других правил.

Политику можно задать для всей подсети и переопределить для конкретного устройства. Группы назначений поддерживают домены, IP‑адреса, подсети и страны по GeoIP. Для каждой группы можно выбрать соединение, прямой маршрут или блокировку. Есть и отдельные настройки для DNS и переключения на резервное соединение. Руководство по маршрутизации

Политики подсетей и отдельных устройств в разделе «Клиенты»

Политики подсетей и отдельных устройств в разделе «Клиенты»

В разделе «Клиенты» видно, какие устройства используют политику подсети, а для каких заданы свои настройки.

Соединение, группу и политику устройства можно подготовить в одном черновике. Пока редактируешь настройки, роутер продолжает работать по действующей конфигурации. Когда всё готово, достаточно один раз нажать «Применить».

После этого я бы открыл журнал и посмотрел, какое правило сработало. Это особенно удобно, когда домен попал в несколько групп или у устройства есть исключение из общей политики. В одной строке журнала видно устройство, назначение, выбранный выход и правило. Руководство по веб‑панели

Журнал KeenProxy с устройством, назначением, соединением и сработавшим правилом

Журнал KeenProxy с устройством, назначением, соединением и сработавшим правилом

Журнал демо отфильтрован по прямому маршруту. В каждой строке видно устройство, назначение, выбранное соединение и метку Simulated traffic.

Журнал на моем роутере
С фильтром по устройству и домену

С фильтром по устройству и домену

Что происходит на роутере

Сервис на Go преобразует YAML‑конфигурацию в правила для встроенного sing‑box и правила перехвата для iptables. TCP перенаправляется через REDIRECT. В режиме TPROXY можно перехватывать и UDP, если это поддерживают ядро и модули прошивки.

С доменными правилами есть нюанс. Роутер видит IP назначения, а для правила может понадобиться имя. KeenProxy берёт его из TLS SNI или HTTP Host, если оно доступно. Если читаемого имени нет, он может сопоставить IPv4-адрес с ранее полученным DNS‑ответом. Это запасной вариант. Один адрес CDN может обслуживать несколько доменов, а приложение с собственным зашифрованным DNS может не показать роутеру нужный ответ. Схемы прохождения трафика

Когда прошивка Keenetic или Netcraze пересобирает таблицы файрвола, правила перехвата KeenProxy могут пропасть. В версии 0.8.0 мы добавили опциональный хук NDM netfilter для совместимых роутеров. При событии IPv4-файрвола KeenProxy сразу проверяет переходы в свои цепочки и при необходимости восстанавливает правила. sing‑box в это время продолжает работать. Сторож также проверяет правила каждые 30 секунд по умолчанию. В журнале аудита видно, что запустило восстановление и прошла ли проверка после него. Хук netfilter в KeenProxy 0.8.0

Диагностика и выгрузка для проверки

Если по журналу видно, что маршрут выбран правильно, а соединение всё равно не работает, в разделе «Диагностика» можно отдельно проверить HTTP, HTTPS с проверкой сертификата и передачу данных через выбранное соединение.

Если нужно показать проблему другому человеку, в том же разделе можно скачать ZIP. В нём собраны сохранённые записи трёх журналов — маршрутизации, аудита и системы, — обезличенная сводка действующих настроек и состояние KeenProxy. Секреты и исходный текст сообщений исключаются, а имена и адреса удаляются или заменяются метками. Такой архив можно приложить к описанию проблемы, чтобы вместе разобраться, что произошло.

Что уже работает и что ещё проверяем

Keenetic и Netcraze с Entware — основная платформа. Для неё есть сборки ARM64 и MIPS little‑endian, а в документации описаны установка и обновление. Документация KeenProxy

Поддержка OpenWrt пока экспериментальная. Начиная с версии 0.6.0 релизный пайплайн собирает обычные и облегчённые версии для ARM32, ARM64, MIPS little‑endian и MIPS big‑endian. Для пробного запуска ориентируемся на роутеры с минимум 128 МиБ оперативной памяти и достаточным местом на накопителе. Бинарник и конфигурацию устанавливают вручную. Совместимость перехвата трафика ещё проверяем на физических устройствах, в том числе на прошивках с firewall4. Изменения в релизном пайплайне

MikroTik здесь фигурирует в двух разных сценариях. hAP ac рассматриваем как устройство для испытаний под OpenWrt. Для него подготовили облегчённую MIPS‑сборку, запуск на самом роутере ещё впереди. Штатная RouterOS требует отдельной интеграции. На ARM64-стенде мы проверили sing‑box в контейнере, а сам KeenProxy с RouterOS пока не интегрировали. hAP ac в списке устройств OpenWrt · Контейнеры в RouterOS

Панель можно попробовать в браузере. Если запустите KeenProxy на OpenWrt, расскажите в Issues, на какой модели и прошивке пробовали и какой режим перехвата удалось проверить. Так будет проще собрать картину совместимости по реальным устройствам. Браузерное демо · GitHub Issues

Конечно, документацию мы еще будем дорабатывать, что‑то сами, что‑то с помощью «электронного болвана». Тесты на микротиках тоже еще впереди, я очень надеюсь, что получится завернуть все через containers.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.