niikn: самовосстановление обхода (netns-probe+heal+boot-self-heal на OpenWrt, watchdog LXC137) + внешний бэкап-сторож на HOSTKEY (dead-man's switch); скрипты в snippets/niikn-podkop

This commit is contained in:
dttb
2026-06-29 23:56:17 +03:00
parent cabcd11e0c
commit 5b2ffaf033
8 changed files with 254 additions and 2 deletions

View File

@@ -0,0 +1,26 @@
#!/bin/sh
# podkop-probe.sh (NIIKN OpenWrt 192.168.1.50) — проба обхода ИЗ-ЗА КЛИЕНТА.
# netns-«LAN-клиент» на br-lan: трафик идёт client→MikroTik(.1)→OpenWrt-tproxy, как у реального ПК —
# в отличие от роутерного curl (output-путь), который маскирует залип forward/tproxy.
# exit 0 = обход у клиентов работает; 1 = сломан (повод лечить); 2 = инфра (не повод лечить podkop).
NS=pkprobe; GW=192.168.1.1; DNS=192.168.1.50; CIP=192.168.1.242
cleanup(){ ip netns del $NS 2>/dev/null; ip link del veth-h 2>/dev/null; }
cleanup
ip link add veth-h type veth peer name veth-p 2>/dev/null || exit 2
ip netns add $NS 2>/dev/null || { cleanup; exit 2; }
ip link set veth-p netns $NS
ip link set veth-h master br-lan; ip link set veth-h up
ip netns exec $NS ip link set lo up
ip netns exec $NS ip link set veth-p up
ip netns exec $NS ip addr add $CIP/24 dev veth-p
ip netns exec $NS ip route add default via $GW
FIP=$(ip netns exec $NS nslookup web.telegram.org $DNS 2>/dev/null | awk '/^Address[ :]/{a=$NF} END{print a}')
case "$FIP" in
198.1[89].*) : ;; # домен заворачивается в туннель — ок
"") cleanup; exit 2 ;; # DNS молчит — инфра
*) cleanup; exit 1 ;; # не FakeIP — списки/FakeIP сломаны
esac
CODE=$(ip netns exec $NS curl -s -o /dev/null -w '%{http_code}' --resolve web.telegram.org:443:"$FIP" --max-time 8 https://web.telegram.org/ 2>/dev/null)
cleanup
[ "$CODE" = "200" ] || [ "$CODE" = "302" ] && exit 0
exit 1