Skip to content

Torotin/xray-gateway-installer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Last Commit

Debian Xray-core XKeen (Skrill0) XKeen (Corvus-Malus) AntiFilter-IP AntiFilter-Domains zkeen-ip zkeen-domains v2fly geoip v2fly geosite AntiZapret RunetFreedom GeoIP RunetFreedom Geosite

Xray Gateway Installer

Xray Gateway Installer — это автоматизированный установщик клиента Xray-core с полной маршрутизацией всего исходящего трафика через прокси на основе iptables и TProxy.

Создан для простого развёртывания на Debian 12+ в роли шлюза, с максимальной автоматизацией и надёжной обработкой сетевых сценариев, включая исключения, fallback-режим и защиту от сбоев сети.

Для чего нужен?

Проект предназначен для:

  • организации прозрачного туннелирования всего трафика через V2Ray/Xray,
  • использования шлюза в локальной сети или на виртуальной машине (например, Proxmox),
  • автоматического применения правил с изоляцией от ручной настройки сети и iptables.

Основные возможности

  • Установка Xray-core в /opt/xray, запуск от пользователя xray:xray.

  • Автоматическая генерация systemd unit-файлов (xray.service, xray-iptables.service).

  • TProxy-маршрутизация для UDP, REDIRECT для TCP, с поддержкой fwmark, ip rule, ip route.

  • Полная маршрутизация трафика через Xray:

    • с автоматическим определением интерфейсов,
    • с исключениями по IP, CIDR, портам,
    • с автозащитой локальных подсетей.
  • Fallback-цепочка XRAY_DISABLED (DROP), если Xray отключён.

  • Обновление GRUB, sysctl, включение IP Forward, модули ядра xt_TPROXY, nf_tproxy_core.

  • Создание административного пользователя с SSH-ключом (опционально).

  • Цветной лог, проверка ошибок, диагностика шагов.

  • Генерация дампа текущих интерфейсов на случай потери сети.

Быстрый старт

Установка

git clone https://github.com/Torotin/xray-gateway-installer.git
cd xray-gateway-installer
chmod +x ./install.sh
sudo ./install.sh

💡 В процессе скрипт автоматически:

  • создаст пользователя xray;
  • установит бинарник Xray в /opt/xray;
  • создаст конфиги и логи;
  • применит системные настройки (GRUB, sysctl);
  • активирует маршрутизацию через iptables и TProxy;
  • установит все необходимые зависимости.

Проверка работы

После установки проверь, что службы работают:

systemctl status xray
systemctl status xray-iptables

🛠 Конфиги

Все json-конфигурации Xray находятся в:

