From 5835119097932949d49c3b74e9cca4f2124ba8b2 Mon Sep 17 00:00:00 2001 From: dttb Date: Mon, 29 Jun 2026 12:50:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D1=83=D0=B6=D0=B0=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=20podkop:=20=D0=B2=D0=BD=D0=B5=D0=B4=D1=80=D1=91=D0=BD?= =?UTF-8?q?=20=D0=BC=D0=BE=D0=BD=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3?= =?UTF-8?q?+=D0=B0=D0=B2=D1=82=D0=BE=D0=BB=D0=B5=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=E2=80=94=20boot-self-heal=20(rc.local)=20+=20watchdog?= =?UTF-8?q?=20LXC139=20(netns-=D0=BF=D1=80=D0=BE=D0=B1=D0=BD=D0=B8=D0=BA?= =?UTF-8?q?=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20SSH,=20restart=20podkop=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=BB=D0=B8=D0=BF=D0=B5)=20+?= =?UTF-8?q?=20=D0=B0=D0=BB=D0=B5=D1=80=D1=82=D1=8B=20TG(=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D0=BE=D1=88=D0=BA=D0=B0)+email;=20=D0=B1=D0=BE=D0=B5=D0=B2?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=82=D0=B5=D1=81=D1=82=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=B4=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- projects/buzharovo/podkop-router.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/projects/buzharovo/podkop-router.md b/projects/buzharovo/podkop-router.md index 461b66c..a19d45d 100644 --- a/projects/buzharovo/podkop-router.md +++ b/projects/buzharovo/podkop-router.md @@ -158,6 +158,25 @@ ip netns exec lanprobe curl -s -o/dev/null -w "%{http_code}\n" --resolve web.tel **Урок (для себя):** «роутер `curl`=200 + растут tproxy-счётчики» ≠ «обход у клиентов работает». Output-путь и forward/tproxy-путь — РАЗНЫЕ. Проверять обход только с позиции клиента (netns или реальный телефон), не с роутера. [[../../snippets/podkop-fakeip-diagnostics]] §3-5. +### 2026-06-29: Мониторинг + автолечение podkop (внедрено) +Чтобы залипание форварда не повторялось молча — автолечение на ребут + watchdog с алертами. + +**На роутере TR3000** (постоянно стоят `ip-full`+`kmod-veth`): +- `/usr/local/bin/podkop-probe.sh` — netns-«LAN-клиент» (192.168.1.242 на br-lan), резолвит telegram через `.1` → FakeIP, `curl --resolve` → ждёт HTTP 200. Тестирует именно forward/tproxy-путь. exit 0=OK / 1=сломан / 2=инфра. Лок не нужен. +- `/usr/local/bin/podkop-heal.sh` — `podkop stop; killall sing-box; rm cache.db; podkop start; dnsmasq restart; re-probe`. Лок `/tmp/.pkheal.lock` (от гонок). +- **Boot-self-heal:** `/etc/rc.local` → `( sleep 75; podkop-heal.sh ) &` (busybox cron НЕ умеет `@reboot`). Лечит гонку старта после каждого ребута. +- **Страховочный self-heal:** cron `*/15` `podkop-probe || podkop-heal` (на случай если LXC139 недоступна). crond enabled. + +**На LXC139 (severny-les)** — мозг алертинга (секреты не на удалённом роутере): +- `/usr/local/bin/podkop-watchdog.sh` + systemd-таймер `podkop-watchdog.timer` (`*/5`). По SSH (NetBird) дёргает `podkop-probe.sh` на роутере; при поломке — `podkop-heal.sh`, повторный пробник. +- Состояния `OK`/`DOWN`/`UNREACH` в `/var/lib/podkop-wd/state`, **антиспам** (алерт только при смене). Heal-нотис деду́плится 50 мин. +- **Алерты (оба канала):** Telegram через бота **Антошки** (`8020760639…`, username `maxim_dttb_bot`) → Олег `1292155421`; **email** через mailcow `mail.dttb.ru:587` (`admin@dttb.ru`) → `batlaew@gmail.com`. Конфиг/секреты: `/etc/podkop-wd.env` (chmod 600). +- Сообщения: 🔴 «обход не работает / роутер недоступен», ✅ «восстановлено / роутер на связи», ⚠️ «залипал — авто-вылечен». + +**Проверено боевым тестом 2026-06-29:** `podkop stop` на роутере → watchdog за ~17с поймал (пробник FAIL) → вылечил → пробник `200` → алерт TG+email ушёл, `state=OK`. Оба канала по отдельности тоже протестированы (доставка подтверждена). + +Минор: при рестарте podkop/dnsmasq в логах мелькает `udhcpc: no lease, failing` — DHCP-попытка на неосновном интерфейсе, WAN (`185.13.47.2`) не страдает; разобраться отдельно (косметика). + ## Установка на объекте — чеклист (выезд 2026-06-24, утро) TR3000 полностью преднастроен на столе. На объекте — физический своп со WR6500H + WAN провайдера.