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), после перезагрузки интерфейс может смениться (ens18 → eth0 и т.п.).
Скрипт заранее сохраняет список интерфейсов в network-ifaces.dump.
- Открыть консоль Proxmox/VM.
- Найти актуальное имя интерфейса (
ip a). - Обновить
/etc/network/interfaces. - Применить:
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.dat— IP-диапазоны по странамgeosite.dat— доменные группы (Google, Ads, Telegram и др.)
Также поддерживаются альтернативные источники (AntiFilter, zkeen и др.).
При установке создаётся и настраивается скрипт:
/opt/xray/tools/xray-dat-update.shОн:
- проверяет наличие обновлений по
ETagиSHA256, - скачивает и сохраняет
.dat-файлы, - валидирует и перезапускает службу
xrayпри необходимости.
Для автоматического запуска используется 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Проверь, что у системы есть активный 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-iptablesиxrayактивны:systemctl status xray xray-iptables
-
Проверьте логи Xray (например, DNS-запросы или outbound):
journalctl -u xray -e
-
Используйте сайт https://ipleak.net с устройства, чей трафик маршрутизируется через шлюз.
Просто остановите службу:
sudo systemctl stop xrayТрафик начнёт дропаться, если включена fallback-цепочка XRAY_DISABLED.
Если хотите разрешить трафик в обход Xray, временно отключите xray-iptables:
sudo systemctl stop xray-iptablessudo /opt/xray/tools/xray-dat-update.shЕсли базы не изменились — они не будут перезаписаны.
Открой cron:
crontab -eИ удалите строку, начинающуюся с /opt/xray/tools/xray-dat-update.sh.
Проект использует или интегрирует данные из следующих репозиториев:
Warning
Данный проект предоставляется исключительно в научно-исследовательских, технических и некоммерческих целях.
Коммерческое использование запрещено.
Автор не несёт ответственности за любое противоправное или недобросовестное использование данного программного обеспечения.
Если вы не согласны с этими условиями, немедленно удалите все материалы, полученные из данного репозитория, со своих устройств.
- 🔐 Тип лицензии: 📄 Custom Research License — лицензия для личного и исследовательского использования
- ⚠ Ограничения: запрещено использовать в коммерческих продуктах, облачных сервисах, VPN и иных платных решениях
- 🛠 Ответственность: полная ответственность за соблюдение законодательства лежит на пользователе
- 📬 Обратная связь: предложения и вопросы — через Issues на GitHub