HydraRoute Neo — демон для раздельной маршрутизации трафика по доменам и CIDR на роутерах Keenetic.
Перехватывает DNS-ответы dnsmasq через AF_PACKET, добавляет полученные IP в ipset и маркирует трафик в iptables/mangle CONNMARK для перенаправления через нужный туннель или интерфейс. Дополнительно — параллельный L7-канал: TLS SNI и HTTP Host из исходящих соединений через NFQUEUE (закрывает слепые зоны DoH/DoT, hardcoded-IP, легаси-HTTP). Написан на C, единый статически скомпилированный бинарь без внешних зависимостей кроме libc и Linux API.
.datXtables-addons для NetfilterВыполните команду в терминале роутера:
opkg update && opkg install curl && curl -Ls "https://git.zerrolabs.org/Ground-Zerro/release/pages/keenetic/install-neo.sh" | sh
Веб-интерфейс (HRweb) также будет установлен и доступен по ссылке
http://<IP роутера>:2000
Службы запустятся автоматически
curl -Ls "https://git.zerrolabs.org/Ground-Zerro/release/pages/keenetic/install-feed.sh" | sh
opkg install hrneo
Обновление:
opkg update && opkg upgrade
Файлы
domain.confиip.listсохраняются при обновлении (conffiles)
| Файл | Назначение |
|---|---|
/opt/etc/HydraRoute/hrneo.conf |
Основная конфигурация демона |
/opt/etc/HydraRoute/domain.conf |
Список доменов и политик/интерфейсов |
/opt/etc/HydraRoute/ip.list |
Статические CIDR-диапазоны |
Всего 27 параметров конфигурации, сгруппированных по назначению:
autoStart, watchlistPath, clearIPSetCIDR, CIDRfileIpsetEnableTimeout, IpsetTimeout, IpsetMaxElemlog, logfileDirectRouteEnabled, InterfaceFwMarkStart, InterfaceTableStartConntrackFlushGlobalRouting, PolicyOrderGeoIPFile, GeoSiteFile (оба повторяемые)l7CaptureEnabled, l7QueueNum, l7EnableTLS, l7EnableHTTP, l7WanInterface, l7ConnbytesMax, l7TcpReasmEnabled, l7TcpReasmMaxEntries, l7TcpReasmTtlSecПолное описание каждого параметра, дефолтов, поведения и взаимодействия с роутером (RCI, PolicyOrder, ConntrackFlush и т.д.) — см. docs/HRNEO.CONF.md.
Любой параметр доступен и как CLI-флаг (--имя value); приоритет: CLI > конфиг-файл > встроенные дефолты. Дефолтный hrneo.conf со всеми ключами генерируется командой hrneo --genconfig /opt/etc/HydraRoute/.
Формат строки:
домен1,домен2,geosite:tag/ПолитикаИлиИнтерфейс
geosite:TAG — загрузить домены из GeoSite .dat файла для указанного тега/ — если совпадает с именем системного интерфейса: DirectRoute, иначе: политика Keenetic# или ## — комментарииПримеры:
## Через политику Keenetic
youtube.com,googlevideo.com/HydraRoute
## Через конкретный интерфейс
openai.com,chatgpt.com/nwg0
## GeoSite категория
geosite:google/HydraRoute
## GeoSite + обычные домены в одной строке
geosite:google,youtube.com,youtu.be/HydraRoute
## Несколько GeoSite категорий
geosite:google,geosite:netflix/HydraRoute
GeoSite-домены поддерживают типы Domain (домен + поддомены) и Full (только точное имя)
Типы Plain (keyword) и Regex не поддерживаются
Записи изdomain.confимеют приоритет над GeoSite
Формат:
##Описание блока
/ПолитикаИлиИнтерфейс
10.0.0.0/8
192.168.1.1/32
2606:4700::/32
##Отключённый блок
#/ПолитикаИлиИнтерфейс
45.67.123.0/24
##GeoIP директива
/HydraRoute
geoip:ru
/ПолитикаИлиИнтерфейс — активный блок#/ПолитикаИлиИнтерфейс — отключённый блок (содержимое игнорируется)## — комментарийgeoip:ru — загрузить CIDR для страны из GeoIP-файлов (например geoip:ru, geoip:us)/32 и /128 добавляются как хосты, остальное — как подсетиIpsetEnableTimeoutОдин блок для нескольких политик и отключение отдельных подблоков:
##Google CDN
/HydraRoute
10.203.14.12/28
##YouTube (временно отключено)
#/HydraRoute
172.22.48.77/26
Избегайте перекрывающихся подсетей в разных политиках
Еслиgeoip:TAGсодержит записей большеIpsetMaxElem, тег автоматически переносится в раздел#/Too-big-geoip-tag
Параллельный DNS-каналу источник имён хостов. Активируется l7CaptureEnabled=true (по умолчанию). Закрывает слепые зоны DNS-only схемы:
Известные ограничения:
Полный технический разбор — в docs/HRNEO.CONF.md и docs/CORE.md.
neo restartdomain.conf она есть — пересоздаётсяneo stop) трафик идёт напрямую без туннелейПриоритет маршрутизации задаётся в интерфейсе Keenetic: Приоритеты подключений → Политики доступа
В одной политике можно указать несколько VPN-подключений для многопутевой маршрутизации
Отдельный компонент для визуального управления HydraRoute Neo без работы в терминале.
Установка:
opkg install hrweb
После запуска интерфейс доступен по адресу:
http://<IP роутера>:2000
Авторизация — через логин и пароль роутера Keenetic
Интерфейс разделён на пять разделов (боковое меню) и общую панель с показателями CPU/RAM роутера, версиями hrneo/hrweb и моделью устройства.
Dashboard — маршрутизация:
Proxy: три подраздела на вкладках:
vless://, vmess://, trojan://, ss://, socks://, http://) и URL подписок; редактор JSON-конфигов с подсветкой; при нескольких серверах автоматически создаётся балансировщикHrNeo — управление демоном:
hrneo.conf через формы с подсказкамиInfo — справка:
Settings — глобальные настройки:
Также доступны сторонние решения:
neo start # Запуск HydraRoute Neo
neo stop # Остановка и очистка iptables/ip rule + NFQUEUE-правила L7
neo restart # Перезапуск с пересозданием политик
neo status # Проверка состояния службы
CLI hrneo (все параметры конфига доступны как --flag value):
hrneo --version # вывести версию
hrneo --help # справка по флагам
hrneo --genconfig [path] # сгенерировать дефолтный hrneo.conf
hrneo --config <path> # указать альтернативный путь к hrneo.conf
Приоритет источников значений: CLI флаги > конфиг-файл > встроенные дефолты.
Полное: включая логи, конфиги, зависимые пакеты, откат всех изменений системы (рекомендуется):
curl -Ls "https://git.zerrolabs.org/Ground-Zerro/release/pages/keenetic/hr-uninstall.sh" | sh
Будут удалены:
- пакеты:
hrneo,hrweb,ipset,iptables,jq,hydraroute,adguardhome-go,node,node-npm,xray,xray-core- папки:
/opt/etc/HydraRoute,/opt/etc/AdGuardHome,/opt/etc/xray/
Стандартное:
opkg remove hrneo
HydraRoute Neo распространяется на условиях GNU Affero General Public License v3.0 (AGPL-3.0-only) — см. LICENSE.
Программа предоставляется «как есть», без каких-либо гарантий. Автор не несёт ответственности за последствия использования.
Поддержать проект: Boosty