#!/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 ""