HydraRoute Neo — демон для раздельной маршрутизации трафика по доменам и CIDR на роутерах Keenetic. Перехватывает DNS-ответы через NFLOG, добавляет IP-адреса в ipset и маркирует трафик в iptables для перенаправления через нужный туннель или интерфейс. Написан на Go, без CGO, единый бинарник.
.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-диапазоны |
Основные:
| Параметр | По умолчанию | Описание |
|---|---|---|
autoStart |
true |
false — немедленное завершение без изменения iptables/ipset |
watchlistPath |
/opt/etc/HydraRoute/domain.conf |
Путь к файлу доменов |
clearIPSet |
true |
Очищать ipset при запуске; false — сохранять накопленные IP |
CIDR:
| Параметр | По умолчанию | Описание |
|---|---|---|
CIDR |
true |
Включить загрузку статических IP/подсетей из CIDRfile |
CIDRfile |
/opt/etc/HydraRoute/ip.list |
Путь к файлу CIDR |
IPSet:
| Параметр | По умолчанию | Описание |
|---|---|---|
IpsetEnableTimeout |
true |
Автоматическое удаление записей по таймауту |
IpsetTimeout |
21600 |
Таймаут в секундах (21600 = 6 часов, 86400 = 24 часа) |
При повторном добавлении существующего IP таймаут не обновляется.
Логирование:
| Параметр | По умолчанию | Описание |
|---|---|---|
log |
off |
Режим: console — stdout, file — файл, остальное — отключено |
logfile |
/opt/var/log/LOGhrneo.log |
Путь к файлу логов (только при log=file) |
Включать логирование без целей отладки не рекомендуется.
Уровни лога: [DEBUG] [INFO] [MATCH] [PROCESSED] [FILTERED] [WARN] [ERROR]
DirectRoute (прямая маршрутизация на интерфейс):
| Параметр | По умолчанию | Описание |
|---|---|---|
DirectRouteEnabled |
true |
Включить прямую маршрутизацию на сетевые интерфейсы |
InterfaceFwMarkStart |
12289 |
Начальный fwmark (0x3001) для интерфейсов |
InterfaceTableStart |
301 |
Начальный номер таблицы маршрутизации |
Если в
domain.confцель совпадает с именем системного интерфейса — настраиваетсяip rule + ip route, иначе — политика Keenetic. Если интерфейс DOWN при старте — создаётся blackhole-маршрут, который обновляется по SIGUSR1.
Conntrack:
| Параметр | По умолчанию | Описание |
|---|---|---|
ConntrackFlush |
true |
Сбрасывать conntrack-записи при первом добавлении IP в ipset |
Обеспечивает корректную маршрутизацию без разрыва уже установленных соединений вручную.
Глобальная маршрутизация:
| Параметр | По умолчанию | Описание |
|---|---|---|
GlobalRouting |
false |
false — уважать политики роутера (NoVPN, Policy0 и т.д.); true — перезаписывать все политики |
Порядок политик:
| Параметр | По умолчанию | Описание |
|---|---|---|
PolicyOrder |
HydraRoute |
Порядок добавления правил iptables через запятую; определяет приоритет при совпадении IP в нескольких ipset |
GeoIP:
GeoIPFile=/opt/etc/HydraRoute/geofile/geoip.dat
GeoIPFile=/opt/etc/HydraRoute/geofile/geoip_RU.dat
Путь к базе GeoIP в формате v2ray/xray .dat. Параметр повторяем. Используется совместно с директивой geoip:CC в ip.list.
GeoSite:
GeoSiteFile=/opt/etc/HydraRoute/geofile/geosite.dat
GeoSiteFile=/opt/etc/HydraRoute/geofile/geosite_RU.dat
Путь к базе GeoSite в формате v2ray/xray .dat. Параметр повторяем. Используется совместно с директивой geosite:TAG в domain.conf.
Пример конфигурации по умолчанию:
autoStart=true
watchlistPath=/opt/etc/HydraRoute/domain.conf
clearIPSet=true
IpsetEnableTimeout=true
IpsetTimeout=21600
CIDR=true
CIDRfile=/opt/etc/HydraRoute/ip.list
DirectRouteEnabled=true
InterfaceFwMarkStart=12289
InterfaceTableStart=301
GlobalRouting=false
ConntrackFlush=true
log=off
logfile=/opt/var/log/LOGhrneo.log
PolicyOrder=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
Популярные теги GeoSite: GOOGLE, NETFLIX, TELEGRAM, RU, CN.
Формат:
##Описание блока
/ПолитикаИлиИнтерфейс
10.0.0.0/8
192.168.1.1/32
2606:4700::/32
##Отключённый блок
#/ПолитикаИлиИнтерфейс
45.67.123.0/24
##GeoIP директива
/HydraRoute
geoip:RU
/ПолитикаИлиИнтерфейс — активный блок#/ПолитикаИлиИнтерфейс — отключённый блок (содержимое игнорируется)## — комментарийgeoip:CC — загрузить CIDR для страны из GeoIP-файлов (например geoip:RU, geoip:CN)/32 и /128 добавляются как хосты, остальное — как подсетиIpsetEnableTimeoutОдин блок для нескольких политик и отключение отдельных подблоков:
##Google CDN
/HydraRoute
10.203.14.12/28
##YouTube (временно отключено)
#/HydraRoute
172.22.48.77/26
Избегайте перекрывающихся подсетей в разных политиках
neo restartdomain.conf она есть — пересоздаётсяneo stop) трафик идёт напрямую без туннелейПриоритет маршрутизации задаётся в интерфейсе Keenetic: Приоритеты подключений → Политики доступа
В одной политике можно указать несколько VPN-подключений для многопутевой маршрутизации
Отдельный компонент для визуального управления HydraRoute Neo без работы в терминале.
Установка:
opkg install hrweb
После запуска интерфейс доступен по адресу:
http://<IP роутера>:2000
Авторизация — через логин и пароль роутера Keenetic
Dashboard — управление маршрутизацией:
Proxy (xRay) — управление прокси:
vless://, vmess://, trojan://, ss://) и URL подписокDANGER ZONE (HrNeo) — настройка демона:
hrneo.conf через UIАвтообновление GeoIP/GeoSite: В разделе настроек HRweb можно настроить автоматическое скачивание и обновление баз GeoIP и GeoSite по расписанию. После загрузки hrneo перезапускается автоматически. Поддерживаемые базы:
geoip.dat / geosite.dat — Loyalsoldier/v2ray-rules-datgeoip_RU.dat / geosite_RU.dat — runetfreedom/russia-v2ray-rules-datТакже доступно стороннее решение: web4static
neo start # Запуск HydraRoute Neo
neo stop # Остановка и очистка iptables/ip rule
neo restart # Перезапуск с пересозданием политик
neo status # Проверка состояния службы
Для работы IPv6 через VPN необходимо одновременное выполнение условий:
Если IPv6 не используется — отключите его в настройках подключения провайдера и VPN
Полное: включая логи, конфиги, зависимые пакеты, откат всех изменений системы (рекомендуется):
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 распространяется бесплатно, «как есть». Автор не несёт ответственности за последствия использования.
Поддержать проект: Boosty