Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)
55 минут назад, The_Same сказал:

Всем добрый вечер, добрался до роутера. В первую очередь, огромное спасибо @Skrill0 за проделанную работу! Касательно тестов, с redirect скорость через proxy такая:

Proxy_speed.thumb.png.584dec14e168461b4482964ec8ac0ecb.png

Скорость через direct такая:

Direct_speed.thumb.png.b90ae3914c9201f32fc03a650f9ad44a.png

Тестировал специально до европейских серверов, ибо большинство проксируемых ресурсов для моих задач находятся в европе.

П.С. Обязательно попозже скину на кофе с тортиком😜

Благодарю)

В дополнение ко всему на данном этапе можно попробовать сменить на сервере и в outbounds параметр flow

xtls-rprx-vision

на 

xtls-rprx-vision-udp443
Изменено пользователем Skrill0
  • Ответов 2,8 тыс
  • Создана
  • Последний ответ

Топ авторов темы

Опубликовано
20 минут назад, The_Same сказал:

Касательно тестов, с redirect скорость через proxy такая

да понятно, что с KN-1811 и его arm все будет неплохо) На 7621 уже хуже, на малышах - 7628 как будет, если вообще будет, хрен его)

22 минуты назад, The_Same сказал:

Обязательно попозже скину на кофе с тортиком

тортом тут пахло изначально, при любом раскладе, девушка, и такое запилить👍

Опубликовано
24 минуты назад, Skrill0 сказал:

Благодарю)

В дополнение ко всему на данном этапе можно сменить на сервере и в outbounds параметр flow

xtls-rprx-vision

на 

xtls-rprx-vision-udp443

Какой в этом практический смысл?

Опубликовано
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.

 

Опубликовано (изменено)
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"
}


Более детального описания, к сожалению, нет. Тесты также еще в пути. В общем, можно попробовать)

Изменено пользователем Skrill0
Опубликовано
4 минуты назад, Skrill0 сказал:

Согласно китайским товарищам в чате Telegram, немного меняет логику обработки UDP в режиме мультиплексирования на 443 порту сервера и допускает обработку Quic.

Более детального описания, к сожалению, нет. Тесты также еще в пути. В общем, можно попробовать)
 

Все-таки, согласно документации, параметр xtls-rprx-vision-udp443 относится к UserObject, на стороне сервера это не указываем, там остается xtls-rprx-vision. Либо я чего-то не понял🙂

Опубликовано
18 минут назад, Skrill0 сказал:

меняет логику обработки UDP в режиме мультиплексирования на 443 порту сервера и допускает обработку Quic | http.3.

Для mux нужно будет также сменить "xudpProxyUDP443": "reject"  на "xudpProxyUDP443": "allow".
 

Кстати, Quic РКН до сих пор блокирует? Если да, то нужная фича, получается. Заворачивая Quic в TCP мы по прежнему можем его использовать, правильно я понимаю?

mux то нам для чего? 

Опубликовано

Скажите, кто-нибудь может протестировать конфиг 3X-UI? В режиме "из коробки" профиль reality подставляет SNI yahoo.com и это видно на анализаторе трафика (на телефоне запущен клиент xray, используется профиль по умолчанию):

image.thumb.png.fab1ed704b0a1d20a8ab5e59e4a65330.png

image.png.4e94fbbf763d7f9a13ef9ce83a2ef741.png

Если создаю новый inbound и меняю yahoo на amd, то на анализаторе продолжает светиться yahoo.. 

Может кто-нибудь проверить?

Опубликовано
1 минуту назад, The_Same сказал:

Все-таки, согласно документации, параметр xtls-rprx-vision-udp443 относится к UserObject, на стороне сервера это не указываем, там остается xtls-rprx-vision. Либо я чего-то не понял🙂

Да, на стороне сервера можно оставить только

xtls-rprx-vision

Это значит, что на сервер Вы можете отправлять запросы http.3 | Quic, а с сервера получать классические ответы, что считается более надежным.

Схематично выглядит так

Скрытый текст

image.thumb.png.23302be3e352a6b8137a3400f90c1aee.png


Mux должен быть включен только на стороне клиента. Для просмотра видео, загрузки и тестирования скоростей имеет негативные последствия.
Позволяет объединить несколько запросов к серверу в 1.

К примеру, мы отправляем 16 TCP запросов, Mux собирает их в 1 и отправляет на сервер.

 

Опубликовано (изменено)
25 минут назад, The_Same сказал:

Кстати, Quic РКН до сих пор блокирует? Если да, то нужная фича, получается. Заворачивая Quic в TCP мы по прежнему можем его использовать, правильно я понимаю?

mux то нам для чего? 

На данном XTLS (не путать с ядром Xray) поддерживает транспорт TCP, mKCP и DomainSocket.
Quic не очень подходит для проксирования. Внутри него есть механизмы, аналогичные функциональности TCP, такие как управление потоками, адаптация к изменяющимся условиям сети и некоторые другие.

Когда он передается как UDP-трафик через протокол VLess, основным протоколом является TCP, что эквивалентно двум слоям TCP. 

Что касается mux, в контексте Quicи других протоколов, он может улучшить производительность и снизить задержки, объединяя несколько потоков в одном соединении без создания множества отдельных соединений.

Изменено пользователем Skrill0
Опубликовано

Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать?

Опубликовано (изменено)
3 минуты назад, The_Same сказал:

Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать?

Аналогично. Steam, но игра немного другая...)

+ с небольшой периодичностью отваливается подключение через cisco anyconnect к Корп vpn на 2 армах

