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

date, type, tags
date type tags
2026-06-29 reference
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.shpodkop stop; killall sing-box; rm cache.db; podkop start; **dnsmasq restart**; re-probe (лок). dnsmasq restart ОБЯЗАТЕЛЕН — иначе старые FakeIP рассинхронятся (грабля 29.06).
  • /usr/local/bin/podkop-selfcheck.shcron */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).