From 5599194d92677baa6838fad6285bd66aa7ef29f4 Mon Sep 17 00:00:00 2001 From: vitaly Date: Sun, 7 Jun 2026 20:37:06 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20geo-=D1=82=D0=B5=D1=81=D1=82=20=D0=BA?= =?UTF-8?q?=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D0=BE=D0=BC=20kill=20switc?= =?UTF-8?q?h?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Прямой curl до ipinfo.io блокируется UFW (не-.ru трафик via wlp1s0 запрещён kill switch-ем — это штатное поведение). Теперь при недоступности прямого IP тест проверяет маршрут ya.ru: ожидает DEV_DIRECT, а не amn0. Co-Authored-By: Claude Sonnet 4.6 --- tests/test_network.sh | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/tests/test_network.sh b/tests/test_network.sh index c845224..0956e60 100644 --- a/tests/test_network.sh +++ b/tests/test_network.sh @@ -79,16 +79,31 @@ check "ya.ru → НЕ через amn0 (прямо)" "wl[pi]" "ip route get $(dig echo "" echo "=== 7. Geo: внешние IP ===" 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) -echo " Прямой IP (через ${DEV_DIRECT:-?}): ${ip_direct:-недоступно}" -echo " VPN IP (через amn0): ${ip_vpn:-недоступно}" -if [ -n "$ip_direct" ] && [ -n "$ip_vpn" ] && [ "$ip_direct" != "$ip_vpn" ]; then - echo -e " ${GRN}✓${CLR} IP разные — .ru идёт напрямую, остальное через VPN" - pass=$((pass+1)) +ip_direct=$(curl -s --interface "$DEV_DIRECT" --max-time 5 https://ipinfo.io/ip 2>/dev/null) +echo " VPN IP (через amn0): ${ip_vpn:-недоступно}" +if [ -n "$ip_direct" ]; then + echo " Прямой IP (через ${DEV_DIRECT:-?}): $ip_direct" + 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 - echo -e " ${YEL}!${CLR} IP одинаковые или недоступны — проверь маршрутизацию" - fail=$((fail+1)) + # Kill switch блокирует прямой доступ к ipinfo.io (не-.ru IP) — это штатное поведение. + # Вместо этого проверяем что 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 echo ""