94 lines
4.3 KiB
Bash
Executable File
94 lines
4.3 KiB
Bash
Executable File
#!/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 ""
|