Skip to content

AlanForester/xray-ru-en

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xray Monitor & Control Panel

Веб-панель для мониторинга и управления Xray transparent proxy сервером.

License Python

Возможности

  • 📊 Мониторинг статуса - отслеживание работы Xray сервиса в реальном времени
  • 🌐 Управление маршрутами - добавление и удаление доменов в Direct routes через веб-интерфейс
  • 📝 Просмотр соединений - последние 30 соединений с автоматическим reverse DNS lookup
  • 🔍 DNS мониторинг - отслеживание DNS запросов от клиентов в сети
  • 🚀 Информация о выходах - отображение exit IP адресов для разных типов трафика

Архитектура

Панель предназначена для работы с Xray transparent proxy с многоуровневой маршрутизацией:

Home Server (Xray)
    ↓ VLESS+Reality
VPS Relay
    ├─ Shadowsocks → US Exit (для .com, .io)
    ├─ Shadowsocks → EU Exit (для остальных доменов)
    └─ Direct → для .ru доменов

Скриншоты

Главная страница:

  • Статус Xray сервиса
  • Exit IP информация
  • Список Direct маршрутов

Недавние соединения:

  • Время соединения
  • IP клиента
  • Назначение (IP + домен)
  • Тип маршрута (direct/vless)

DNS запросы:

  • Время запроса
  • Клиент
  • Запрошенный домен
  • Тип записи (A/AAAA)

Требования

  • Python 3.7+
  • Flask
  • Xray-core
  • dnsmasq (для DNS мониторинга)
  • systemd (для управления сервисами)

Установка

1. Установите зависимости

# Ubuntu/Debian
apt update
apt install -y python3 python3-pip

# Установите Flask
pip3 install flask

2. Скопируйте файл панели

# Скачайте xray-panel.py
wget https://raw.githubusercontent.com/AlanForester/xray-ru-en/main/xray-panel.py -O /root/xray-panel.py
chmod +x /root/xray-panel.py

3. Настройте панель

Отредактируйте xray-panel.py и замените placeholder'ы:

  • US_PROXY_IP - IP адрес вашего US Shadowsocks сервера
  • FR_PROXY_IP - IP адрес вашего EU/France Shadowsocks сервера
  • YOUR_ISP_IP - IP адрес вашего интернет-провайдера

4. Создайте systemd service

Создайте файл /etc/systemd/system/xray-panel.service:

[Unit]
Description=Веб-панель мониторинга Xray
After=network.target xray.service

[Service]
Type=simple
User=root
ExecStart=/usr/bin/python3 /root/xray-panel.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

5. Запустите панель

systemctl daemon-reload
systemctl enable xray-panel
systemctl start xray-panel

# Проверьте статус
systemctl status xray-panel

Использование

Доступ к панели

Откройте в браузере: http://YOUR_SERVER_IP:8080

Добавление домена в Direct

  1. В форме "Прямые маршруты" введите домен (например: example.com)
  2. Нажмите "Добавить в Direct"
  3. Xray автоматически перезапустится с новыми правилами
  4. Домен будет добавлен в routing rules с префиксом domain:

Удаление домена из Direct

  1. Найдите домен в списке "Прямые маршруты"
  2. Нажмите кнопку "Удалить"
  3. Подтвердите действие
  4. Xray автоматически перезапустится

Просмотр соединений

  • Таблица "Недавние соединения" показывает последние 30 уникальных соединений
  • Автоматический reverse DNS lookup для IP адресов
  • Цветовая индикация маршрутов:
    • 🟢 Зеленый - Direct (через ISP)
    • 🔵 Синий - VLESS (через VPS)

Мониторинг DNS

  • Таблица "DNS Запросы" показывает последние 50 DNS запросов
  • Требует настроенный dnsmasq с логированием
  • Фильтрует PTR запросы (in-addr.arpa)

Конфигурация

Xray Config

Панель работает с /etc/xray/config.json и ожидает следующую структуру routing rules:

{
  "routing": {
    "rules": [
      {
        "type": "field",
        "domain": [
          "domain:example.com",
          "domain:mysite.ru"
        ],
        "outboundTag": "direct"
      }
    ]
  }
}

Логи

Панель читает следующие файлы логов:

  • /var/log/xray/access.log - для соединений
  • /var/log/dnsmasq.log - для DNS запросов

Убедитесь, что в /etc/xray/config.json включено логирование:

{
  "log": {
    "access": "/var/log/xray/access.log",
    "loglevel": "warning"
  }
}

dnsmasq конфигурация

Для DNS мониторинга добавьте в /etc/dnsmasq.conf:

log-queries
log-facility=/var/log/dnsmasq.log

Безопасность

⚠️ Важно:

  • Панель запускается на 0.0.0.0:8080 без аутентификации
  • Рекомендуется ограничить доступ через firewall:
# Разрешить только из локальной сети
ufw allow from 192.168.1.0/24 to any port 8080
  • Или настройте reverse proxy с базовой аутентификацией (nginx, caddy)

Производительность

  • Reverse DNS lookup с LRU кэшем (1000 записей)
  • Timeout 0.2s для DNS запросов (предотвращает зависание)
  • Дедупликация соединений по ключу ip:port:route
  • Лимиты: 30 соединений, 50 DNS запросов

Устранение неполадок

Панель не запускается

# Проверьте логи
journalctl -u xray-panel -f

# Проверьте права на файлы
ls -la /root/xray-panel.py
chmod +x /root/xray-panel.py

Соединения не отображаются

# Проверьте что логи доступны
tail -f /var/log/xray/access.log

# Проверьте формат логов
# Ожидается: "2026/02/07 18:27:36.820039 from 192.168.1.132:50431 accepted tcp:5.28.195.2:443 [vless-atel]"

DNS запросы не отображаются

# Проверьте что dnsmasq логирует запросы
tail -f /var/log/dnsmasq.log | grep query

# Проверьте конфигурацию
cat /etc/dnsmasq.conf | grep log

Xray не перезапускается после изменений

# Проверьте права root пользователя
whoami  # должно быть: root

# Проверьте что systemctl работает
systemctl status xray

Разработка

Структура проекта

xray-panel/
├── xray-panel.py       # Основной файл приложения
└── README.md           # Документация

Функции

  • get_xray_status() - получение статуса сервиса через systemctl
  • get_direct_domains() - парсинг domain rules из xray config
  • get_recent_connections() - парсинг access.log с reverse DNS
  • get_dns_queries() - парсинг dnsmasq.log
  • add_domain_to_direct() - добавление домена в конфиг + restart
  • remove_domain_from_direct() - удаление домена из конфига + restart

HTML/CSS

Встроенный HTML шаблон с:

  • Адаптивной версткой
  • Цветовой индикацией маршрутов
  • JavaScript для AJAX удаления доменов
  • Автоматическая перезагрузка страницы после изменений

Roadmap

  • Добавить аутентификацию (basic auth / sessions)
  • Графики статистики трафика
  • Экспорт логов в CSV/JSON
  • WebSocket для real-time обновлений
  • Темная тема
  • API endpoints для автоматизации

Лицензия

MIT License - см. LICENSE файл

Автор

Создано для управления Xray transparent proxy с multi-exit архитектурой.

Ссылки

Поддержка

Если вы нашли баг или хотите предложить улучшение - создайте issue на GitHub.


Made with ❤️ for transparent proxy automation

About

Прозрачный прокси для всей домашней сети на базе Xray: настройка за один вечер

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages