niikn: самовосстановление обхода (netns-probe+heal+boot-self-heal на OpenWrt, watchdog LXC137) + внешний бэкап-сторож на HOSTKEY (dead-man's switch); скрипты в snippets/niikn-podkop
This commit is contained in:
37
snippets/niikn-podkop/README.md
Normal file
37
snippets/niikn-podkop/README.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
date: 2026-06-29
|
||||
type: reference
|
||||
tags: [niikn, podkop, watchdog, monitoring, self-heal]
|
||||
---
|
||||
|
||||
# Самовосстановление + мониторинг обхода/VPN-хаба НИИКН (2026-06-29)
|
||||
|
||||
Поставлено после инцидента «AdminVPS приостановил VM за неоплату → лёг весь обход» + ручной правки залипа sing-box.
|
||||
Три слоя, образец — Бужарово/Бенелюкс ([[../benelux/benelux-podkop-watchdog]]) и `antoshka-watch-self.sh` (LXC137).
|
||||
|
||||
## Слой 1 — самолечение на роутере (OpenWrt НИИКН `192.168.1.50`)
|
||||
Зависимость: `opkg install ip-full kmod-veth` (для netns; kernel-matched 6.6.73, x86_64 — переживает ребут).
|
||||
- `/usr/local/bin/podkop-probe.sh` — проба ОБХОДА С ПОЗИЦИИ КЛИЕНТА через **netns-«LAN-клиент»** (192.168.1.242 на br-lan,
|
||||
трафик client→MikroTik(.1)→tproxy). Ловит залип forward/tproxy, который роутерный curl маскирует. exit 0=ок/1=сломан/2=инфра.
|
||||
- `/usr/local/bin/podkop-heal.sh` — `podkop stop; killall sing-box; rm cache.db; podkop start; **dnsmasq restart**; re-probe` (лок).
|
||||
dnsmasq restart ОБЯЗАТЕЛЕН — иначе старые FakeIP рассинхронятся (грабля 29.06).
|
||||
- `/usr/local/bin/podkop-selfcheck.sh` — **cron `*/5`**: probe; лечит после 2 провалов подряд (гистерезис).
|
||||
- **boot-self-heal** в `/etc/rc.local`: `( sleep 75; podkop-heal.sh ) &` — лечит гонку старта (sing-box раньше awg0) после ребута.
|
||||
|
||||
## Слой 2 — внешний сторож обхода (openclaw LXC137, cron `*/5`)
|
||||
- `/root/niikn-podkop-watchdog.sh` — SSH на роутер → `podkop-probe.sh` (проба с клиента). Если сломан и роутер сам не вылечил:
|
||||
лестница heal→reboot (гистерезис 2, cooldown 5мин, лимит ребутов 2/сутки) + алерт Олегу TG(Антошка)+email `support@dttb.ru`,
|
||||
дедуп + «отбой». Алертит ОТСЮДА, т.к. с коробки за обходом TG недостижим при сломанном обходе.
|
||||
|
||||
## Слой 3 — внешний мониторинг VPN-хаба (две точки)
|
||||
- `/root/finland-hub-watchdog.sh` на **LXC137** (cron `*/5`): TCP 443/9443 хаба `78.17.4.225`. Молчат → «хаб лёг (неоплата?)». TG+email.
|
||||
- `/root/hub-backup-watchdog.sh` на **HOSTKEY `151.241.234.241`** (другой провайдер, чистый EU-инет, cron `*/5`) — **truly-external**:
|
||||
(1) независимо проверяет тот же хаб (переживает падение дома); (2) **dead-man's switch** — curl `git.dttb.ru`; дом недоступен 2× →
|
||||
«дом/LXC137 лёг» (значит слои 1-2 могли замолчать). TG напрямую (токен `/root/.tg-alert.env`).
|
||||
NB: heartbeat LXC137→HOSTKEY:22 не сделать (egress LXC137 на фин. IP таймаутит) — поэтому HOSTKEY сам пингует дом.
|
||||
|
||||
## Контейнерный self-heal на хабе
|
||||
Уже есть до нас: все контейнеры `restart: always` + `watchtower` → при снятии блокировки/ребуте VM поднимаются сами.
|
||||
|
||||
## Чего НЕ покрывает
|
||||
Неоплата/выключение VM провайдером — самолечить нельзя (коробка не наша). Покрыто только алертом (слой 3, two-point).
|
||||
Reference in New Issue
Block a user