Archived
184 lines
7.7 KiB
Markdown
184 lines
7.7 KiB
Markdown
# 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*, скрипт сам скачает этот файл, распарсит и будет использовать для маршрутизации. |