This repository has been archived on 2026-04-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files

184 lines
7.7 KiB
Markdown
Raw Permalink Normal View History

2026-04-04 13:25:49 +04:00
# Xray-config
**Xray-config** - это набор скриптов для автоматизации маршрутизации.
## Зависимости
Для работы tproxy необходимо установить соответствующие пакеты:
```sh
opkg update && opkg install kmod-nf-tproxy kmod-nft-tproxy git curl
```
Также необходимо установить полную версию dnsmasq:
```sh
cd /tmp
opkg update
opkg download dnsmasq-full
opkg remove dnsmasq
opkg install ./dnsmasq-full_*.ipk
rm ./dnsmasq-full_*.ipk
```
После чего ставим сам xray:
```sh
opkg update && opkg install xray-core
```
## Настройки среды
Скрипт */etc/xray/common/check.sh*, который запускается с *startup.sh* и *update.sh* сам подготавливает окружение и создаёт директории:
- */var/log/xray* и добавляет в *rc.local*
- */etc/dnsmasq.d* и добавляет *option confdir* в *config/dhcp*
## Добавление rsa-ключа в Gitea
1. Подключаемся по ssh к OpenWrt и генерируем rsa-ключ длиной 4096 бит:
```sh
mkdir ~/.ssh
chmod 600 ~/.ssh
ssh-keygen -f ~/.ssh/id_dropbear -t rsa -s 4096
```
2. Копируем публичную часть ключа, которую можно посмотреть, выполнив следующую команду:
```sh
cat ~/.ssh/id_dropbear.pub
```
3. В Gitea переходим в *Настрйки -> Ключи SSH / GPG* ([Ключи SSH / GPG](https://gitea.oyacoi.ru/user/settings/keys))
4. Нажимаем **Добавить ключ** и в *Содержимое* добавляем ранее скопированную публичную часть ключа
5. Сохраняем, после чего можно клонировать репозиторий по SSH (посмотреть ссылку SSH для прокета можно нажав на *Код -> SSH* внутри репозитория)
## Установка
- Клонируем проект в */opt*:
```sh
mkdir /opt
cd /opt
git clone gitea@gitea.lan:pyrschtjag/xray-config.git
```
- Удяляем дефолтный конфиг и initd-сервис:
```sh
rm /etc/config/xray
rm /etc/init.d/xray
```
- Создаём симлинки:
* */etc/xray/common* -> */opt/xray-config/etc/xray/common*
* */etc/xray/config* -> */opt/xray-config/etc/xray/config*
* */etc/xray/main* -> */opt/xray-config/etc/xray/main*
* */etc/init.d/xray* -> */opt/xray-config/etc/init.d/xray*
* */etc/config/xray* -> */opt/xray-config/etc/config/xray*
```sh
ln -s /opt/xray-config/etc/init.d/xray /etc/init.d/xray
ln -s /opt/xray-config/etc/config/xray /etc/config/xray
ln -s /opt/xray-config/etc/xray/common /etc/xray/common
ln -s /opt/xray-config/etc/xray/config /etc/xray/config
ln -s /opt/xray-config/etc/xray/main /etc/xray/main
```
- Копируем *outbounds.jsonc-example* в *outbounds.jsonc* в */etc/xray/config*:
```sh
cp /etc/xray/config/outbounds.jsonc-example /etc/xray/config/outbounds.jsonc
```
- Указываем свой id в конфиге */etc/xray/config/outbounds.jsonc*
* Если используется сервер, **отличный** от vector, тогда пишем **свой** конфиг *outbounds*
## Использование
- При первом запуске достаточно запустить обновление списков маршрутов:
```sh
sh /etc/xray/main/update.sh
```
- В дальнейшем пользоваться через основной сервис xray:
```sh
service xray stop|start|restart
```
## Описание
Скрипт автообновления маршрутов: */etc/xray/main/update.sh*
По деофлту для маршрутизации используются списки ip-диапазонов:
- [Re:filter](https://github.com/1andrevich/Re-filter-lists/tree/main)
- [cdn_ip_ranges](https://github.com/123jjck/cdn-ip-ranges)
- [domain-list-community](https://github.com/v2fly/domain-list-community)
При запуске xray будет автоматически создана таблица xray с правилами и маршрутами, а также подготовлены сами маршруты.
*/etc/xray/ipset* - содержит списки для маршрутизации.
Пользовательские адреса задаются в файлах:
- */etc/xray/ipset/ip_user.lst*
- */etc/xray/ipset/domain_user.lst*
Для исключений используются файлы:
- */etc/xray/ipset/xray_ip_user_whitelist.lst*
- */etc/xray/ipset/xray_domain_user_whitelist.lst*
Каждая запись в списках (как для доменов, так и для подсетей) **должна начинаться с новый строки**.
Синтаксис для *xray_ip_user_whitelist.lst* (и для других списков с подсетями) выглядит следующим образом:
- x.x.x.x
- x.x.x.x/mask
Скрипт автоматически добавляет:
- Суффикс *xray_domain_* или *xray_ip_* в зависимости от типа списка
- Постфикс *_whitelist* если список находится в *xray_domain_whitelist* или *xray_ip_whitelist*
- Расширение *.lst*
Если необходимо добавить свои списки доменов или подсетей и разнести их по нескольким файлам, то необходимо придерживаться следующих правил для нейминга файлов:
- *xray_ip_user_LISTNAME.lst* - пользовательский спикок url с подсетями для маршрутизации в прокси
- *xray_ip_user_LISTNAME_whitelist.lst* - пользовательский белый список url с подсетями для маршрутизации в обход прокси
- *xray_domain_user_LISTNAME.lst* - пользовательский спикок url с доменами для маршрутизации в прокси
- *xray_domain_user_LISTNAME_whitelist.lst* - пользовательский белый список url с доменами для маршрутизации в обход прокси
Каждый запуск обновления **удаляет** предыдущие списки, не относящиеся к *user*.
Скрипт автообновления списков можно добавить в cron:
```cron
0 5 * * 0 sh /etc/xray/main/update.sh
```
## Добавление своих url со списками
Чтобы добавить готовый список адресов, достаточно добавить ссылки на raw-файл в следующие массивы:
- **xray_ip** - спикок url с подсетями для маршрутизации в прокси
- **xray_ip_whitelist** - белый список url с подсетями для маршрутизации в обход прокси
- **xray_domain** - спикок url с доменами для маршрутизации в прокси
- **xray_domain_whitelist** - белый список url с доменами для маршрутизации в обход прокси
Пример */etc/xray/main/update.sh*:
```sh
xray_ip="
https://raw.link_ip1.lst
https://raw.link_ip2.txt
"
xray_ip_whitelist=""
xray_domain="
https://raw.link_domain1.lst
https://raw.link_domain2.txt
"
xray_domain_whitelist="
https://raw.link_domain3.lst
"
```
После чего при запуске *update.sh*, скрипт сам скачает этот файл, распарсит и будет использовать для маршрутизации.