Настройка Xray на кинетике
1. Настройка сервера
Сначала надо настроить это на сервере. Вариантов много, я использовал сетап через клиент амнезии впн
В клиенте выбираем свой сервер, жмем на Прокотолы, выбираем Xray. Настройки были по дефолту, я не менял.
После этого на сервере запустится контейнер с названием amnezia-xray.
Сервер настроен, вы молодцы, всем спасибо!)
[в начало]
2. Получаем креды для подключения
Нужны данные для подключения клиентов. Для этого в приложении амнезии жмем на кнопку Поделиться(1), выбираем свой сервер(2), выбираем прокол Xray(3), формат подключения Xray native format(4), жмем кнопку Поделиться(5), и кнопку Показать настройки подключения(6).
Для нас будут интересны такие параметры в разделе outbounds
:
"address": "IP сервера", "port": порт сервера, "id": "ID сервера" "publicKey": "Публичный ключ сервера", "serverName": "сайт под который маскируемся", "shortId": "короткий id"
Запоминаем эти значения, записываем их, они нам еще понадобятся. В самом приложении амнезии этого клиента не будет видно, так как конфиг по факту общий.
[в начало]
3. Настройка кинетика
3.1. Установка и настройка sing-box
заходим в ентваре и выполняем:
opkg install sing-box-go iptables vi /opt/etc/sing-box/config.json
Использовал sing-box, есть в репозиториях так же родной xray, но его не пробовал, по конфигам не подскажу
Итак, у нас открылся файл config.json, нужно из него все удалить и вставить следующее
{ "log": { "level": "debug" }, "inbounds": [ { "type": "tun", "interface_name": "tun0", "domain_strategy": "ipv4_only", "inet4_address": "172.16.50.1/30", // Тут можно указать любой свободный адрес с маской /30 "auto_route": false, "strict_route": false, "sniff": true } ], "outbounds": [ { "type": "vless", "server": "IP сервера из переменной address", "server_port": Порт сервера из переменной port, "uuid": "ID сервера из перемиенной id", "flow": "xtls-rprx-vision", "tls": { "enabled": true, "server_name": "Сайт под который маскируемся из переменной serverName", "utls": { "enabled": true, "fingerprint": "chrome" }, "reality": { "enabled": true, "public_key": "Публичный ключ сервера из переменной publicKey", "short_id": "Короткий id из переменной shortId" } } } ], "route": { "auto_detect_interface": true } }
Изменяем параметры на свои, еще можно поменять inet4_address
на что-то свое
[в начало]
3.2. Настройка фаерволла
Так же нужно настроить фаерволл на кинетике для разрешения трафика в tun0
vi /opt/etc/ndm/netfilter.d/020-sing-box.sh
Если прошивка кинетика версии 4.2 и выше
#!/opt/bin/sh if [ "$table" = 'filter' ]; then if [ -z "$(iptables-save | grep tun+ | grep INPUT)" ]; then /opt/sbin/iptables -A INPUT -i tun+ -j ACCEPT fi if [ -z "$(iptables-save | grep tun+ | grep FORWARD)" ]; then /opt/sbin/iptables -A FORWARD -i tun+ -j ACCEPT /opt/sbin/iptables -A FORWARD -o tun+ -j ACCEPT fi fi
Если прошивка кинетика старее, чем 4.2
#!/opt/bin/sh if [ -z "$(iptables-save | grep tun+ | grep INPUT)" ]; then /opt/sbin/iptables -A INPUT -i tun+ -j ACCEPT fi if [ -z "$(iptables-save | grep tun+ | grep FORWARD)" ]; then /opt/sbin/iptables -A FORWARD -i tun+ -j ACCEPT /opt/sbin/iptables -A FORWARD -o tun+ -j ACCEPT fi
chmod +x /opt/etc/ndm/netfilter.d/020-sing-box.sh /opt/etc/ndm/netfilter.d/020-sing-box.sh /opt/etc/init.d/S99sing-box restart
[в начало]
4. Проверка
/opt/etc/init.d/S99sing-box check
должно сказать, что служба запущена
iptables-save | grep tun
должно вывести 3 строки, с одним INPUT и двумя FORWARD
curl --interface tun0 ifconfig.me
должно вывести ip адрес сервера, а не провайдера
Если все проверки пройдены, то можно переустановить Bird4Static, указав ему в качестве впн интерфейс tun0 как вариант.
Так же с помощью дополнительного скрипта можно в кинетике сделать Политику доступа, что бы устройства из нее всегда ходили через xray. Инструкция по этому способу лежит тут
За настройку самого sing-box поддержку не оказываю, так как сам в этих настройках разбираюсь слабо))
[в начало]
5. Дополнение
1. Что бы Ipset4Static нормально работал после перезапуска sing-box нужно в файл /opt/etc/init.d/S99sing-box добавить в самый конец код:
start_ipset(){ sleep 3 && sh /opt/etc/init.d/S03ipset-table restart } case "$1" in start | restart) start_ipset ;; *) ;; esac
2. Если Bird4Static после перезапуска роутера не заполняет 1021 таблицу и в впн ничего не направляет, то скорее всего поможет создание файла в /opt/etc/init.d/ с названием например S99-delay-restart-bird
#!/bin/sh sleep 30 /opt/etc/init.d/S70bird restart
chmod +x /opt/etc/init.d/S99-delay-restart-bird
Теперь, при запуске роутера, спустя 30 секунд будет выполнятся команда с перезапуском bird. Изначальная проблема в том, что sing-box стартует позже bird, и bird не видит интерфейс туннеля при запуске, и отбраковывает все машруты в впн
[в начало]