HydraRoute Manager
Веб-панель для управления HydraRoute Neo на роутерах Keenetic. Редактируешь списки доменов и IP в браузере — одной кнопкой всё разъезжается по роутерам. Плюс встроенный WireGuard-генератор и мастер обратного туннеля для роутеров без белого IP.
Поддержать проект: Boosty · Ozon СБП · Telegram: @Iot_andrey
Что это и зачем
HydraRoute Neo — плагин для Keenetic, который маршрутизирует трафик по доменам и IP. YouTube и Netflix — через VPN, всё остальное — напрямую. Конфиг хранится в двух файлах на роутере: domain.conf и ip.list.
Редактировать их напрямую неудобно, а если роутеров несколько — приходится делать всё вручную на каждом.
Этот проект решает проблему:
┌──────────────────────────────┐
│ Браузер → http://VPS:8000 │ ← ты работаешь здесь
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ HydraRoute Manager на VPS │ ← этот сервис
└──────────┬──────────┬────────┘
│ SSH │ SSH
┌──────▼──┐ ┌────▼──────┐
│Роутер 1 │ │ Роутер 2 │
└─────────┘ └───────────┘
Что умеет:
- Редактировать группы доменов и IP через браузер
- Включать/выключать группы одним переключателем
- Отправлять конфиг сразу на все роутеры одной кнопкой
- Снимать конфиг с роутера и подставлять в редактор
- Генерировать WireGuard VPN: сервер на VPS + клиенты на роутерах
- Для роутеров без белого IP — мастер настройки обратного SSH-туннеля с автовосстановлением
Требования:
- Роутер Keenetic с установленным HydraRoute Neo и Entware
- VPS с белым IP (сюда устанавливается панель)
- Белый IP на роутере или настроенный обратный тоннель (раздел 3)
1. Быстрая установка
Все команды выполняются на VPS.
Шаг 1 — установка
cd /opt
git clone https://github.com/andrey271192/domen_hydra.git /opt/domen-hydra
cd /opt/domen-hydra
sudo bash server/install.sh
Установщик создаст Python-окружение и зарегистрирует systemd-сервис hydra-manager.
Если видишь
Unable to read current working directory— сначала выполниcd /opt, потом повтори.
Шаг 2 — настройка паролей
nano /opt/domen-hydra/server/.env
Минимум что нужно поменять:
ADMIN_PASSWORD=твой-пароль-для-панели
SSH_USER=root
SSH_PASS=keenetic
Если планируешь туннель (для роутеров без белого IP):
VPS_SSH_HOST=IP_или_домен_VPS
Шаг 3 — запуск
sudo systemctl restart hydra-manager
Шаг 4 — открой панель
http://IP_ТВОЕГО_VPS:8000
Обновление
cd /opt/domen-hydra && git pull && sudo systemctl restart hydra-manager
Удаление
curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/server/uninstall.sh | sudo bash
2. Домены и IP
Вкладка «Конфигурация»
Карточки с группами. У каждой группы:
- Имя — например
youtubeилиru-geoip - Политика —
HydraRoute(через VPN),RU(локально) и т.д. - Список — домены или IP/CIDR, по одному на строку
Нажми «✏️» → редактируй → «💾 Сохранить».
Форматы файлов
domain.conf:
##youtube
youtube.com,youtu.be,googlevideo.com/HydraRoute
##avito
avito.ru,ozon.ru/RU
ip.list:
##geoip:ru
/RU
geoip:ru
Отправка на роутеры
- «📡 Обновить все роутеры» — отправляет конфиг на все роутеры и делает
neo restart - «📡 На роутер» на карточке роутера — только на один конкретный
Импорт с роутера
Вкладка «Роутеры» → «⬇ С роутера» — файлы подтянутся автоматически.
Или вручную на роутере:
cat /opt/etc/HydraRoute/domain.conf
cat /opt/etc/HydraRoute/ip.list
Автообновление на роутере
export SERVER_URL="http://IP_ТВОЕГО_VPS:8000" \
&& curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/install_router.sh | sh
3. Обратный туннель — для роутеров без белого IP
Если провайдер выдаёт серый IP, VPS не может сам достучаться до роутера. Роутер сам открывает зашифрованное SSH-соединение на VPS, и весь обмен идёт через него.
Роутер (серый IP) ──SSH──▶ VPS :20100
│
VPS → hydra-manager ────────────▶│──▶ SSH роутера (порт 22)
Что понадобится
- Entware на роутере (раздел 3.1)
VPS_SSH_HOSTв.envна VPS
3.1 Установка Entware на роутер
С KeeneticOS 4.2+ — через браузер: открой 192.168.1.1/a и следуй инструкциям.
Или через SSH (логин root, пароль keenetic, порт 22):
# MT7628/MT7621 (mipsel):
opkg disk storage:/ https://bin.entware.net/mipselsf-k3.4/installer/mipsel-installer.tar.gz
# MT7622/MT7981/MT7988 (aarch64):
opkg disk storage:/ https://bin.entware.net/aarch64-k3.10/installer/aarch64-installer.tar.gz
Дождись окончания (~2 мин), проверь: opkg update должен отработать без ошибок.
3.2 Настройка
На VPS:
nano /opt/domen-hydra/server/.env
# Добавь:
VPS_SSH_HOST=IP_или_домен_VPS
VPS_SSH_PORT=22
VPS_SSH_USER=root
sudo systemctl restart hydra-manager
В панели: Вкладка «Роутеры» → кнопка «⇄ Тоннель» напротив нужного роутера → скопируй команду → выполни на роутере (не на VPS!).
Как отличить терминал роутера от VPS:
- Роутер:
~ #или(none) ~ #- VPS:
root@имя-сервера:~#
Скрипт автоматически:
- Установит
autosshчерез opkg - Запишет SSH-ключ
- Создаст скрипт туннеля и настроит автозапуск
- Добавит watchdog в cron (перезапуск раз в минуту если упал)
- Запустит туннель
В конце увидишь:
=== OK ===
Тоннель: localhost:22 (роутер) -> VPS:20100
После этого нажми «⟳ Проверить связь» в панели.
3.3 Диагностика туннеля
На роутере:
# Смотреть лог:
cat /tmp/hydra_tun.log
# Перезапустить вручную:
/opt/etc/init.d/S99hydra_tun restart
# Проверить что autossh жив:
ps | grep autossh
На VPS:
# Проверить что туннель слушает:
ss -tlnp | grep 20100
# Если порт занят старым соединением — освободить:
fuser -k 20100/tcp
4. WireGuard VPN
Вкладка «🔒 WireGuard VPN» — генерирует WireGuard-сервер на VPS и клиентские конфиги для роутеров.
Как работает
Роутер ──── WireGuard ────▶ VPS (wg0, порт 51820)
шифрованный
туннель
В отличие от туннеля (только управление), WireGuard шифрует весь трафик и может использоваться как VPN для маршрутизации через него.
Шаг 1 — инициализация сервера
Нажми «⚙ Инициализировать сервер» — установится WireGuard на VPS, сгенерируются ключи, поднимется wg0.
Шаг 2 — добавь роутер
Нажми «+ В VPN» напротив нужного роутера — сгенерируются ключи и IP для этого роутера.
Шаг 3 — установи на роутер
Вариант А (автоматически): Нажми «📡 Установить на роутер» — скрипт зайдёт по SSH и попытается настроить WireGuard через Keenetic RCI. Если получится, интерфейс появится в Keenetic UI.
Вариант Б (вручную через файл):
- Нажми «📄 Конфиг» → «⬇ Скачать .conf»
- В Keenetic: Интернет → Другие подключения → WireGuard → Загрузить из файла
- Укажи адрес VPS и порт
51820в настройках пира
После добавления в Keenetic — настрой политику маршрутизации: Интернет → Приоритеты подключений.
Удаление с роутера
Кнопка «🗑 Снести с роутера» — удаляет все файлы через SSH. Нативные WireGuard-интерфейсы в Keenetic UI нужно удалить вручную: Интернет → Другие подключения → WireGuard → Удалить подключение.
5. Логины и пароли
Здесь два разных набора учётных данных — не перепутай.
Пароль веб-панели (ADMIN_PASSWORD)
Пароль для входа на http://VPS:8000. Задаётся в server/.env. Никак не связан с роутерами.
SSH-пароль роутера (SSH_PASS)
Пароль для SSH на роутер (root / keenetic по умолчанию).
- Общий для всех — задаётся в
server/.env:SSH_PASS=keenetic - Индивидуальный — поле «SSH пароль» при добавлении роутера (перекрывает глобальный)
Поле IP — адрес для SSH (LAN-адрес, белый IP или DDNS), не веб-ссылка KeenDNS. Если случайно вставил
https://...— сервис автоматически извлечёт хост.
SSH-ключи для туннеля
Ничего делать не нужно — ключи генерируются на VPS автоматически. Если ты удалил ключ вручную — просто нажми «⇄ Тоннель» снова, ключ перезапишется в authorized_keys.
6. Частые ошибки и решения
Туннель: ssh exited with error status 255; restarting ssh
Причина: autossh не может подключиться к VPS. Обычно это происходит сразу после переустановки туннеля — старый autossh запущен со старыми параметрами.
Решение:
# На роутере — убить старый процесс и перезапустить:
killall autossh
sleep 1
/opt/etc/init.d/S99hydra_tun start
Если S99hydra_tun не найден — нажми «⇄ Тоннель» и запусти команду заново.
Туннель: Connection timed out или Connection refused при проверке связи
Причина: Порт 20100 на VPS занят старым зависшим SSH-соединением, или туннель ещё не установился.
Решение на VPS:
# Проверить что слушает:
ss -tlnp | grep 20100
# Освободить порт:
fuser -k 20100/tcp
После этого нажми «Тест» в панели — autossh переподключится автоматически.
Начиная с последней версии, при нажатии «⇄ Тоннель» сервер сам освобождает занятый порт.
Туннель: curl: (22) The requested URL returned error: 403
Причина: Токен установки туннеля истёк (действует 10 минут) или был скопирован с переносом строки внутри.
Решение: Нажми «⇄ Тоннель» снова → скопируй новую команду → выполни целиком одной строкой. Не разбивай на части и не переменные.
WireGuard: Auth response: пустой, RCI не работает
Причина: Keenetic слушает на LAN IP роутера (например 192.168.88.1), а не на localhost. Скрипт автоматически перебирает все локальные адреса.
Если автодеплой не сработал — используй ручной способ:
- «📄 Конфиг» → «⬇ Скачать .conf»
- Keenetic: Интернет → Другие подключения → WireGuard → Загрузить из файла
WireGuard: интерфейс создался как nwg50 но не виден в Keenetic UI
Причина: Fallback-метод создаёт интерфейс через ip link, который не регистрируется в Keenetic конфиге.
Решение: Импортируй конфиг через UI (см. выше). Интерфейс появится нативно и будет виден в «Приоритеты подключений».
Unit hydra-manager.service not found
Причина: server/install.sh не дошёл до конца.
Решение:
cd /opt && sudo bash /opt/domen-hydra/server/install.sh
нет IP и нет тоннеля при обновлении роутеров
Причина: Роутер добавлен без IP и без настроенного туннеля.
Решение: Укажи IP роутера или настрой туннель (кнопка «⇄» напротив роутера).
neo restart завершается с ошибкой
Причина: HydraRoute Neo не установлен.
Проверка:
opkg list-installed | grep hydraroute
Панель не открывается (http://VPS:8000)
sudo ufw allow 8000/tcp
7. Полезное
SSH на роутер:
Адрес: 192.168.1.1 Логин: root Пароль: keenetic Порт: 22
Управление сервисом на VPS:
sudo systemctl status hydra-manager
sudo systemctl restart hydra-manager
sudo journalctl -u hydra-manager -n 50
Очистить роутер от всего что ставил сервер:
killall autossh 2>/dev/null; \
/opt/etc/init.d/S50hydravpn stop 2>/dev/null; \
rm -f /opt/etc/init.d/S99hydra_tun /opt/etc/init.d/S50hydravpn \
/opt/bin/hydra_tun /opt/etc/hydra_tk \
/opt/etc/wireguard/wg0.conf /opt/etc/wireguard/wg0.key; \
( crontab -l 2>/dev/null | grep -v 'S99hydra_tun' ) | crontab -; \
for i in $(seq 50 70); do ip link show nwg$i >/dev/null 2>&1 && ip link delete nwg$i; done; \
echo "=== Готово ==="
Прямые ссылки для роутера (cron-обновление):
http://VPS:8000/hydra/domain.conf
http://VPS:8000/hydra/ip.list
http://VPS:8000/hydra/version
Проверить активные туннели:
ss -tlnp | grep 2010
Связанные проекты
- keenetic-dns-routes — встроенная DNS-маршрутизация без Neo
- keenetic-unified — Neo + дашборд + мониторинг
- Keenetic SSH — прямой SSH (нужен белый IP)
Поддержать проект
Если проект оказался полезным — буду рад поддержке. Это помогает развивать и поддерживать его дальше.
- Boosty
- Ozon СБП
- Telegram: @Iot_andrey — вопросы, идеи, обратная связь
