Ground-Zerro / HydraRoute Public
Code Issues Pull requests Actions Releases View on GitHub ↗
10.1 KB markdown
# 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) ❤️