Files
knowledge-base/snippets/niikn-podkop/README.md

38 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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).