Изменено пользователем adk
Опубликовано
2 минуты назад, The_Same сказал:

Вылезла проблема откуда не ждал🫢 Сын играет в CS:GO, когда было настроено через прокси кинетика играл спокойно, в режиме redirect сервера в игре недоступны. Выключаю xray, сервера в игре доступны. Куда копать?

Тут можно посмотреть в 2 направлениях.
1. Попробуйте добавить в routing в direct подключение 

ext:geosite_v2fly.dat:steam

2. Попробуйте сменить поток на клиентской стороне на 

xtls-rprx-vision-udp443
Опубликовано
29 минут назад, Skrill0 сказал:

Действительно интересным может быть DNS over Quic на стороне сервера.

могли бы подсказать конфиг xray, чтобы пока юзать его через статические маршруты, как с VPN сейчас? То бишь, весь трафик идет через прокси xray, в маршрутах Кинетик я выбираю IP или их диапазон, конкретного заблокированного ресурса, который открывается через прокси.

P.S. да, геморно,  но так и скорость будет в режиме direct вся, что дают оба провайдера, и приложение будет работоспособно) Честно, изначально хотел Xray как реализацию обхода блокировок "судного дня".

P.P.S. с удовольствием перейду полностью на Xray, как только он заработает корректно с приложением Кинетик.

Опубликовано
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.
Теоретически, должно заработать
 

Опубликовано (изменено)
31 минуту назад, Skrill0 сказал:

Тут можно посмотреть в 2 направлениях.
1. Попробуйте добавить в routing в direct подключение 

ext:geosite_v2fly.dat:steam

2. Попробуйте сменить поток на клиентской стороне на 

xtls-rprx-vision-udp443
Не помогает, к сожалению. Меня сын проклянет сейчас уже😄

Когда было настроено через прокси кинетика, я ПК сына в политику не добавлял, поэтому видимо проблем у него не было. Сейчас же трафик всех клиентов роутера проходит через xray получается. Видимо это как-то влияет на игру

Изменено пользователем The_Same
Опубликовано
Только что, 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


 

Опубликовано
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


 

Вы спасли мне жизнь 😁Ну во всяком случае нервов сберегли немало. Спасибо снова Вам, все получилось!

Опубликовано

Подскажите, можно-ли исключить проксирование трафика для приложений IVI и Кинопоиск? При добавлении TV в профиль прокси - пропадает RU контент.

Опубликовано (изменено)
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

Изменено пользователем The_Same
Опубликовано
13 часа назад, Skrill0 сказал:

Обновите init.d файл S24xray до следующего содержимого

 

14 часа назад, Skrill0 сказал:

Тут можно посмотреть в 2 направлениях.
1. Попробуйте добавить в routing в direct подключение 

ext:geosite_v2fly.dat:steam

2. Попробуйте сменить поток на клиентской стороне на 

xtls-rprx-vision-udp443

Странно... в отличие от The_Same, мне не помогло..

Опубликовано
11 минуту назад, The_Same сказал:

Не помогло в чем? Игра не работает? S24xray редактировали?

Так же в CS не доступны сервера.

ext:geosite_v2fly.dat:steam в роутинге есть изначально

Варианты исправления:

1) менял на клиенте flow на xtls-rprx-vision-udp443

2) редактировал S24xray

Результата нет, вернулся на директ.

 

Опубликовано
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. 

Опубликовано

Если стоит цель ипользовать xray только для вебсерфинга, самое оптимальное решение использовать proxy самого браузера. На kn-1010 для direct трафика получаетя 200 мегабит. Нет никаких проблем с открытием facebook и instagram. Думаю такой вариант можно разметсить в шапке темы.

Опубликовано

Всем доброго утра!

Xkeen сейчас поддерживает работу в 2-х режимах

  1. Socks
  2. Redirect

Socks — режим, который был изначально. Использовать можно через встроенный прокси-клиент Keenetic или через Proxy интерфейсы windows/браузера.

Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy.
Эта проблема должна быть решена с выходом Transparent proxy режима.

Режимы включаются автоматически, в зависимости от содержимого Inbounds.
Если у Вас соединение через Dokodemo-door, то будет использовать Redirect. Если через Socks — будет использоваться Socks.

Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела.

 

Опубликовано
32 минуты назад, Skrill0 сказал:

Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy.

Эта проблема должна быть решена с выходом Transparent proxy режима.

Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела.

 

Именно поэтому сегодня с утра я вернулся на Soks режим, в Redirect лончеры игр глючат, нет синхронизации и не работает бэкап агент от Synology. Падение скорости перетерплю 😁, подожду развития проекта . @Skrill0, выздоравливайте , пейте морсика побольше.

Опубликовано
1 час назад, Skrill0 сказал:

Всем доброго утра!

Xkeen сейчас поддерживает работу в 2-х режимах

  1. Socks
  2. Redirect

Socks — режим, который был изначально. Использовать можно через встроенный прокси-клиент Keenetic или через Proxy интерфейсы windows/браузера.

Redirect — новый режим, перенаправляет вообще все соединение на Xray. Могут возникнуть проблемы с сервисами / играми, которые не любят работать с Proxy.
Эта проблема должна быть решена с выходом Transparent proxy режима.

Режимы включаются автоматически, в зависимости от содержимого Inbounds.
Если у Вас соединение через Dokodemo-door, то будет использовать Redirect. Если через Socks — будет использоваться Socks.

Выход режима Transparent proxy откладывается приблизительно на неделю, так как я немного заболела.

 

здоровья

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.