KeenProxy — выборочная маршрутизация на Keenetic и первые сборки для OpenWrt
- воскресенье, 15 ноября 2026 г. в 00:00:18

Телевизор, рабочий ноутбук, КВН, разные маршруты, черные/белые списки. А потом еще сидишь и жонглируешь соединениями, чтобы условный клод не улетел в бан, а жена могла смотреть видео в гостиной с ютуба.
Раньше я пользовался Kvas на Keenetic. Для одного соединения и белого списка его хватало. В моей конфигурации я не мог развести трафик по нескольким соединениям и задать разные правила для ноутбука и телевизора. Да и заходить в консоль каждый раз, когда нужно поправить список, быстро надоело. Kvas на GitHub
В какой‑то момент мы решили сделать своё решение. Делали для себя, а в итоге получилось достаточно универсально. Так появился KeenProxy. В веб‑панели я могу задать разные маршруты для ноутбука и телевизора, а если что‑то пошло не туда — посмотреть в журнале, какое правило сработало. Сейчас сам пользуюсь им на моем Keenetic и, наконец, я действительно понимаю как это работает.
В основе KeenProxy — встроенный sing‑box. Исходники открыты под GPL-3.0-only. Если мы даём вам инструмент, который управляет маршрутами вашей домашней сети, вы как минимум имеете право знать, как он работает. Исходный код KeenProxy
Назначение проекта. KeenProxy предназначен для управления трафиком и маршрутами в сетях, которые вы администрируете. Проект не предназначен для обхода блокировок и ограничений доступа. Используйте его в соответствии с применимым законодательством и правилами вашей сети.

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

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

Журнал демо отфильтрован по прямому маршруту. В каждой строке видно устройство, назначение, выбранное соединение и метку 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.