Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 (edited) 55 минут назад, The_Same сказал: Всем добрый вечер, добрался до роутера. В первую очередь, огромное спасибо @Skrill0 за проделанную работу! Касательно тестов, с redirect скорость через proxy такая: Скорость через direct такая: Тестировал специально до европейских серверов, ибо большинство проксируемых ресурсов для моих задач находятся в европе. П.С. Обязательно попозже скину на кофе с тортиком😜 Благодарю) В дополнение ко всему на данном этапе можно попробовать сменить на сервере и в outbounds параметр flow xtls-rprx-vision на xtls-rprx-vision-udp443 Edited September 26, 2023 by Skrill0 1 Quote Link to comment Share on other sites More sharing options...
bigpu Posted September 26, 2023 Share Posted September 26, 2023 20 минут назад, The_Same сказал: Касательно тестов, с redirect скорость через proxy такая да понятно, что с KN-1811 и его arm все будет неплохо) На 7621 уже хуже, на малышах - 7628 как будет, если вообще будет, хрен его) 22 минуты назад, The_Same сказал: Обязательно попозже скину на кофе с тортиком тортом тут пахло изначально, при любом раскладе, девушка, и такое запилить👍 1 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 24 минуты назад, Skrill0 сказал: Благодарю) В дополнение ко всему на данном этапе можно сменить на сервере и в outbounds параметр flow xtls-rprx-vision на xtls-rprx-vision-udp443 Какой в этом практический смысл? Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 15 минут назад, The_Same сказал: Какой в этом практический смысл? Почитал документацию, в принципе понятно. Но, разработчики говорят указать на клиенте xtls-rprx-vision-udp443, а на стороне сервера не менять, если я правильно понял. Цитата If you do not need to block it, please fill in xtls-rprx-*-udp443 on the client side and do not change the server side. Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 (edited) 24 минуты назад, The_Same сказал: Какой в этом практический смысл? Согласно китайским товарищам в чате Telegram, немного меняет логику обработки UDP в режиме мультиплексирования на 443 порту сервера и допускает обработку Quic | http.3. Для mux нужно будет также сменить "xudpProxyUDP443": "reject" на "xudpProxyUDP443": "allow". Flow также можно менять только на стороне клиента. На стороне сервера следует менять только в редких случаях. Пример секции mux в клиентской части Скрытый текст "mux": { "enabled": true, "concurrency": -1, "http3", "concurrency": -1, "xudpConcurrency". "xudpConcurrency": 16, "xudpProxyUDP". "xudpProxyUDP443": "allow" } Более детального описания, к сожалению, нет. Тесты также еще в пути. В общем, можно попробовать) Edited September 26, 2023 by Skrill0 1 2 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 4 минуты назад, Skrill0 сказал: Согласно китайским товарищам в чате Telegram, немного меняет логику обработки UDP в режиме мультиплексирования на 443 порту сервера и допускает обработку Quic. Более детального описания, к сожалению, нет. Тесты также еще в пути. В общем, можно попробовать) Все-таки, согласно документации, параметр xtls-rprx-vision-udp443 относится к UserObject, на стороне сервера это не указываем, там остается xtls-rprx-vision. Либо я чего-то не понял🙂 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 18 минут назад, Skrill0 сказал: меняет логику обработки UDP в режиме мультиплексирования на 443 порту сервера и допускает обработку Quic | http.3. Для mux нужно будет также сменить "xudpProxyUDP443": "reject" на "xudpProxyUDP443": "allow". Кстати, Quic РКН до сих пор блокирует? Если да, то нужная фича, получается. Заворачивая Quic в TCP мы по прежнему можем его использовать, правильно я понимаю? mux то нам для чего? Quote Link to comment Share on other sites More sharing options...
emaklav Posted September 26, 2023 Share Posted September 26, 2023 Скажите, кто-нибудь может протестировать конфиг 3X-UI? В режиме "из коробки" профиль reality подставляет SNI yahoo.com и это видно на анализаторе трафика (на телефоне запущен клиент xray, используется профиль по умолчанию): Если создаю новый inbound и меняю yahoo на amd, то на анализаторе продолжает светиться yahoo.. Может кто-нибудь проверить? Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 1 минуту назад, The_Same сказал: Все-таки, согласно документации, параметр xtls-rprx-vision-udp443 относится к UserObject, на стороне сервера это не указываем, там остается xtls-rprx-vision. Либо я чего-то не понял🙂 Да, на стороне сервера можно оставить только xtls-rprx-vision Это значит, что на сервер Вы можете отправлять запросы http.3 | Quic, а с сервера получать классические ответы, что считается более надежным. Схематично выглядит так Скрытый текст Mux должен быть включен только на стороне клиента. Для просмотра видео, загрузки и тестирования скоростей имеет негативные последствия. Позволяет объединить несколько запросов к серверу в 1. К примеру, мы отправляем 16 TCP запросов, Mux собирает их в 1 и отправляет на сервер. 1 Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 (edited) 25 минут назад, The_Same сказал: Кстати, Quic РКН до сих пор блокирует? Если да, то нужная фича, получается. Заворачивая Quic в TCP мы по прежнему можем его использовать, правильно я понимаю? mux то нам для чего? На данном XTLS (не путать с ядром Xray) поддерживает транспорт TCP, mKCP и DomainSocket. Quic не очень подходит для проксирования. Внутри него есть механизмы, аналогичные функциональности TCP, такие как управление потоками, адаптация к изменяющимся условиям сети и некоторые другие. Когда он передается как UDP-трафик через протокол VLess, основным протоколом является TCP, что эквивалентно двум слоям TCP. Что касается mux, в контексте Quicи других протоколов, он может улучшить производительность и снизить задержки, объединяя несколько потоков в одном соединении без создания множества отдельных соединений. Edited September 26, 2023 by Skrill0 1 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать? Quote Link to comment Share on other sites More sharing options...
adk Posted September 26, 2023 Share Posted September 26, 2023 (edited) 3 минуты назад, The_Same сказал: Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать? Аналогично. Steam, но игра немного другая...) + с небольшой периодичностью отваливается подключение через cisco anyconnect к Корп vpn на 2 армах Edited September 26, 2023 by adk Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 2 минуты назад, The_Same сказал: Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать? Тут можно посмотреть в 2 направлениях. 1. Попробуйте добавить в routing в direct подключение ext:geosite_v2fly.dat:steam 2. Попробуйте сменить поток на клиентской стороне на xtls-rprx-vision-udp443 1 Quote Link to comment Share on other sites More sharing options...
bigpu Posted September 26, 2023 Share Posted September 26, 2023 29 минут назад, Skrill0 сказал: Действительно интересным может быть DNS over Quic на стороне сервера. могли бы подсказать конфиг xray, чтобы пока юзать его через статические маршруты, как с VPN сейчас? То бишь, весь трафик идет через прокси xray, в маршрутах Кинетик я выбираю IP или их диапазон, конкретного заблокированного ресурса, который открывается через прокси. P.S. да, геморно, но так и скорость будет в режиме direct вся, что дают оба провайдера, и приложение будет работоспособно) Честно, изначально хотел Xray как реализацию обхода блокировок "судного дня". P.P.S. с удовольствием перейду полностью на Xray, как только он заработает корректно с приложением Кинетик. Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 15 минут назад, bigpu сказал: могли бы подсказать конфиг xray, чтобы пока юзать его через статические маршруты, как с VPN сейчас? То бишь, весь трафик идет через прокси xray, в маршрутах Кинетик я выбираю IP или их диапазон, конкретного заблокированного ресурса, который открывается через прокси. P.S. да, геморно, но так и скорость будет в режиме direct вся, что дают оба провайдера, и приложение будет работоспособно) Честно, изначально хотел Xray как реализацию обхода блокировок "судного дня". P.P.S. с удовольствием перейду полностью на Xray, как только он заработает корректно с приложением Кинетик. В таком случае Вам нужно оставить в routing только соединение «proxy». Использовать файл автоматического старта Xray из предыдущих версий Xkeen Скрытый текст #!/bin/sh ### Начало информации о службе # Краткое-описание: Запуск / Остановка Xray # version="0.5" # Версия # mode="redirect" # Мод ### Конец информации о службе green="\033[32m" red="\033[31m" yellow="\033[33m" reset="\033[0m" xkeen_info_log="/opt/var/log/xkeen/info.log" xkeen_error_log="/opt/var/log/xkeen/error.log" path="/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin" xray_path="xray" xray_config="/opt/etc/xray/configs" app_name="Xkeen" export XRAY_LOCATION_ASSET="/opt/etc/xray/dat/" # Функция для ведения журнала в роутере log_notice_init() { local header="${app_name}" logger -p notice -t "${header}" "${1}" } log_error_init() { local header="${app_name}" logger -p error -t "${header}" "${1}" } exit_with_error() { echo "Ошибка: $1" exit 1 } # Функция для проверки статуса xray xray_status() { if pgrep -f "$xray_path run -confdir $xray_config" > /dev/null; then return 0 # Процесс существует и работает else return 1 # Процесс не существует fi } # Функция для запуска xray | Особая благодарность jameszero start() { log_notice_init "Инициирован запуск Xray" max_retries=3 # Максимальное количество попыток запуска retries=0 while [ $retries -lt $max_retries ]; do if xray_status; then echo -e " Xray уже ${green}запущен${reset}" log_notice_init "Не удалось запустить Xray, так как он уже запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray уже запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" return 0 # Прерываем цикл, так как Xray уже запущен else "$xray_path" run -confdir "$xray_config" & sleep 10 if xray_status; then echo -e " Xray ${green}запущен${reset}" log_notice_init "Xray запущен" echo "" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" return 0 # Прерываем цикл, так как Xray успешно запущен else retries=$((retries + 1)) echo -e " Попытка повторного запуска Xray: $retries из $max_retries" log_notice_init "Попытка повторного запуска Xray: $retries из $max_retries" sleep 10 fi fi done # Если достигнуто максимальное количество попыток и Xray не запущен, выводим ошибку echo -e " Не удалось запустить Xray после $max_retries попыток" log_error_init "Не удалось запустить Xray после $max_retries попыток" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Не удалось запустить Xray после $max_retries попыток" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" } # Функция для остановки xray stop() { log_notice_init "Инициирована остановка Xray" if xray_status; then killall -q -9 "$xray_path" echo -e " Xray ${yellow}остановлен${reset}" log_notice_init "Xray остановлен" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray остановлен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" log_error_init "Остановка Xray не удалась. Xray не был запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray не был запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" fi } # Обработка аргументов командной строки case "$1" in start) start ;; stop) stop ;; status) if xray_status; then echo -e " Xray ${green}запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray не запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" fi ;; restart) stop > /dev/null 2>&1 start > /dev/null 2>&1 echo -e " Xray ${green}перезапущен${reset}" ;; *) echo -e " Команды: ${green}start${reset} | ${red}stop${reset} | ${yellow}restart${reset} | status" ;; esac exit 0 Соединение оставить также, через dokodemo-door и проложить маршрут до порта на котором слушает Xray. Теоретически, должно заработать 1 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 (edited) 31 минуту назад, Skrill0 сказал: Тут можно посмотреть в 2 направлениях. 1. Попробуйте добавить в routing в direct подключение ext:geosite_v2fly.dat:steam 2. Попробуйте сменить поток на клиентской стороне на xtls-rprx-vision-udp443 Не помогает, к сожалению. Меня сын проклянет сейчас уже😄 Когда было настроено через прокси кинетика, я ПК сына в политику не добавлял, поэтому видимо проблем у него не было. Сейчас же трафик всех клиентов роутера проходит через xray получается. Видимо это как-то влияет на игру Edited September 26, 2023 by The_Same Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 26, 2023 Author Share Posted September 26, 2023 Только что, The_Same сказал: Не помогает, к сожалению. Меня сын проклянет сейчас уже😄 Сожалею, что так вышло. Попробуйте следующее решение. Будем направлять не все соединение, а только с портов 443 и 80 на xray, то есть тех, которые используются для интернет-серфинга. Обновите init.d файл S24xray до следующего содержимого Скрытый текст #!/bin/sh ### Начало информации о службе # Краткое-описание: Запуск / Остановка Xray # version="0.8" # Версия ### Конец информации о службе # Цвета для вывода green="\033[32m" red="\033[31m" yellow="\033[33m" reset="\033[0m" # Пути и переменные xkeen_info_log="/opt/var/log/xkeen/info.log" xkeen_error_log="/opt/var/log/xkeen/error.log" path="/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin" xray_path="xray" xray_config="/opt/etc/xray/configs" app_name="Xkeen" interface="br0" export XRAY_LOCATION_ASSET="/opt/etc/xray/dat/" # Функции для ведения журнала в роутере log_notice_init() { local header="${app_name}" logger -p notice -t "${header}" "${1}" } log_error_init() { local header="${app_name}" logger -p error -t "${header}" "${1}" } exit_with_error() { echo "Ошибка: $1" exit 1 } # Функция для определения файла inbounds determine_config_file() { config_file="" if [ -n "$(ls "$xray_config" | grep 'inbounds')" ]; then config_file="$xray_config/$(ls "$xray_config" | grep 'inbounds')" elif [ -e "$xray_config/config.json" ]; then config_file="$xray_config/config.json" fi } # Функция для определения порта xray determine_xray_port() { xray_port=$(cat "$config_file" | grep -o '"port": [0-9]*' | awk '{print $2}' | head -n 1) if [ -z "$xray_port" ]; then exit_with_error "Не удалось определить xray_port из настроек." else # Проверяем, что xray_port является числом if ! [[ "$xray_port" =~ ^[0-9]+$ ]]; then exit_with_error "xray_port не является допустимым числом." fi fi } add_rules () { determine_config_file determine_xray_port if grep -q '"protocol": "dokodemo-door"' "$config_file"; then if grep -q '"tproxy": "tproxy"' "$config_file"; then xray_mode="tproxy" else xray_mode="redirect" fi else xray_mode="socks" fi case "$xray_mode" in "tproxy") log_notice_init "Найден «dokodemo-door» с режимом Transparent proxy в inbounds. Xray запущен в режиме Transparent proxy." ;; "redirect") log_notice_init "Найден «dokodemo-door» в inbounds. Xray запущен в режиме Redirect." ;; "socks") log_notice_init "Не найден «dokodemo-door» в inbounds. Xray запущен в обычном режиме. Для работы Xray нужно направить на него соединение любым удобным Вам способом." ;; *) log_notice_init "Ошибка: Недопустимое значение xray_mode: $xray_mode" exit 1 ;; esac echo -n > /opt/etc/ndm/netfilter.d/xray.sh cat > /opt/etc/ndm/netfilter.d/xray.sh <<EOL #!/bin/sh xray_mode=$xray_mode if [ "\$xray_mode" = "socks" ]; then exit 0 elif [ "\$xray_mode" = "redirect" ]; then if ! iptables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi elif [ "\$xray_mode" = "tproxy" ]; then iptables -t mangle -N XRAY iptables -t mangle -N XRAY_SELF iptables -t mangle -N DIVERT else echo "Ошибка: Недопустимое значение переменной xray_mode: $xray_mode" exit 1 fi EOL } # Функция для удаления правил redirect для адресов IPv4 delete_rules() { echo -n > /opt/etc/ndm/netfilter.d/xray.sh determine_config_file determine_xray_port # Проверка существования правил и удаление их, если они существуют if iptables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi } # Функция для проверки статуса xray xray_status() { if pgrep -f "$xray_path run -confdir $xray_config" > /dev/null; then return 0 # Процесс существует и работает else return 1 # Процесс не существует fi } # Функция для запуска Xray | Особая благодарность jameszero start() { log_notice_init "Инициирован запуск Xray" max_retries=10 # Максимальное количество попыток запуска retries=0 delay=1 # Начальная задержка в секундах while [ $retries -lt $max_retries ]; do if xray_status; then echo -e " Xray уже ${green}запущен${reset}" log_notice_init "Не удалось запустить Xray, так как он уже запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray уже запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" return 0 # Прерываем цикл, так как Xray уже запущен else "$xray_path" run -confdir "$xray_config" & sleep $delay if xray_status; then echo -e " Xray ${green}запущен${reset}" log_notice_init "Xray запущен" # Устанавливаем правила IPv4 и IPv6 add_rules echo "" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" return 0 # Прерываем цикл, так как Xray успешно запущен else retries=$((retries + 1)) echo -e " Попытка повторного запуска Xray: $retries из $max_retries" log_notice_init "Попытка повторного запуска Xray: $retries из $max_retries" delay=$((delay + 1)) # Увеличиваем задержку на 1 секунду fi fi done # Если достигнуто максимальное количество попыток и Xray не запущен, выводим ошибку echo -e " Не удалось запустить Xray после $max_retries попыток" log_error_init "Не удалось запустить Xray после $max_retries попыток" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Не удалось запустить Xray после $max_retries попыток" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" } # Функция для остановки xray stop() { log_notice_init "Инициирована остановка Xray" if xray_status; then # Удаляем правила IPv4 и IPv6 iptables -t nat -A PREROUTING -i "$interface" -s 192.0.0.0/24 -j ACCEPT sleep 1 delete_rules sleep 1 iptables -t nat -D PREROUTING -i "$interface" -s 192.0.0.0/24 -j ACCEPT killall -q -9 "$xray_path" echo -e " Xray ${yellow}остановлен${reset}" log_notice_init "Xray остановлен" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray остановлен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" log_error_init "Остановка Xray не удалась. Xray не был запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray не был запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" fi } # Обработка аргументов командной строки case "$1" in start) start ;; stop) stop ;; status) if xray_status; then echo -e " Xray ${green}запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray не запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" fi ;; restart) stop > /dev/null 2>&1 start > /dev/null 2>&1 echo -e " Xray ${green}перезапущен${reset}" ;; *) echo -e " Команды: ${green}start${reset} | ${red}stop${reset} | ${yellow}restart${reset} | status" ;; esac exit 0 Потом xkeen -stop xkeen -start 1 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 26, 2023 Share Posted September 26, 2023 18 минут назад, Skrill0 сказал: Сожалею, что так вышло. Попробуйте следующее решение. Будем направлять не все соединение, а только с портов 443 и 80 на xray, то есть тех, которые используются для интернет-серфинга. Обновите init.d файл S24xray до следующего содержимого Показать содержимое #!/bin/sh ### Начало информации о службе # Краткое-описание: Запуск / Остановка Xray # version="0.8" # Версия ### Конец информации о службе # Цвета для вывода green="\033[32m" red="\033[31m" yellow="\033[33m" reset="\033[0m" # Пути и переменные xkeen_info_log="/opt/var/log/xkeen/info.log" xkeen_error_log="/opt/var/log/xkeen/error.log" path="/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin" xray_path="xray" xray_config="/opt/etc/xray/configs" app_name="Xkeen" interface="br0" export XRAY_LOCATION_ASSET="/opt/etc/xray/dat/" # Функции для ведения журнала в роутере log_notice_init() { local header="${app_name}" logger -p notice -t "${header}" "${1}" } log_error_init() { local header="${app_name}" logger -p error -t "${header}" "${1}" } exit_with_error() { echo "Ошибка: $1" exit 1 } # Функция для определения файла inbounds determine_config_file() { config_file="" if [ -n "$(ls "$xray_config" | grep 'inbounds')" ]; then config_file="$xray_config/$(ls "$xray_config" | grep 'inbounds')" elif [ -e "$xray_config/config.json" ]; then config_file="$xray_config/config.json" fi } # Функция для определения порта xray determine_xray_port() { xray_port=$(cat "$config_file" | grep -o '"port": [0-9]*' | awk '{print $2}' | head -n 1) if [ -z "$xray_port" ]; then exit_with_error "Не удалось определить xray_port из настроек." else # Проверяем, что xray_port является числом if ! [[ "$xray_port" =~ ^[0-9]+$ ]]; then exit_with_error "xray_port не является допустимым числом." fi fi } add_rules () { determine_config_file determine_xray_port if grep -q '"protocol": "dokodemo-door"' "$config_file"; then if grep -q '"tproxy": "tproxy"' "$config_file"; then xray_mode="tproxy" else xray_mode="redirect" fi else xray_mode="socks" fi case "$xray_mode" in "tproxy") log_notice_init "Найден «dokodemo-door» с режимом Transparent proxy в inbounds. Xray запущен в режиме Transparent proxy." ;; "redirect") log_notice_init "Найден «dokodemo-door» в inbounds. Xray запущен в режиме Redirect." ;; "socks") log_notice_init "Не найден «dokodemo-door» в inbounds. Xray запущен в обычном режиме. Для работы Xray нужно направить на него соединение любым удобным Вам способом." ;; *) log_notice_init "Ошибка: Недопустимое значение xray_mode: $xray_mode" exit 1 ;; esac echo -n > /opt/etc/ndm/netfilter.d/xray.sh cat > /opt/etc/ndm/netfilter.d/xray.sh <<EOL #!/bin/sh xray_mode=$xray_mode if [ "\$xray_mode" = "socks" ]; then exit 0 elif [ "\$xray_mode" = "redirect" ]; then if ! iptables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ! iptables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -A PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -A PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi elif [ "\$xray_mode" = "tproxy" ]; then iptables -t mangle -N XRAY iptables -t mangle -N XRAY_SELF iptables -t mangle -N DIVERT else echo "Ошибка: Недопустимое значение переменной xray_mode: $xray_mode" exit 1 fi EOL } # Функция для удаления правил redirect для адресов IPv4 delete_rules() { echo -n > /opt/etc/ndm/netfilter.d/xray.sh determine_config_file determine_xray_port # Проверка существования правил и удаление их, если они существуют if iptables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if iptables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then iptables -t nat -D PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p udp --dport 80 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p udp --dport 443 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p tcp --dport 80 -j REDIRECT --to-port $xray_port fi if ip6tables -t nat -C PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port 2>/dev/null; then ip6tables -t nat -D PREROUTING -i $interface -p tcp --dport 443 -j REDIRECT --to-port $xray_port fi } # Функция для проверки статуса xray xray_status() { if pgrep -f "$xray_path run -confdir $xray_config" > /dev/null; then return 0 # Процесс существует и работает else return 1 # Процесс не существует fi } # Функция для запуска Xray | Особая благодарность jameszero start() { log_notice_init "Инициирован запуск Xray" max_retries=10 # Максимальное количество попыток запуска retries=0 delay=1 # Начальная задержка в секундах while [ $retries -lt $max_retries ]; do if xray_status; then echo -e " Xray уже ${green}запущен${reset}" log_notice_init "Не удалось запустить Xray, так как он уже запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray уже запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" return 0 # Прерываем цикл, так как Xray уже запущен else "$xray_path" run -confdir "$xray_config" & sleep $delay if xray_status; then echo -e " Xray ${green}запущен${reset}" log_notice_init "Xray запущен" # Устанавливаем правила IPv4 и IPv6 add_rules echo "" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" return 0 # Прерываем цикл, так как Xray успешно запущен else retries=$((retries + 1)) echo -e " Попытка повторного запуска Xray: $retries из $max_retries" log_notice_init "Попытка повторного запуска Xray: $retries из $max_retries" delay=$((delay + 1)) # Увеличиваем задержку на 1 секунду fi fi done # Если достигнуто максимальное количество попыток и Xray не запущен, выводим ошибку echo -e " Не удалось запустить Xray после $max_retries попыток" log_error_init "Не удалось запустить Xray после $max_retries попыток" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Не удалось запустить Xray после $max_retries попыток" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" } # Функция для остановки xray stop() { log_notice_init "Инициирована остановка Xray" if xray_status; then # Удаляем правила IPv4 и IPv6 iptables -t nat -A PREROUTING -i "$interface" -s 192.0.0.0/24 -j ACCEPT sleep 1 delete_rules sleep 1 iptables -t nat -D PREROUTING -i "$interface" -s 192.0.0.0/24 -j ACCEPT killall -q -9 "$xray_path" echo -e " Xray ${yellow}остановлен${reset}" log_notice_init "Xray остановлен" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray остановлен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" log_error_init "Остановка Xray не удалась. Xray не был запущен" echo "" >> "$xkeen_error_log" echo "[start] Проверка статуса Xray" >> "$xkeen_error_log" echo " [error] Xray не был запущен" >> "$xkeen_error_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_error_log" echo "" >> "$xkeen_error_log" fi } # Обработка аргументов командной строки case "$1" in start) start ;; stop) stop ;; status) if xray_status; then echo -e " Xray ${green}запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" else echo -e " Xray ${red}не запущен${reset}" echo "" >> "$xkeen_info_log" echo "[start] Проверка статуса Xray" >> "$xkeen_info_log" echo " [info] Xray не запущен" >> "$xkeen_info_log" echo "[end] Проверка статуса Xray выполнена" >> "$xkeen_info_log" echo "" >> "$xkeen_info_log" fi ;; restart) stop > /dev/null 2>&1 start > /dev/null 2>&1 echo -e " Xray ${green}перезапущен${reset}" ;; *) echo -e " Команды: ${green}start${reset} | ${red}stop${reset} | ${yellow}restart${reset} | status" ;; esac exit 0 Потом xkeen -stop xkeen -start Вы спасли мне жизнь 😁Ну во всяком случае нервов сберегли немало. Спасибо снова Вам, все получилось! 2 Quote Link to comment Share on other sites More sharing options...
emaklav Posted September 27, 2023 Share Posted September 27, 2023 Подскажите, можно-ли исключить проксирование трафика для приложений IVI и Кинопоиск? При добавлении TV в профиль прокси - пропадает RU контент. Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 27, 2023 Share Posted September 27, 2023 (edited) 1 час назад, emaklav сказал: Подскажите, можно-ли исключить проксирование трафика для приложений IVI и Кинопоиск? При добавлении TV в профиль прокси - пропадает RU контент. А если в конфиге маршрутизации домены ivi.ru и kinopoisk.ru в direct добавить? П.С. ну и IP адреса на всякий случай тоже. Ivi.ru - 80.67.43.1, 80.67.43.33, 80.67.43.65 kinopoisk.ru - 213.180.199.9 Edited September 27, 2023 by The_Same Quote Link to comment Share on other sites More sharing options...
adk Posted September 27, 2023 Share Posted September 27, 2023 13 часа назад, Skrill0 сказал: Обновите init.d файл S24xray до следующего содержимого 14 часа назад, Skrill0 сказал: Тут можно посмотреть в 2 направлениях. 1. Попробуйте добавить в routing в direct подключение ext:geosite_v2fly.dat:steam 2. Попробуйте сменить поток на клиентской стороне на xtls-rprx-vision-udp443 Странно... в отличие от The_Same, мне не помогло.. Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 27, 2023 Share Posted September 27, 2023 1 час назад, adk сказал: Странно... в отличие от The_Same, мне не помогло.. Не помогло в чем? Игра не работает? S24xray редактировали? Quote Link to comment Share on other sites More sharing options...
adk Posted September 27, 2023 Share Posted September 27, 2023 11 минуту назад, The_Same сказал: Не помогло в чем? Игра не работает? S24xray редактировали? Так же в CS не доступны сервера. ext:geosite_v2fly.dat:steam в роутинге есть изначально Варианты исправления: 1) менял на клиенте flow на xtls-rprx-vision-udp443 2) редактировал S24xray Результата нет, вернулся на директ. Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 27, 2023 Share Posted September 27, 2023 4 минуты назад, adk сказал: Так же в CS не доступны сервера. ext:geosite_v2fly.dat:steam в роутинге есть изначально Варианты исправления: 1) менял на клиенте flow на xtls-rprx-vision-udp443 2) редактировал S24xray Результата нет, вернулся на директ. После редактирования S24xray xkeen -stop и xkeen -start выполняли? xkeen -restart не подойдет, ибо он ошибки не показывал у меня. Только при xkeen -start показал, что не видит почему-то S24xray. Quote Link to comment Share on other sites More sharing options...
adk Posted September 27, 2023 Share Posted September 27, 2023 10 минут назад, The_Same сказал: После редактирования S24xray xkeen -stop и xkeen -start выполняли? Да, конечно. Quote Link to comment Share on other sites More sharing options...
fijj Posted September 27, 2023 Share Posted September 27, 2023 Если стоит цель ипользовать xray только для вебсерфинга, самое оптимальное решение использовать proxy самого браузера. На kn-1010 для direct трафика получаетя 200 мегабит. Нет никаких проблем с открытием facebook и instagram. Думаю такой вариант можно разметсить в шапке темы. 1 Quote Link to comment Share on other sites More sharing options...
Skrill0 Posted September 28, 2023 Author Share Posted September 28, 2023 Всем доброго утра! Xkeen сейчас поддерживает работу в 2-х режимах Socks Redirect Socks — режим, который был изначально. Использовать можно через встроенный прокси-клиент Keenetic или через Proxy интерфейсы windows/браузера. Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy. Эта проблема должна быть решена с выходом Transparent proxy режима. Режимы включаются автоматически, в зависимости от содержимого Inbounds. Если у Вас соединение через Dokodemo-door, то будет использовать Redirect. Если через Socks — будет использоваться Socks. Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела. 5 1 Quote Link to comment Share on other sites More sharing options...
The_Same Posted September 28, 2023 Share Posted September 28, 2023 32 минуты назад, Skrill0 сказал: Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy. Эта проблема должна быть решена с выходом Transparent proxy режима. Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела. Именно поэтому сегодня с утра я вернулся на Soks режим, в Redirect лончеры игр глючат, нет синхронизации и не работает бэкап агент от Synology. Падение скорости перетерплю 😁, подожду развития проекта . @Skrill0, выздоравливайте , пейте морсика побольше. 1 Quote Link to comment Share on other sites More sharing options...
bigpu Posted September 28, 2023 Share Posted September 28, 2023 48 минут назад, Skrill0 сказал: так как я немного заболела скорейшего выздоровления, уважаемая наша) Quote Link to comment Share on other sites More sharing options...
emaklav Posted September 28, 2023 Share Posted September 28, 2023 1 час назад, Skrill0 сказал: Всем доброго утра! Xkeen сейчас поддерживает работу в 2-х режимах Socks Redirect Socks — режим, который был изначально. Использовать можно через встроенный прокси-клиент Keenetic или через Proxy интерфейсы windows/браузера. Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy. Эта проблема должна быть решена с выходом Transparent proxy режима. Режимы включаются автоматически, в зависимости от содержимого Inbounds. Если у Вас соединение через Dokodemo-door, то будет использовать Redirect. Если через Socks — будет использоваться Socks. Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела. здоровья 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.