Бенелюкс: сторож восстановления обхода (Этап 1) — мониторинг+автолечение на LXC137, боевой тест пройден
This commit is contained in:
58
decisions/2026-06-26-benelux-podkop-recovery-watchdog.md
Normal file
58
decisions/2026-06-26-benelux-podkop-recovery-watchdog.md
Normal file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
date: 2026-06-26
|
||||
type: decision
|
||||
tags: [benelux, podkop, watchdog, monitoring, self-heal, openwrt, amneziawg, failover]
|
||||
status: stage1-done
|
||||
---
|
||||
|
||||
# Бенелюкс — инструмент восстановления обхода (мониторинг + автолечение)
|
||||
|
||||
## Задача
|
||||
Олег: «инструмент восстановления обхода блокировок, мониторинг + автоисправление, должно работать на 100%, наверное на внешних ресурсах от Бенелюкса».
|
||||
|
||||
## Калибровка «100%»
|
||||
Буквальные 100% одним туннелём недостижимы (ISP/нода/NetBird могут лечь — удалённо не починить). Реальная цель: **обход никогда не остаётся сломанным незаметно, чинится сам за 1–3 мин, иначе алерт раньше клиента.** Достигается тремя слоями.
|
||||
|
||||
## Решения Олега (AskUserQuestion)
|
||||
- Наблюдатель — **дома, LXC** (клон antoshka-watch-self, алерт через бота).
|
||||
- Автофикс — **до ребута включительно**, с гистерезисом.
|
||||
- Резерв выхода — **второй AWG-сервер** (не VLESS) → Finland-хаб.
|
||||
|
||||
## Архитектура (3 слоя)
|
||||
1. **Резерв выхода:** awg0 Singapore (primary) + awg1 Finland (secondary). Этап 2.
|
||||
2. **Лёгкое самолечение на роутере:** podkop `enable_badwan_interface_monitoring=1` (следит за wan, перезагружает sing-box) — уже было.
|
||||
3. **Внешний сторож (главный):** `benelux-podkop-watchdog.sh` на LXC 137, cron `*/5`, проверки УДАЛЁННО по SSH через NetBird.
|
||||
|
||||
## Ключевой принцип — анти-flapping
|
||||
Грабли OpenWrt_4/Оливье: собственный watchdog.sh агрессивно рестартовал sing-box и сам создавал обрывы. Поэтому: лечим только после **2 подряд провалов**, cooldown 5 мин между шагами, лимит **2 ребута/сутки**.
|
||||
|
||||
## Что проверяет сторож (изнутри роутера)
|
||||
- sing-box жив + Clash API (`192.168.1.1:9090`) отвечает
|
||||
- handshake текущего выхода < 200с + `ping -I awgN 1.1.1.1` (транзит, ловит rp_filter-ловушку)
|
||||
- FakeIP: youtube → `198.18.x` (заворачивается)
|
||||
- **анти-утечка:** ozon.ru НЕ `198.18.x` (страж рецидива `russia_outside`) — только алерт, не автофикс
|
||||
- достижимость: SSH нет → различает «роутер пингуется, SSH моргнул» vs «Бенелюкс лёг»
|
||||
|
||||
## Лестница лечения (с гистерезисом)
|
||||
0. `podkop restart`
|
||||
1. флип `podkop.main.interface` awg0→awg1 (если awg1 поднят и здоров), иначе `ifdown/ifup` + restart
|
||||
2. `reboot` (лимит 2/сутки)
|
||||
3. сдаёмся → алерт «нужно руками»
|
||||
Каждое срабатывание + восстановление (✅) → Telegram Олегу (1292155421) через токен бота из `/root/.openclaw/openclaw.json` (тот же тракт, что antoshka-watch-self).
|
||||
|
||||
## Деплой Этапа 1 (2026-06-26) — СДЕЛАНО
|
||||
- Ключ LXC137 `root@openclaw` добавлен в `/etc/dropbear/authorized_keys` Бенелюкса.
|
||||
- `/root/benelux-podkop-watchdog.sh` на LXC 137, cron `*/5`. Исходник в vault `snippets/benelux/benelux-podkop-watchdog.sh`.
|
||||
- **Боевой тест пройден:** `podkop stop` → прогон1 DEGRADED 1/2 (без действий) → прогон2 2/2 → Шаг1 restart → sing-box поднят, FakeIP вернулся → прогон3 OK + ✅-отбой + сброс счётчика. ⚠️/✅ алерты дошли.
|
||||
- Грабли при написании: busybox `pgrep -x` не работает (→ `pgrep`); `read < нет_файла` течёт ошибкой (→ guard `[ -f ]`).
|
||||
|
||||
## Этап 2 (TODO) — резервный выход Finland + failover
|
||||
- Через Amnezia Web Panel (LXC 143 `10.0.0.143:5000`, admin/AmnPanel!2026-fi) нарезать пир Бенелюкса на Finland-хаб `151.241.234.241:41624` (AmneziaWG 2.0, subnet `10.8.1.0/24`).
|
||||
- Поднять `awg1` на роутере (UCI-референс — HomeLab awg2, [[../projects/dttb/openwrt-router]]); awg1 в firewall WAN-зону; per-iface `rp_filter=2`.
|
||||
- Failover уже заложен в watchdog (Шаг1 флипает на awg1) — активируется автоматически, как только `network.awg1` появится.
|
||||
- Закрывает TODO из [[2026-06-23-amnezia-web-panel-lxc143]] «failover (AWG сам не переключается)».
|
||||
|
||||
## Опционально (Этап 3)
|
||||
- Второй независимый сторож на Finland VPS (на случай падения дома) — взаимный догляд ближе к «100%».
|
||||
|
||||
См. [[../snippets/podkop-reference]], [[../claude-memory/benelux]].
|
||||
Reference in New Issue
Block a user