fix: geo-тест корректно работает при активном kill switch

Прямой curl до ipinfo.io блокируется UFW (не-.ru трафик via wlp1s0
запрещён kill switch-ем — это штатное поведение). Теперь при недоступности
прямого IP тест проверяет маршрут ya.ru: ожидает DEV_DIRECT, а не amn0.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 20:37:06 +03:00
parent 2805ade773
commit 5599194d92

View File

@@ -79,16 +79,31 @@ check "ya.ru → НЕ через amn0 (прямо)" "wl[pi]" "ip route get $(dig
echo "" echo ""
echo "=== 7. Geo: внешние IP ===" echo "=== 7. Geo: внешние IP ==="
DEV_DIRECT=$(ip route show default 2>/dev/null | awk '/default/ {print $5; exit}') DEV_DIRECT=$(ip route show default 2>/dev/null | awk '/default/ {print $5; exit}')
ip_direct=$(curl -s --interface "$DEV_DIRECT" --max-time 10 https://ipinfo.io/ip 2>/dev/null)
ip_vpn=$(curl -s --max-time 10 https://ipinfo.io/ip 2>/dev/null) ip_vpn=$(curl -s --max-time 10 https://ipinfo.io/ip 2>/dev/null)
echo " Прямой IP (через ${DEV_DIRECT:-?}): ${ip_direct:-недоступно}" ip_direct=$(curl -s --interface "$DEV_DIRECT" --max-time 5 https://ipinfo.io/ip 2>/dev/null)
echo " VPN IP (через amn0): ${ip_vpn:-недоступно}" echo " VPN IP (через amn0): ${ip_vpn:-недоступно}"
if [ -n "$ip_direct" ] && [ -n "$ip_vpn" ] && [ "$ip_direct" != "$ip_vpn" ]; then if [ -n "$ip_direct" ]; then
echo -e " ${GRN}${CLR} IP разные — .ru идёт напрямую, остальное через VPN" echo " Прямой IP (через ${DEV_DIRECT:-?}): $ip_direct"
pass=$((pass+1)) if [ "$ip_direct" != "$ip_vpn" ]; then
echo -e " ${GRN}${CLR} IP разные — .ru идёт напрямую, остальное через VPN"
pass=$((pass+1))
else
echo -e " ${YEL}!${CLR} IP одинаковые — проверь маршрутизацию"
fail=$((fail+1))
fi
else else
echo -e " ${YEL}!${CLR} IP одинаковые или недоступны — проверь маршрутизацию" # Kill switch блокирует прямой доступ к ipinfo.io (не-.ru IP) — это штатное поведение.
fail=$((fail+1)) # Вместо этого проверяем что ya.ru маршрутизируется через прямой интерфейс.
ya_ip=$(dig +short ya.ru A 2>/dev/null | head -1)
ya_dev=$(ip route get "$ya_ip" 2>/dev/null | awk '/dev/ {for(i=1;i<=NF;i++) if ($i=="dev") {print $(i+1); exit}}')
echo " Прямой IP: недоступен (UFW kill switch блокирует не-.ru трафик через ${DEV_DIRECT:-?})"
if [ "$ya_dev" = "$DEV_DIRECT" ]; then
echo -e " ${GRN}${CLR} .ru (ya.ru $ya_ip) → $ya_dev (напрямую, не через VPN)"
pass=$((pass+1))
else
echo -e " ${YEL}!${CLR} .ru (ya.ru $ya_ip) → ${ya_dev:-?} (ожидался $DEV_DIRECT)"
fail=$((fail+1))
fi
fi fi
echo "" echo ""