# HydraRoute Classic
**HydraRoute Classic v.1.0.1-final** — Полностью переписана на Go, без bash-скриптов, с улучшенной синхронизацией iptables, ipset и AdGuard Home.
---
## 📚 Оглавление
- [🚀 Возможности](#-возможности)
- [📋 Системные требования](#-системные-требования)
- [💾 Установка и обновление](#-установка-и-обновление)
- [📁 Работа с доменами](#-работа-с-доменами)
- [🌐 AdGuard Home](#-adguard-home)
- [🔧 Политики доступа](#-политики-доступа)
- [⚙️ Технические детали](#️-технические-детали)
- [🔄 Управление и перезапуск](#-управление)
- [⚠️ Устранение неполадок](#️-устранение-неполадок)
- [❌ Полное удаление](#-полное-удаление)
- [ℹ️ Примечания и лицензия](#️-примечания-и-лицензия)
---
## 🚀 Возможности
- Полная автоматизация создания, синхронизации и удаления iptables/ipset.
- Поддержка IPv4 и IPv6 с fallback и защитой от утечек трафика.
- Проверка и восстановление AdGuard Home при сбоях.
- Системный DNS отключается, 53 порт гарантированно освобождается перед запуском.
- Встроенный web-интерфейс (порт 2000) с авторизацией и сменой пароля.
- Автоматическая очистка неиспользуемых IP-адресов через 6 часов (кроме CIDR).
- Загрузка доменных списков с GitHub или по прямому URL.
- Поддержка CIDR-блоков IPv4 и IPv6 диапазонов.
- Совместимость с WARP, Xray, Sing-Box.
---
## 📋 Системные требования
- Роутер Keenetic с установленным [Entware](https://help.keenetic.com/hc/ru/articles/360021214160)
- Установите `curl`, если не установлен:
```bash
opkg install curl
```
---
## 💾 Установка и обновление
> ⚠️ **Важно:** перед установкой HydraRoute 1.0.1 необходимо полностью удалить предыдущие версии.
>
> HydraRoute 1.0.1 — мажорное обновление, несовместимое со старыми Classic.
1. Полное удаление старой версии:
```bash
curl -Ls "https://ground-zerro.github.io/release/keenetic/hr-uninstall.sh" | sh
```
> Пропустите этот шаг, если устанавливаете на чистый Entware.
2. Добавление репозитория:
```bash
curl -Ls "https://ground-zerro.github.io/release/keenetic/install-feed.sh" | sh
```
3. Установка:
```bash
opkg install hydraroute
```
> Запустите HydraRoute командой `hr start`
🔁 Обновление производится стандартной командой:
```bash
opkg update && opkg upgrade
```
> Файлы `domain.conf`, `ip.list` и `AdGuardHome.yaml` сохраняются — они входят в conffiles.
---
## 📁 Работа с доменами
### Через Web-интерфейс
Откройте WebUI: [http://192.168.1.1:2000](http://192.168.1.1:2000)
- Password: `keenetic`
> 💡 **Примечание:** домен `hr.net` больше **не используется** и полностью исключён из HydraRoute.
- Добавляйте домены, группируйте их, добавляйте описания.
- Импортируйте списки с GitHub или по ссылке.
- Включайте и отключайте группы без удаления.
- Назначайте политику для каждой группы.
**Совет:** очистите кэш браузера и DNS после изменения списков.
### Вручную через терминал
Редактируйте файл `/opt/etc/AdGuardHome/domain.conf`:
```bash
nano /opt/etc/AdGuardHome/domain.conf
```
Пример:
```text
youtube.com,googlevideo.com/HydraRoute1st,HydraRoute1stv6
openai.com,chatgpt.com/HydraRoute2nd,HydraRoute2ndv6
2ip.ru,2ip.io/HydraRoute3rd,HydraRoute3rdv6
```
> ⚠️ ИмяПолитики**v6** обязательно, если не хотите чтобы IPv6 трафик ходил через провайдера.
CIDR диапазоны редактируются в `/opt/etc/AdGuardHome/ip.list`:
```text
##IP для HydraRoute1st
/HydraRoute1st
10.203.14.12/28
fd52:acbd:1234:7::10/64
##IP для HydraRoute2nd
/HydraRoute2nd
172.22.48.77/26
fd94:bbcc:8899:5::22/64
##IP для HydraRoute3rd
#/HydraRoute3rd
192.168.143.19/28
fd00:abcd:ef01:2::33/64
```
> Группы отделяются пустыми строками и/или комментарием.
> Включенные группы CIDR начинаются с `/`, отключенные с `#/`, комментарии с `##`.
Количество отдельных блоков для одной Политики не огранчиено, пример:
```text
##Google
/HydraRoute1st
10.203.14.12/28
##Youtube
#/HydraRoute1st <- отключенный блок
172.22.48.77/26
173.23.49.78/26
##Discord
/HydraRoute1st
192.168.143.19/28
```
Здесь ИмяПолитики**v6** для IPv6 указывать не нужно, будет создан автоматически.
> **Примечание:** 💡 Для Политик **v6** необходим, для CIDR нет - особенности работы **AdGuardHome**.
---
## 🌐 AdGuard Home
- Доступ: [http://192.168.1.1:3000](http://192.168.1.1:3000)
- Login: `admin`
- Password: `keenetic`
**Настройки:**
- Включите статистику: Настройки → Основные → включить журнал и статистику.
- Для доменов `.local` используйте переписи DNS-запросов.
- Разблокировка сайтов выполняется через фильтры → пользовательские правила.
> Статистика может ускорить износ USB или NAND-носителя. Включайте при необходимости.
При старте HydraRoute выполняется перезапуск AGH и отключение системного DNS (`dns-override`).
---
## 🔧 Политики доступа
- Создаются автоматически при запуске HR или по `hr restart`.
- Если политика удалена и в ней есть домены — она пересоздаётся.
- Пустая политика в которой нет доменов не добавляется.
- Не требуется добавлять устройства в политику HR.
- При остановке HR (`hr stop`) трафик идёт напрямую без туннелей.
> Приоритет маршрутизации задаётся в интерфейсе Keenetic: **Приоритеты подключений → Политики доступа**.
> Если туннель недоступен — трафик доменов блокируется.
---
## ⚙️ Технические детали
**Файлы конфигурации:**
- `/opt/etc/AdGuardHome/domain.conf` — список доменов и политик.
- `/opt/etc/AdGuardHome/ip.list` — CIDR диапазоны IP.
- `/opt/etc/AdGuardHome/hrlogin.scrt` — пароль доступа к WebUI.
**Основные процессы:**
При запуске (`hr start`|`hr restart`)
- создание политик доступа
- инициализация и очистка IPv4 и IPv6 ipset
- добавление правил iptables
- выполнение `dns-override`
- перезапуск AdGuardHome
При остановке (`hr stop`)
- удаление правил маршрутизации из iptables
- очистка IPv4 и IPv6 ipset
Иное:
- Таймаут ipset: 6 часов.
> IP-адрес не обновлявшийся в ipset более 6 часов удаляется.
**WebUI:**
- Работает на `IP роутера`, порт `2000`.
- Авторизация через cookie `authenticated=1` (7 дней).
- Смена пароля доступна через WebUI.
---
## 🔄 Управление
```bash
hr start # Запуск HydraRoute
hr stop # Остановка и очистка iptables
hr restart # Перезапуск с восстановлением AGH и политик
hr status # Проверка состояния службы
```
---
## ⚠️ Устранение неполадок
Если маршрутизация не работает корректно:
```bash
hr restart
```
Эта команда пересоздаcт политики, ipset, iptables, выполнит `dns-override` и перезапустит AdGuard Home.
---
## ❌ Полное удаление
```bash
curl -Ls "https://ground-zerro.github.io/release/keenetic/hr-uninstall.sh" | sh
```
Удаляет все iptables/ipset, политики, зависимости, службы, файлы HydraRoute и AdGuardHome, включает системный DNS (`no dns-override`).
---
## ℹ️ Примечания и лицензия
HydraRoute распространяется бесплатно, «как есть». Автор не несёт ответственности за последствия использования.
Classic-ветка заморожена, поддержка ведётся только в рамках BugFix.
**Сказать "Спасибо" можно на** [Boosty](https://boosty.to/ground_zerro) ❤️