mirror of
https://github.com/andrey271192/domen_hydra.git
synced 2026-09-20 14:42:00 +00:00
docs: обновить README — WireGuard, туннель, частые ошибки, очистка роутера
This commit is contained in:
517
README.md
517
README.md
@@ -1,6 +1,6 @@
|
|||||||
# HydraRoute Manager
|
# HydraRoute Manager
|
||||||
|
|
||||||
Веб-панель для централизованного управления конфигурацией **HydraRoute Neo** на роутерах Keenetic. Редактируешь списки доменов и IP в браузере — одной кнопкой отправляешь на все роутеры.
|
Веб-панель для управления **HydraRoute Neo** на роутерах Keenetic. Редактируешь списки доменов и IP в браузере — одной кнопкой всё разъезжается по роутерам. Плюс встроенный WireGuard-генератор и мастер обратного туннеля для роутеров без белого IP.
|
||||||
|
|
||||||
> **Поддержать проект:** [Boosty](https://boosty.to/andrey27/donate) · [Ozon СБП](https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798) · Telegram: [@Iot_andrey](https://t.me/Iot_andrey)
|
> **Поддержать проект:** [Boosty](https://boosty.to/andrey27/donate) · [Ozon СБП](https://finance.ozon.ru/apps/sbp/ozonbankpay/019dc200-2a5d-7931-a619-782d285f6798) · Telegram: [@Iot_andrey](https://t.me/Iot_andrey)
|
||||||
|
|
||||||
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. Что это за проект
|
## Что это и зачем
|
||||||
|
|
||||||
HydraRoute Neo — плагин для Keenetic, который маршрутизирует трафик по доменам и IP-адресам. Например: YouTube и Netflix — через VPN, всё остальное — напрямую. Конфигурация хранится в двух файлах на роутере: `domain.conf` и `ip.list`.
|
HydraRoute Neo — плагин для Keenetic, который маршрутизирует трафик по доменам и IP. YouTube и Netflix — через VPN, всё остальное — напрямую. Конфиг хранится в двух файлах на роутере: `domain.conf` и `ip.list`.
|
||||||
|
|
||||||
Проблема: редактировать эти файлы напрямую неудобно, а если роутеров несколько — приходится делать всё вручную на каждом.
|
Редактировать их напрямую неудобно, а если роутеров несколько — приходится делать всё вручную на каждом.
|
||||||
|
|
||||||
**Этот проект решает проблему:** устанавливаешь сервис на VPS, редактируешь домены и IP через браузер, нажимаешь «Обновить все роутеры» — файлы сами разъезжаются по всем роутерам через SSH.
|
**Этот проект решает проблему:**
|
||||||
|
|
||||||
```
|
```
|
||||||
┌──────────────────────────────┐
|
┌──────────────────────────────┐
|
||||||
@@ -26,30 +26,30 @@ HydraRoute Neo — плагин для Keenetic, который маршрути
|
|||||||
└──────────┬──────────┬────────┘
|
└──────────┬──────────┬────────┘
|
||||||
│ SSH │ SSH
|
│ SSH │ SSH
|
||||||
┌──────▼──┐ ┌────▼──────┐
|
┌──────▼──┐ ┌────▼──────┐
|
||||||
│Роутер 1 │ │ Роутер 2 │ ← конфиги обновляются автоматически
|
│Роутер 1 │ │ Роутер 2 │
|
||||||
└─────────┘ └───────────┘
|
└─────────┘ └───────────┘
|
||||||
```
|
```
|
||||||
|
|
||||||
**Что умеет:**
|
**Что умеет:**
|
||||||
- Редактировать группы доменов и IP через браузер.
|
- Редактировать группы доменов и IP через браузер
|
||||||
- Включать/выключать группы одним переключателем.
|
- Включать/выключать группы одним переключателем
|
||||||
- Отправлять конфиг сразу на все роутеры одной кнопкой.
|
- Отправлять конфиг сразу на все роутеры одной кнопкой
|
||||||
- Снимать конфиг с конкретного роутера и подставлять в редактор.
|
- Снимать конфиг с роутера и подставлять в редактор
|
||||||
- Отправлять конфиг на один конкретный роутер.
|
- Генерировать WireGuard VPN: сервер на VPS + клиенты на роутерах
|
||||||
- Проверять SSH-соединение с роутером.
|
- Для роутеров **без белого IP** — мастер настройки обратного SSH-туннеля с автовосстановлением
|
||||||
- Для роутеров **без белого IP** — встроенный мастер настройки обратного туннеля.
|
|
||||||
|
|
||||||
**Требования:**
|
**Требования:**
|
||||||
- Роутер Keenetic с установленным HydraRoute Neo и Entware.
|
- Роутер Keenetic с установленным HydraRoute Neo и Entware
|
||||||
- Белый IP на WAN роутера **или** настроенный обратный тоннель (см. раздел 3).
|
- VPS с белым IP (сюда устанавливается панель)
|
||||||
|
- Белый IP на роутере **или** настроенный обратный тоннель (раздел 3)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Быстрая установка
|
## 1. Быстрая установка
|
||||||
|
|
||||||
Вставляй команды на **VPS** (сервере), где будет работать панель.
|
Все команды выполняются на **VPS**.
|
||||||
|
|
||||||
### Шаг 1 — клонируй и запусти установщик
|
### Шаг 1 — установка
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd /opt
|
cd /opt
|
||||||
@@ -62,7 +62,7 @@ sudo bash server/install.sh
|
|||||||
|
|
||||||
> Если видишь `Unable to read current working directory` — сначала выполни `cd /opt`, потом повтори.
|
> Если видишь `Unable to read current working directory` — сначала выполни `cd /opt`, потом повтори.
|
||||||
|
|
||||||
### Шаг 2 — задай пароли
|
### Шаг 2 — настройка паролей
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nano /opt/domen-hydra/server/.env
|
nano /opt/domen-hydra/server/.env
|
||||||
@@ -70,21 +70,20 @@ nano /opt/domen-hydra/server/.env
|
|||||||
|
|
||||||
Минимум что нужно поменять:
|
Минимум что нужно поменять:
|
||||||
|
|
||||||
```
|
```env
|
||||||
ADMIN_PASSWORD=твой-пароль-для-панели
|
ADMIN_PASSWORD=твой-пароль-для-панели
|
||||||
|
|
||||||
# SSH-пароль роутера (если у всех одинаковый)
|
|
||||||
SSH_USER=root
|
SSH_USER=root
|
||||||
SSH_PASS=keenetic
|
SSH_PASS=keenetic
|
||||||
```
|
```
|
||||||
|
|
||||||
Если планируешь **туннель** (для роутеров без белого IP) — добавь сюда же:
|
Если планируешь **туннель** (для роутеров без белого IP):
|
||||||
|
|
||||||
```
|
```env
|
||||||
VPS_SSH_HOST=IP_или_домен_твоего_VPS
|
VPS_SSH_HOST=IP_или_домен_VPS
|
||||||
```
|
```
|
||||||
|
|
||||||
### Шаг 3 — перезапусти сервис
|
### Шаг 3 — запуск
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo systemctl restart hydra-manager
|
sudo systemctl restart hydra-manager
|
||||||
@@ -96,8 +95,6 @@ sudo systemctl restart hydra-manager
|
|||||||
http://IP_ТВОЕГО_VPS:8000
|
http://IP_ТВОЕГО_VPS:8000
|
||||||
```
|
```
|
||||||
|
|
||||||
Введи пароль из `ADMIN_PASSWORD`.
|
|
||||||
|
|
||||||
### Обновление
|
### Обновление
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -112,192 +109,20 @@ curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/serve
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Туннель — для роутеров без белого IP
|
## 2. Домены и IP
|
||||||
|
|
||||||
### Что такое «белый IP» и зачем он нужен
|
|
||||||
|
|
||||||
По умолчанию сервис подключается к роутеру по SSH напрямую. Для этого нужен **публичный IP** роутера — чтобы VPS мог до него «дотянуться».
|
|
||||||
|
|
||||||
Если провайдер выдаёт **серый IP** (роутер за NAT оператора — очень частая ситуация в России), VPS не может достучаться до роутера. Роутер сам должен инициировать соединение.
|
|
||||||
|
|
||||||
### Как работает туннель
|
|
||||||
|
|
||||||
Роутер сам открывает зашифрованное SSH-соединение на VPS и говорит: «слушай у себя порт 20100 — всё что придёт туда, перешли мне на порт 22 (SSH)».
|
|
||||||
|
|
||||||
```
|
|
||||||
Роутер (серый IP) ──SSH──▶ VPS :20100
|
|
||||||
│
|
|
||||||
VPS → hydra-manager ────────────▶│──▶ SSH роутера (порт 22)
|
|
||||||
```
|
|
||||||
|
|
||||||
В итоге сервис подключается к роутеру через `localhost:20100`, а не напрямую. Серый IP не мешает. Кнопки «Обновить все роутеры» и «На роутер» работают через тоннель автоматически.
|
|
||||||
|
|
||||||
### Что понадобится
|
|
||||||
|
|
||||||
- Публичный IP/домен VPS (уже есть).
|
|
||||||
- Роутер с установленным **Entware** (нужен для `autossh`).
|
|
||||||
|
|
||||||
### Установка Entware на роутер
|
|
||||||
|
|
||||||
> Entware — пакетный менеджер для роутеров, позволяет устанавливать дополнительные программы.
|
|
||||||
|
|
||||||
С KeeneticOS 4.2+ — прямо через браузер: открой `192.168.1.1/a` и следуй инструкциям.
|
|
||||||
|
|
||||||
Или через SSH на роутере (логин `root`, пароль `keenetic`, порт 22):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# MT7628/MT7621 → mipsel:
|
|
||||||
opkg disk storage:/ https://bin.entware.net/mipselsf-k3.4/installer/mipsel-installer.tar.gz
|
|
||||||
|
|
||||||
# MT7622/MT7981/MT7988 (ARM) → aarch64:
|
|
||||||
opkg disk storage:/ https://bin.entware.net/aarch64-k3.10/installer/aarch64-installer.tar.gz
|
|
||||||
```
|
|
||||||
|
|
||||||
Дождись окончания (~2 минуты), проверь: `opkg update` должен отработать без ошибок.
|
|
||||||
|
|
||||||
### Шаг 1 — настрой .env на VPS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
nano /opt/domen-hydra/server/.env
|
|
||||||
```
|
|
||||||
|
|
||||||
Добавь или заполни:
|
|
||||||
|
|
||||||
```
|
|
||||||
VPS_SSH_HOST=IP_или_домен_VPS # публичный адрес, куда роутер будет коннектиться
|
|
||||||
VPS_SSH_PORT=22 # SSH-порт VPS (обычно 22)
|
|
||||||
VPS_SSH_USER=root # пользователь VPS
|
|
||||||
```
|
|
||||||
|
|
||||||
`VPS_SSH_PASS` не нужен — туннель работает через SSH-ключи, которые генерируются автоматически.
|
|
||||||
|
|
||||||
Перезапусти:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo systemctl restart hydra-manager
|
|
||||||
```
|
|
||||||
|
|
||||||
### Шаг 2 — добавь роутер в панель
|
|
||||||
|
|
||||||
Открой `http://VPS:8000` → вкладка «Роутеры».
|
|
||||||
|
|
||||||
**Вариант А** (роутер уже добавлен): нажми кнопку **«⇄»** напротив нужного роутера.
|
|
||||||
|
|
||||||
**Вариант Б** (роутер ещё не добавлен): введи имя и SSH-пароль роутера, нажми **«⇄ Тоннель»** вместо «+ Добавить» — роутер добавится и сразу откроется окно туннеля.
|
|
||||||
|
|
||||||
> Если кнопки «⇄ Тоннель» нет — проверь, что `VPS_SSH_HOST` в `.env` не пустой и сервис перезапущен.
|
|
||||||
|
|
||||||
### Шаг 3 — скопируй и выполни команду на роутере
|
|
||||||
|
|
||||||
В открывшемся окне появится одна команда вида:
|
|
||||||
|
|
||||||
```
|
|
||||||
curl -fsS 'http://VPS:8000/api/routers/andrey/tunnel-script?token=XXX' | sh
|
|
||||||
```
|
|
||||||
|
|
||||||
Нажми **«📋 Копировать»** (если не сработало — выдели текст и Cmd/Ctrl+C).
|
|
||||||
|
|
||||||
Зайди по SSH на **роутер** (не на VPS!) и вставь команду:
|
|
||||||
|
|
||||||
```
|
|
||||||
ssh root@192.168.1.1
|
|
||||||
```
|
|
||||||
|
|
||||||
> **Как отличить терминал роутера от VPS:**
|
|
||||||
> - Роутер: приглашение выглядит как `~ #` или `(none) ~ #`
|
|
||||||
> - VPS: выглядит как `root@имя-сервера:~#`
|
|
||||||
|
|
||||||
Скрипт автоматически:
|
|
||||||
1. Установит `autossh` через opkg.
|
|
||||||
2. Запишет SSH-ключ в `/opt/etc/hydra_tk`.
|
|
||||||
3. Создаст скрипт тоннеля `/opt/bin/hydra_tun`.
|
|
||||||
4. Пропишет автозапуск через Entware init.d.
|
|
||||||
5. Запустит тоннель в фоне.
|
|
||||||
|
|
||||||
В конце увидишь:
|
|
||||||
|
|
||||||
```
|
|
||||||
=== OK ===
|
|
||||||
Тоннель: localhost:22 (роутер) -> VPS:20100
|
|
||||||
```
|
|
||||||
|
|
||||||
### Шаг 4 — проверь связь
|
|
||||||
|
|
||||||
В браузере нажми **«⟳ Проверить связь»** — если всё хорошо, статус изменится на «✅ Активен».
|
|
||||||
|
|
||||||
После этого «Обновить все роутеры» и «📡 На роутер» будут работать через тоннель автоматически.
|
|
||||||
|
|
||||||
### Ручной запуск и диагностика
|
|
||||||
|
|
||||||
Если автоматический запуск не сработал (написало «ОШИБКА»):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# На роутере — запусти вручную (увидишь вывод):
|
|
||||||
/opt/bin/hydra_tun
|
|
||||||
|
|
||||||
# Проверить лог:
|
|
||||||
cat /tmp/hydra_tun.log
|
|
||||||
|
|
||||||
# Перезапустить через init.d:
|
|
||||||
killall autossh 2>/dev/null; sleep 1; /opt/etc/init.d/S99hydra_tun start
|
|
||||||
```
|
|
||||||
|
|
||||||
Если `/opt/bin/hydra_tun` работает вручную — попробуй перезагрузить роутер: при старте Entware сам запустит туннель.
|
|
||||||
|
|
||||||
### Проверка на VPS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
ss -tlnp | grep 20100
|
|
||||||
# Должна быть строка с 127.0.0.1:20100 — значит туннель активен
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 4. Логины и пароли
|
|
||||||
|
|
||||||
Здесь два разных набора учётных данных. Не перепутай.
|
|
||||||
|
|
||||||
### Пароль веб-панели (`ADMIN_PASSWORD`)
|
|
||||||
|
|
||||||
Пароль для входа на `http://VPS:8000`. Задаётся в `server/.env`. Никак не связан с роутерами.
|
|
||||||
|
|
||||||
### SSH-пароль роутера (`SSH_PASS`)
|
|
||||||
|
|
||||||
Это пароль для входа по SSH на роутер (`root` / `keenetic` по умолчанию). Нужен сервису, чтобы отправлять конфиги через SSH.
|
|
||||||
|
|
||||||
- **Общий для всех** — задаётся в `server/.env`: `SSH_PASS=keenetic`
|
|
||||||
- **Индивидуальный** — поле «SSH пароль» при добавлении роутера в панели (перекрывает глобальный).
|
|
||||||
|
|
||||||
> Поле **IP** — это адрес для SSH (LAN-адрес, белый IP или DDNS), **не** веб-ссылка KeenDNS. Если случайно вставил URL вроде `https://...` — сервис автоматически извлечёт из него хост.
|
|
||||||
|
|
||||||
### SSH-ключи для туннеля
|
|
||||||
|
|
||||||
Ничего делать не нужно — ключи генерируются на VPS автоматически при нажатии «⇄». Приватный ключ уходит на роутер через одноразовую ссылку (действует 10 минут). Пароль SSH для туннеля не используется.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 5. Как добавлять домены и IP
|
|
||||||
|
|
||||||
### Вкладка «Конфигурация»
|
### Вкладка «Конфигурация»
|
||||||
|
|
||||||
Здесь карточки с группами доменов и IP. Каждая группа имеет:
|
Карточки с группами. У каждой группы:
|
||||||
- **Имя** — например `youtube` или `ru-geoip`.
|
- **Имя** — например `youtube` или `ru-geoip`
|
||||||
- **Политику** — `HydraRoute` (через VPN), `RU` (локально), `Google` и т.д.
|
- **Политика** — `HydraRoute` (через VPN), `RU` (локально) и т.д.
|
||||||
- **Список записей** — домены или IP/CIDR, по одному на строку.
|
- **Список** — домены или IP/CIDR, по одному на строку
|
||||||
|
|
||||||
Нажми **«✏️»** на карточке → редактируй → **«💾 Сохранить»**.
|
Нажми **«✏️»** → редактируй → **«💾 Сохранить»**.
|
||||||
|
|
||||||
### Вкладка «Импорт файлов»
|
### Форматы файлов
|
||||||
|
|
||||||
На вкладке «Роутеры» нажми **«⬇ С роутера»** — файлы подтянутся автоматически и подставятся в поля импорта. Или вручную скопируй с роутера:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cat /opt/etc/HydraRoute/domain.conf
|
|
||||||
cat /opt/etc/HydraRoute/ip.list
|
|
||||||
```
|
|
||||||
|
|
||||||
### Формат domain.conf
|
|
||||||
|
|
||||||
|
**domain.conf:**
|
||||||
```
|
```
|
||||||
##youtube
|
##youtube
|
||||||
youtube.com,youtu.be,googlevideo.com/HydraRoute
|
youtube.com,youtu.be,googlevideo.com/HydraRoute
|
||||||
@@ -306,8 +131,7 @@ youtube.com,youtu.be,googlevideo.com/HydraRoute
|
|||||||
avito.ru,ozon.ru/RU
|
avito.ru,ozon.ru/RU
|
||||||
```
|
```
|
||||||
|
|
||||||
### Формат ip.list
|
**ip.list:**
|
||||||
|
|
||||||
```
|
```
|
||||||
##geoip:ru
|
##geoip:ru
|
||||||
/RU
|
/RU
|
||||||
@@ -316,26 +140,243 @@ geoip:ru
|
|||||||
|
|
||||||
### Отправка на роутеры
|
### Отправка на роутеры
|
||||||
|
|
||||||
- **«📡 Обновить все роутеры»** — отправляет конфиг на все роутеры и делает `neo restart`.
|
- **«📡 Обновить все роутеры»** — отправляет конфиг на все роутеры и делает `neo restart`
|
||||||
- **«📡 На роутер»** на карточке роутера — только на один конкретный.
|
- **«📡 На роутер»** на карточке роутера — только на один конкретный
|
||||||
|
|
||||||
### Установка cron-обновления на роутер
|
### Импорт с роутера
|
||||||
|
|
||||||
|
Вкладка «Роутеры» → **«⬇ С роутера»** — файлы подтянутся автоматически.
|
||||||
|
|
||||||
|
Или вручную на роутере:
|
||||||
|
```sh
|
||||||
|
cat /opt/etc/HydraRoute/domain.conf
|
||||||
|
cat /opt/etc/HydraRoute/ip.list
|
||||||
|
```
|
||||||
|
|
||||||
|
### Автообновление на роутере
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export SERVER_URL="http://IP_ТВОЕГО_VPS:8000" \
|
export SERVER_URL="http://IP_ТВОЕГО_VPS:8000" \
|
||||||
&& curl -fsSL https://raw.githubusercontent.com/andrey271192/domen_hydra/main/install_router.sh | sh
|
&& 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):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sh /opt/bin/hydra_update.sh
|
# 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:**
|
||||||
|
```bash
|
||||||
|
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@имя-сервера:~#`
|
||||||
|
|
||||||
|
Скрипт автоматически:
|
||||||
|
1. Установит `autossh` через opkg
|
||||||
|
2. Запишет SSH-ключ
|
||||||
|
3. Создаст скрипт туннеля и настроит автозапуск
|
||||||
|
4. Добавит watchdog в cron (перезапуск раз в минуту если упал)
|
||||||
|
5. Запустит туннель
|
||||||
|
|
||||||
|
В конце увидишь:
|
||||||
|
```
|
||||||
|
=== OK ===
|
||||||
|
Тоннель: localhost:22 (роутер) -> VPS:20100
|
||||||
|
```
|
||||||
|
|
||||||
|
После этого нажми **«⟳ Проверить связь»** в панели.
|
||||||
|
|
||||||
|
### 3.3 Диагностика туннеля
|
||||||
|
|
||||||
|
**На роутере:**
|
||||||
|
```sh
|
||||||
|
# Смотреть лог:
|
||||||
|
cat /tmp/hydra_tun.log
|
||||||
|
|
||||||
|
# Перезапустить вручную:
|
||||||
|
/opt/etc/init.d/S99hydra_tun restart
|
||||||
|
|
||||||
|
# Проверить что autossh жив:
|
||||||
|
ps | grep autossh
|
||||||
|
```
|
||||||
|
|
||||||
|
**На VPS:**
|
||||||
|
```bash
|
||||||
|
# Проверить что туннель слушает:
|
||||||
|
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.
|
||||||
|
|
||||||
|
**Вариант Б (вручную через файл):**
|
||||||
|
1. Нажми **«📄 Конфиг»** → **«⬇ Скачать .conf»**
|
||||||
|
2. В Keenetic: **Интернет → Другие подключения → WireGuard → Загрузить из файла**
|
||||||
|
3. Укажи адрес 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. Частые ошибки и решения
|
## 6. Частые ошибки и решения
|
||||||
|
|
||||||
|
### Туннель: `ssh exited with error status 255; restarting ssh`
|
||||||
|
|
||||||
|
**Причина:** autossh не может подключиться к VPS. Обычно это происходит сразу после переустановки туннеля — старый autossh запущен со старыми параметрами.
|
||||||
|
|
||||||
|
**Решение:**
|
||||||
|
```sh
|
||||||
|
# На роутере — убить старый процесс и перезапустить:
|
||||||
|
killall autossh
|
||||||
|
sleep 1
|
||||||
|
/opt/etc/init.d/S99hydra_tun start
|
||||||
|
```
|
||||||
|
|
||||||
|
Если `S99hydra_tun` не найден — нажми «⇄ Тоннель» и запусти команду заново.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Туннель: `Connection timed out` или `Connection refused` при проверке связи
|
||||||
|
|
||||||
|
**Причина:** Порт 20100 на VPS занят старым зависшим SSH-соединением, или туннель ещё не установился.
|
||||||
|
|
||||||
|
**Решение на VPS:**
|
||||||
|
```bash
|
||||||
|
# Проверить что слушает:
|
||||||
|
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`. Скрипт автоматически перебирает все локальные адреса.
|
||||||
|
|
||||||
|
**Если автодеплой не сработал** — используй ручной способ:
|
||||||
|
1. «📄 Конфиг» → «⬇ Скачать .conf»
|
||||||
|
2. Keenetic: **Интернет → Другие подключения → WireGuard → Загрузить из файла**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### WireGuard: интерфейс создался как `nwg50` но не виден в Keenetic UI
|
||||||
|
|
||||||
|
**Причина:** Fallback-метод создаёт интерфейс через `ip link`, который не регистрируется в Keenetic конфиге.
|
||||||
|
|
||||||
|
**Решение:** Импортируй конфиг через UI (см. выше). Интерфейс появится нативно и будет виден в «Приоритеты подключений».
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### `Unit hydra-manager.service not found`
|
### `Unit hydra-manager.service not found`
|
||||||
|
|
||||||
**Причина:** `server/install.sh` не дошёл до конца.
|
**Причина:** `server/install.sh` не дошёл до конца.
|
||||||
@@ -345,24 +386,26 @@ sh /opt/bin/hydra_update.sh
|
|||||||
cd /opt && sudo bash /opt/domen-hydra/server/install.sh
|
cd /opt && sudo bash /opt/domen-hydra/server/install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### `нет IP и нет тоннеля` при обновлении роутеров
|
### `нет IP и нет тоннеля` при обновлении роутеров
|
||||||
|
|
||||||
**Причина:** Роутер добавлен без IP и без настроенного туннеля.
|
**Причина:** Роутер добавлен без IP и без настроенного туннеля.
|
||||||
|
|
||||||
**Решение:** Укажи IP роутера или настрой туннель (кнопка «⇄» напротив роутера).
|
**Решение:** Укажи IP роутера или настрой туннель (кнопка «⇄» напротив роутера).
|
||||||
|
|
||||||
### Туннель пишет «autossh не запустился в фоне»
|
---
|
||||||
|
|
||||||
```sh
|
|
||||||
# Проверь вручную на роутере:
|
|
||||||
/opt/bin/hydra_tun
|
|
||||||
# Если работает — перезагрузи роутер. Если нет — смотри лог:
|
|
||||||
cat /tmp/hydra_tun.log
|
|
||||||
```
|
|
||||||
|
|
||||||
### `neo restart` завершается с ошибкой
|
### `neo restart` завершается с ошибкой
|
||||||
|
|
||||||
**Причина:** HydraRoute Neo не установлен. Проверь: `opkg list-installed | grep hydraroute`.
|
**Причина:** HydraRoute Neo не установлен.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
```sh
|
||||||
|
opkg list-installed | grep hydraroute
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
### Панель не открывается (`http://VPS:8000`)
|
### Панель не открывается (`http://VPS:8000`)
|
||||||
|
|
||||||
@@ -370,15 +413,11 @@ cat /tmp/hydra_tun.log
|
|||||||
sudo ufw allow 8000/tcp
|
sudo ufw allow 8000/tcp
|
||||||
```
|
```
|
||||||
|
|
||||||
### Кнопка «📋 Копировать» не срабатывает
|
|
||||||
|
|
||||||
Встроен fallback — текст выделяется автоматически. Нажми Cmd+C (Mac) или Ctrl+C (Windows/Linux).
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 7. Полезные советы
|
## 7. Полезное
|
||||||
|
|
||||||
**Как зайти на роутер по SSH:**
|
**SSH на роутер:**
|
||||||
```
|
```
|
||||||
Адрес: 192.168.1.1 Логин: root Пароль: keenetic Порт: 22
|
Адрес: 192.168.1.1 Логин: root Пароль: keenetic Порт: 22
|
||||||
```
|
```
|
||||||
@@ -390,18 +429,30 @@ sudo systemctl restart hydra-manager
|
|||||||
sudo journalctl -u hydra-manager -n 50
|
sudo journalctl -u hydra-manager -n 50
|
||||||
```
|
```
|
||||||
|
|
||||||
**Проверить активные туннели:**
|
**Очистить роутер от всего что ставил сервер:**
|
||||||
```bash
|
```sh
|
||||||
ss -tlnp | grep 2010
|
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/domain.conf
|
||||||
http://VPS:8000/hydra/ip.list
|
http://VPS:8000/hydra/ip.list
|
||||||
http://VPS:8000/hydra/version
|
http://VPS:8000/hydra/version
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Проверить активные туннели:**
|
||||||
|
```bash
|
||||||
|
ss -tlnp | grep 2010
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Связанные проекты
|
## Связанные проекты
|
||||||
|
|||||||
Reference in New Issue
Block a user