/opt/xray/configs/*.json

После редактирования конфигов — обязательно перезапусти службу:

sudo systemctl restart xray

🛑 Исключения из маршрутизации

Файлы для исключений:

  • xray-exclude-iptables.cidrs — подсети
  • xray-exclude-iptables.ips — IP-адреса
  • xray-exclude-iptables.ports — порты

После изменения:

sudo /opt/xray/iptables/xray-iptables.sh restart

❗️ Изменение имени интерфейса после перезагрузки

При изменении параметров GRUB (например, отключении predictable interface names), после перезагрузки интерфейс может смениться (ens18eth0 и т.п.).

Скрипт заранее сохраняет список интерфейсов в network-ifaces.dump.

Восстановление сети:

  1. Открыть консоль Proxmox/VM.
  2. Найти актуальное имя интерфейса (ip a).
  3. Обновить /etc/network/interfaces.
  4. Применить: systemctl restart networking.

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

xray-gateway-installer/
├── install.sh                       # Главный установочный скрипт
├── lib/                             # Модули (по этапам установки)
│   ├── 01_common.sh                 # Общие функции (права, окружение)
│   ├── 02_network.sh                # Обнаружение интерфейсов, дамп сети
│   ├── 03_grub.sh                   # Обновление параметров загрузки
│   ├── 04_admin_user.sh             # Создание администратора и SSH-ключа
│   ├── 05_sysctl.sh                 # Настройка sysctl и ip_forward
│   ├── 06_xray_core.sh              # Установка Xray-core и systemd unit
│   └── 07_xray_iptables.sh          # Настройка iptables, TProxy, systemd
├── network-ifaces.dump              # Дамп текущих сетевых интерфейсов перед изменениями
└── template/
    ├── xray-iptables.template.sh    # Шаблон скрипта xray-iptables
    └── xray-dat-update.template.sh  # Шаблон скрипта xray-dat-update

🌍 Обновление GeoIP/GeoSite баз

Скрипт поддерживает автоматическое обновление баз:

  • geoip.dat — IP-диапазоны по странам
  • geosite.dat — доменные группы (Google, Ads, Telegram и др.)

Также поддерживаются альтернативные источники (AntiFilter, zkeen и др.).

🛠 Автоматическая настройка

При установке создаётся и настраивается скрипт:

/opt/xray/tools/xray-dat-update.sh

Он:

  • проверяет наличие обновлений по ETag и SHA256,
  • скачивает и сохраняет .dat-файлы,
  • валидирует и перезапускает службу xray при необходимости.

🔁 Добавление в cron

Для автоматического запуска используется cron. При первом запуске предлагается выбрать:

sudo /opt/xray/tools/xray-dat-update.sh -ci

Скрипт предложит:

  • день недели,
  • ежедневный режим,
  • отключение расписания.

Можно изменить расписание позже через:

crontab -e

Пример строки в cron (ежедневно в 04:00):

0 4 * * * /opt/xray/tools/xray-dat-update.sh >> /opt/xray/logs/xray-dat-update.log 2>&1

📦 Источники поддерживаемых баз

Название Тип Источник
geoip_v2fly.dat geoip v2fly
geosite_v2fly.dat geosite v2fly
geoip_antifilter.dat geoip AntiFilter-IP
geosite_antifilter.dat geosite AntiFilter-Domains
geoip_zkeen.dat geoip zkeen-ip
geosite_zkeengeo.dat geosite zkeen-domains
geoip_antizapret.dat geoip AntiZapret
geosite_antizapret.dat geosite AntiZapret
geoip_russia-blocked.dat geoip RunetFreedom
geosite_russia-blocked.dat geosite RunetFreedom

📖 FAQ

❓ Скрипт завис на определении интерфейса, что делать?

Проверь, что у системы есть активный IPv4-интерфейс. Если присутствует только IPv6 — автоматическое определение может завершиться неудачей.

ip -o -4 addr show scope global

Также проверь конфигурацию сети:

cat /etc/network/interfaces

Пример корректной настройки:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Убедись, что:

  • интерфейс указан верно (auto eth0, iface eth0 inet dhcp);
  • интерфейс поднят (ip link show eth0 → state UP);
  • в /etc/network/interfaces нет конфликтующих записей.

Если интерфейс не определяется автоматически, можно временно задать его вручную перед запуском установки:

export LAN_IF="eth0"

Затем перезапусти install.sh.


❓ Как проверить, что весь трафик действительно проходит через Xray?

  1. Убедитесь, что xray-iptables и xray активны:

    systemctl status xray xray-iptables
  2. Проверьте логи Xray (например, DNS-запросы или outbound):

    journalctl -u xray -e
  3. Используйте сайт https://ipleak.net с устройства, чей трафик маршрутизируется через шлюз.


❓ Как полностью отключить маршрутизацию через Xray?

Просто остановите службу:

sudo systemctl stop xray

Трафик начнёт дропаться, если включена fallback-цепочка XRAY_DISABLED.

Если хотите разрешить трафик в обход Xray, временно отключите xray-iptables:

sudo systemctl stop xray-iptables

❓ Как вручную обновить базы geoip.dat и geosite.dat?

sudo /opt/xray/tools/xray-dat-update.sh

Если базы не изменились — они не будут перезаписаны.


❓ Как отключить автоматическое обновление GeoIP/GeoSite?

Открой cron:

crontab -e

И удалите строку, начинающуюся с /opt/xray/tools/xray-dat-update.sh.

🔗 Связанные проекты и источники

Проект использует или интегрирует данные из следующих репозиториев:

Название проекта Назначение Проект (ссылка) Последний коммит
Xray-core Основной прокси-движок (VLESS, VMess, Trojan и др.) Xray-core last
XKeen (от Skrill0) Скрипты маршрутизации с TProxy, inspiration source XKeen last
XKeen (от Corvus-Malus) Форк XKeen с расширенной логикой XKeen last
AntiFilter-IP GeoIP-база от AntiFilter AF-IP last
AntiFilter-Domains Geosite-база от AntiFilter AF-Domains last
zkeen-ip zkeen GeoIP-база zkeen-ip last
zkeen-domains zkeen GeoSite-база zkeen-domains last
v2fly geoip Официальная GeoIP-база v2fly-geoip last
v2fly domain-list-community Официальная GeoSite v2fly-dlc last
AntiZapret (sing-box) GeoIP/Geosite-базы .db AntiZapret antizapret last
RunetFreedom: GeoIP Официальный источник российских GeoIP файлов для v2rayN rf-geoip last
RunetFreedom: Geosite Официальный источник российских Geosite файлов для v2rayN rf-geosite last

🧬 Лицензия и поддержка

Warning

Данный проект предоставляется исключительно в научно-исследовательских, технических и некоммерческих целях.

Коммерческое использование запрещено.

Автор не несёт ответственности за любое противоправное или недобросовестное использование данного программного обеспечения.

Если вы не согласны с этими условиями, немедленно удалите все материалы, полученные из данного репозитория, со своих устройств.


  • 🔐 Тип лицензии: 📄 Custom Research License — лицензия для личного и исследовательского использования
  • Ограничения: запрещено использовать в коммерческих продуктах, облачных сервисах, VPN и иных платных решениях
  • 🛠 Ответственность: полная ответственность за соблюдение законодательства лежит на пользователе
  • 📬 Обратная связь: предложения и вопросы — через Issues на GitHub

About

Автоматическая установка Xray-core в режиме прозрачного шлюза (TProxy/Redirect) на базе Debian.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages