From 7c8b3a7147049d11da0479d95554eef93765c9a0 Mon Sep 17 00:00:00 2001 From: vitaly Date: Sun, 7 Jun 2026 20:14:54 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20issue=20#4=20=E2=80=94=20geo-=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=20=D0=B2=D0=BD=D0=B5=D1=88=D0=BD=D0=B8=D1=85?= =?UTF-8?q?=20IP=20=D0=B2=20test=5Fnetwork.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен блок «7. Geo: внешние IP» — curl через прямой интерфейс и через дефолт (VPN). Показывает оба IP и проверяет что они разные. Co-Authored-By: Claude Sonnet 4.6 --- tests/test_network.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_network.sh b/tests/test_network.sh index 400f9df..c845224 100644 --- a/tests/test_network.sh +++ b/tests/test_network.sh @@ -76,6 +76,21 @@ echo "=== 6. Краевые случаи ===" check "api.anthropic.com → amn0" "amn0" "ip route get $(dig +short api.anthropic.com A | head -1) 2>/dev/null" check "ya.ru → НЕ через amn0 (прямо)" "wl[pi]" "ip route get $(dig +short ya.ru A | head -1) 2>/dev/null" +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)) +else + echo -e " ${YEL}!${CLR} IP одинаковые или недоступны — проверь маршрутизацию" + fail=$((fail+1)) +fi + echo "" echo "=========================================" echo -e "Итого: ${GRN}$pass пройдено${CLR}, ${RED}$fail провалено${CLR}"