#!/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