Files
wiki/tasks/ha/proxy-vm/check.sh
2026-04-12 21:55:33 +03:00

94 lines
4.3 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# check.sh — Проверка работоспособности прокси
set -euo pipefail
GREEN='\033[0;32m'; RED='\033[0;31m'; YELLOW='\033[1;33m'; NC='\033[0m'
ok() { echo -e " ${GREEN}${NC} $*"; }
fail() { echo -e " ${RED}${NC} $*"; }
info() { echo -e "${YELLOW}»${NC} $*"; }
HTTP_PROXY="http://127.0.0.1:8888"
SOCKS_PROXY="socks5://127.0.0.1:1080"
echo ""
info "════════════════════════════════════════"
info " Proxy VM — проверка работоспособности"
info "════════════════════════════════════════"
echo ""
### ── 1. Xray сервис ────────────────────────────────────────────────────────
info "1. Статус сервиса Xray..."
if systemctl is-active --quiet xray 2>/dev/null; then
ok "xray.service активен"
else
fail "xray.service НЕ активен"
fi
### ── 2. Порты слушают ──────────────────────────────────────────────────────
info "2. Проверка портов..."
for PORT in 8888 1080 12345; do
if ss -tlnup 2>/dev/null | grep -q ":${PORT} " || \
ss -ulnup 2>/dev/null | grep -q ":${PORT} "; then
ok "Порт $PORT слушает"
else
fail "Порт $PORT НЕ слушает"
fi
done
### ── 3. HTTP прокси ─────────────────────────────────────────────────────────
info "3. HTTP прокси → api.telegram.org..."
if curl -s -o /dev/null -w "%{http_code}" \
--proxy "$HTTP_PROXY" \
--max-time 10 \
"https://api.telegram.org" | grep -qE "^[23]"; then
ok "api.telegram.org доступен через HTTP прокси"
else
fail "api.telegram.org НЕ доступен через HTTP прокси"
fi
info "4. HTTP прокси → youtube.com..."
if curl -s -o /dev/null -w "%{http_code}" \
--proxy "$HTTP_PROXY" \
--max-time 10 \
"https://www.youtube.com" | grep -qE "^[23]"; then
ok "youtube.com доступен через HTTP прокси"
else
fail "youtube.com НЕ доступен через HTTP прокси"
fi
### ── 4. SOCKS5 прокси ──────────────────────────────────────────────────────
info "5. SOCKS5 → api.telegram.org..."
if curl -s -o /dev/null -w "%{http_code}" \
--proxy "$SOCKS_PROXY" \
--max-time 10 \
"https://api.telegram.org" | grep -qE "^[23]"; then
ok "api.telegram.org доступен через SOCKS5"
else
fail "api.telegram.org НЕ доступен через SOCKS5"
fi
### ── 5. IP за прокси ────────────────────────────────────────────────────────
info "6. Внешний IP через прокси..."
EXT_IP=$(curl -s --proxy "$HTTP_PROXY" --max-time 10 "https://api.ipify.org" 2>/dev/null || echo "ошибка")
LOCAL_IP=$(curl -s --max-time 5 "https://api.ipify.org" 2>/dev/null || echo "ошибка")
echo " Прямой IP: $LOCAL_IP"
echo " Через прокси: $EXT_IP"
if [[ "$EXT_IP" != "$LOCAL_IP" && "$EXT_IP" != "ошибка" ]]; then
ok "IP отличается — трафик идёт через прокси"
else
fail "IP совпадает или ошибка — возможно прокси не работает"
fi
### ── 6. IP forwarding ──────────────────────────────────────────────────────
info "7. IP forwarding..."
FWD=$(cat /proc/sys/net/ipv4/ip_forward)
if [[ "$FWD" == "1" ]]; then
ok "IP forwarding включён"
else
fail "IP forwarding выключен!"
fi
echo ""
info "Проверка завершена."
echo ""