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

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

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

Спасибо за поддержку!

Долгое ожидание ничего не даёт, увы, трафик  

На попытку запустить данный скрипт я получаю краткое "Permission denied"  (поискал поиском - вроде один такой)). Однако принудительный sh вроде исполняет этот скрипт.

Еще нюанс, что не применив эти правила - трафик идёт "не туда", что, в целом, тоже не комильфо в моём случае. В идеале было бы поведение "kill-switch", чтобы нет ножек-нет печенья... Боюсь подписку потерять на утечке).

Что касается подождать - это конечно, правда жду как на иголках т.к. в понедельник нужно будет надолго уехать и возможности (мм желания? "настраивать роутер удалённо - к долгой дороге/назад/!") настроить уже не будет. Я, конечно, прочёл, что ожидается прозрачный режим работы, и это прекрасно! Готов быть альфа-тестером )).

Но пока готов побороться за результат и с нынешней версией.. Возможно попробую вариант с tproxy, хотя боюсь это оверкилл для моих скиллов. Плюс вижу что добавили UDP функционал в штатный прокси - возможно стоит поэкспериментировать в сторону дев-версии прошивки?

image.png.c9f473a026378673d3ab8532497ba6a7.png


Тогда до выхода обновления можете руками обновить init скрипт по пути /opt/etc/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"
ndm="/opt/etc/ndm/netfilter.d"

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 tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! iptables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p udp -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 tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if iptables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p udp -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
                $ndm/xray.sh

                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

 

Изменено пользователем Skrill0
  • Ответов 2,5 тыс
  • Создана
  • Последний ответ

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

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


Тогда до выхода обновления можете руками обновить init скрипт по пути /opt/etc/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"
ndm="/opt/etc/ndm/netfilter.d"

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 tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! iptables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p udp -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 tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if iptables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p udp -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
                $ndm/xray.sh

                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 -status
  Xray не запущен
~ # xkeen -start
Xray 1.8.4 (Xray, Penetrates Everything.) Custom (go1.21.0 linux/mipsle)
A unified platform for anti-censorship.
2023/10/05 20:50:15 Using confdir from arg: /opt/etc/xray/configs
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/01_log.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/02_stats.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/03_dns.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/04_reverse.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/05_fake-dns.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/06_transport.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/07_inbounds.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/08_outbounds.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/09_policy.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/10_routing.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/11_fallbacks.json
  Xray запущен
/opt/etc/init.d/S24xray: line 195: /opt/etc/ndm/netfilter.d/xray.sh: Permission denied


BusyBox v1.36.1 (2023-09-01 19:09:45 UTC) built-in shell (ash)

строка 195 это выходит

$ndm/xray.sh

однако работает!) продолжаю тестирование, ещё раз спасибо!

Добавка:

/opt/etc/init.d/S24xray: line 195: /opt/etc/ndm/netfilter.d/xray.sh: Permission denied

ошибка исправилась пермишенами на файл /opt/etc/ndm/netfilter.d/xray.sh. Теперь работает, в том числе после перезагрузки

ЗЫ несколько токенов bep20, а вот с адресом trc20 возникла проблема (ругается кошель) (смотрел на гитхабе)

Изменено пользователем Sercha
Опубликовано (изменено)
10 часов назад, Skrill0 сказал:


Тогда до выхода обновления можете руками обновить init скрипт по пути /opt/etc/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"
ndm="/opt/etc/ndm/netfilter.d"

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 tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! iptables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        iptables -t nat -A PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p tcp -j REDIRECT --to-port $xray_port
    fi

    if ! ip6tables -t nat -C PREROUTING -i $interface -p udp -j REDIRECT --to-port $xray_port 2>/dev/null; then
        ip6tables -t nat -A PREROUTING -i $interface -p udp -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 tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if iptables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			iptables -t nat -D PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p tcp -j REDIRECT --to-port "$xray_port"
		fi

		if ip6tables -t nat -C PREROUTING -i "$interface" -p udp -j REDIRECT --to-port "$xray_port" 2>/dev/null; then
			ip6tables -t nat -D PREROUTING -i "$interface" -p udp -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
                $ndm/xray.sh

                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

 

спасибо большое эта конфинурация решило мою проблему 

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

Добрый день. Спасибо автору за проделанную работу.

Я своими кривыми ручонками не смог завести. Прошу Вас помочь.

**Описание проблемы.**
Полностью отвалился интернет.

**Мои шаги, приведшие к проблеме.**

  • Настроил впс по мануалу
  • Проверил с тел через FoXray, работает.
  • На роутере установил Xray
  • По ленивой конфигурации настроил конфиги
  • Упал инет совсем😁

**Снимки экрана или сам текст с консоли.*
 

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

скрин веб роутера

image.thumb.png.52f43332285fc48ba4968d9d47f5b6be.png

скрин с терминала запуска xray

image.png.0f0b2b50eb4c67aaa8aa429ed11e1092.png

статус в терминале

image.png.aeeccc00c7882ae4d536e693d71c5de6.png

веб

image.png.1fd405d28e4d43738209c1f2982fa270.png

**Информация о роутере **
- Keenetic
- 4.0.4
- KN-1011

**Дополнительные пояснения.**
Прочитал весь тред, перезагружал роутер. По логам из терминала вижу, что ошибка загрузки конфиг файлов. Они все находятся по тем путям. Кофиги менял 7,8,10  из ленивой настройки, нужные строки менял на свои. Добавлял днс DoT DoH. Сценарий initrc на месте. Как починить не знаю, прошу Вашей помощи.

После запуска Xray падал инет на всех устройствах, отключал сокс. помогло только отключть самбу и opkg. Вытащил флешку с энтваре.

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

Вопрос kill-swith в режиме redirect решил воттакенным костылём. Возможно кому-то будет полезно...

/opt/etc/init.d/S01xraynf

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

#!/bin/sh

iptables -t nat -A PREROUTING -i br0 -p tcp -j REDIRECT --to-port 54836
iptables -t nat -A PREROUTING -i br0 -p udp -j REDIRECT --to-port 54836
ip6tables -t nat -A PREROUTING -i br0 -p tcp -j REDIRECT --to-port 54836
ip6tables -t nat -A PREROUTING -i br0 -p udp -j REDIRECT --to-port 54836
exit 1

🫠

Осталось убедится, что DNS идут через так же через прокси - буду благодарен за совет!

Опубликовано
23 минуты назад, m0.graph сказал:

Добрый день. Спасибо автору за проделанную работу.

Я своими кривыми ручонками не смог завести. Прошу Вас помочь.

**Описание проблемы.**
Полностью отвалился интернет.

**Мои шаги, приведшие к проблеме.**

  • Настроил впс по мануалу
  • Проверил с тел через FoXray, работает.
  • На роутере установил Xray
  • По ленивой конфигурации настроил конфиги
  • Упал инет совсем😁

**Снимки экрана или сам текст с консоли.*
 

  Скрыть содержимое

скрин веб роутера

image.thumb.png.52f43332285fc48ba4968d9d47f5b6be.png

скрин с терминала запуска xray

image.png.0f0b2b50eb4c67aaa8aa429ed11e1092.png

статус в терминале

image.png.aeeccc00c7882ae4d536e693d71c5de6.png

веб

image.png.1fd405d28e4d43738209c1f2982fa270.png

**Информация о роутере **
- Keenetic
- 4.0.4
- KN-1011

**Дополнительные пояснения.**
Прочитал весь тред, перезагружал роутер. По логам из терминала вижу, что ошибка загрузки конфиг файлов. Они все находятся по тем путям. Кофиги менял 7,8,10  из ленивой настройки, нужные строки менял на свои. Добавлял днс DoT DoH. Сценарий initrc на месте. Как починить не знаю, прошу Вашей помощи.

После запуска Xray падал инет на всех устройствах, отключал сокс. помогло только отключть самбу и opkg. Вытащил флешку с энтваре.

похоже, что у вас не загружены гео-добавки, однако включены в файле 10_routing.

ИМХО, попробуйте его для начала упростить:

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

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "proxy",
        "type": "field"
      }
    ]
  }
}

Ну а для проверки работы самого подключения - я использовал сначала 07_s_inbounds.json (SOCKS режим) и подключался к нему через прокси-клиент браузера FF. Но сначала должен пройти xkeen -start без ошибок.

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

ИМХО, попробуйте его для начала упростить:

Прекрасно! Спасибо! Заработало. Весь трафик со всех устройств оборачивается в сокс. Так и должно быть? 

Нужно настроить 10_routing, чтобы не весь трафик заворачивался?

Опубликовано
13 минуты назад, m0.graph сказал:

Прекрасно! Спасибо! Заработало. Весь трафик со всех устройств оборачивается в сокс. Так и должно быть? 

Нужно настроить 10_routing, чтобы не весь трафик заворачивался?

Отлично, 🤝

Да, думаю теперь надо усложнять 10_routing. У вас ругалось на то, что небыло geo файлов - стало быть надо их установить/загрузить..

Опубликовано (изменено)

Добрый вечер, помогите разобраться, как работает GeoSite и GeoIP? Документацию читал и не понимаю😐

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

Сейчас конфиг из ленивой сборки

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

 

Хочу добавить например whoer.net

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

добавляю в

// Настройка подключений через VPS с помощью доменных имен

"ext:geosite_v2fly.dat:whoer",

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
		  "ext:geosite_v2fly.dat:whoer", // добавил
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

Обновляю и всё ломается, кроме хуера никуда не идет трафик и айпи провайдера.

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

Скрин терминала

image.thumb.png.341130edd71ec38b807c2a657f696e4c.png

 

Увидел, как добавлен speedtest.net догадался добавить также

// Настройка подключений через VPS с помощью доменных имен

"whoer.net", сохраняю обновляю все заработало.

Объясните, пожалуйста.

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

Объясните, пожалуйста.

сам не сильно разобрался, удалите этот профиль 

"ext:geosite_v2fly.dat:whoer",

и добавте сайт как спид тест. 

Вообще сам бы хотел найти список этих профилей, но гугл не помог. 

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

и добавте сайт как спид тест. 

так и сделал, теперь хочется понимать принцип, как это работает

Возник еще вопрос, добавляю 2ip.ru, 2ip.io на них трафик не оборачивается, какие-то конфиги приоритетнее, получается. Возможно выборочно заворачивать трафик на сайты из ru? 

Изменено пользователем m0.graph
Опубликовано
23 минуты назад, m0.graph сказал:

Добрый вечер, помогите разобраться, как работает GeoSite и GeoIP? Документацию читал и не понимаю😐

  Показать содержимое

Сейчас конфиг из ленивой сборки

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

 

Хочу добавить например whoer.net

  Показать содержимое

добавляю в

// Настройка подключений через VPS с помощью доменных имен

"ext:geosite_v2fly.dat:whoer",

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
		  "ext:geosite_v2fly.dat:whoer", // добавил
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

Обновляю и всё ломается, кроме хуера никуда не идет трафик и айпи провайдера.

  Показать содержимое

Скрин терминала

image.thumb.png.341130edd71ec38b807c2a657f696e4c.png

 

Увидел, как добавлен speedtest.net догадался добавить также

// Настройка подключений через VPS с помощью доменных имен

"whoer.net", сохраняю обновляю все заработало.

Объясните, пожалуйста.

Доброго Вам вечера!

GeoSite | GeoIP — это уже готовые списки. Сайт, к примеру, Whoer, они не содержат)
Все их полезные категории вынесены в шапку темы.

Если вы хотите добавить whoer, то секция будет выглядеть следующим образом

// Настройка подключений через VPS с помощью доменных имен
{
  "inboundTag": ["socks-in"],
  "domain": [
    "speedtest.net",
    "ext:geosite_antifilter.dat:antifilter-community",
    "ext:geosite_v2fly.dat:openai",
    "ext:geosite_v2fly.dat:paypal",
    "ext:geosite_v2fly.dat:ebay",
    "ext:geosite_v2fly.dat:facebook",
    "whoer",
    "ext:geosite_v2fly.dat:instagram"
  ],
  "outboundTag": "proxy",
  "type": "field"
}

То есть, сайты, адрес которых содержит в себе whoer будут открываться через подключение outbounds c тегом proxy)

Опубликовано
16 минут назад, m0.graph сказал:

так и сделал, теперь хочется понимать принцип, как это работает

Возник еще вопрос, добавляю 2ip.ru, 2ip.io на них трафик не оборачивается, какие-то конфиги приоритетнее, получается. Возможно выборочно заворачивать трафик на сайты из ru? 

Если Вы хотите направить соединение с сайтами РФ, к примеру, на direct, то можно взять из ленивой конфигурации routing следующие заготовки:

"regexp:^([\\w\\-\\.]+\\.)ru$",  // .ru
"regexp:^([\\w\\-\\.]+\\.)su$",  // .su
"regexp:^([\\w\\-\\.]+\\.)xn--p1ai$",  // .рф
"regexp:^([\\w\\-\\.]+\\.)xn--p1acf$",  // .рус
"regexp:^([\\w\\-\\.]+\\.)xn--80asehdb$",  // .онлайн
"regexp:^([\\w\\-\\.]+\\.)xn--c1avg$", // .орг
"regexp:^([\\w\\-\\.]+\\.)xn--80aswg$",  // .сайт
"regexp:^([\\w\\-\\.]+\\.)xn--80adxhks$",  // .москва
"regexp:^([\\w\\-\\.]+\\.)moscow$",  //  .moscow
"regexp:^([\\w\\-\\.]+\\.)xn--d1acj3b$",  // .дети
"ext:geosite_v2fly.dat:category-gov-ru"

 

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

Добрый вечер, подскажите, как правильно добавить в роутинг игры из google play, кроме названия игры собственно ничего не известно.

Здравствуйте!

К сожалению, если кроме названия игры ничего не известно, то никак.
Нужно выяснить, на каком сервере работает игра. Его ip/domain, а потом внести в списки.

Для этого можно написать в поддержку игры. Обычно, они без проблем отвечают на такие вопросы.

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

Спасибо огромное! Заработало!

Но, в рамках помощи ловли багов - и теперь ругается на превышение полномочий) :

  Показать содержимое

~ # xkeen -status
  Xray не запущен
~ # xkeen -start
Xray 1.8.4 (Xray, Penetrates Everything.) Custom (go1.21.0 linux/mipsle)
A unified platform for anti-censorship.
2023/10/05 20:50:15 Using confdir from arg: /opt/etc/xray/configs
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/01_log.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/02_stats.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/03_dns.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/04_reverse.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/05_fake-dns.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/06_transport.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/07_inbounds.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/08_outbounds.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/09_policy.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/10_routing.json
2023/10/05 20:50:15 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/11_fallbacks.json
  Xray запущен
/opt/etc/init.d/S24xray: line 195: /opt/etc/ndm/netfilter.d/xray.sh: Permission denied


BusyBox v1.36.1 (2023-09-01 19:09:45 UTC) built-in shell (ash)

строка 195 это выходит

$ndm/xray.sh

однако работает!) продолжаю тестирование, ещё раз спасибо!

Добавка:

/opt/etc/init.d/S24xray: line 195: /opt/etc/ndm/netfilter.d/xray.sh: Permission denied

ошибка исправилась пермишенами на файл /opt/etc/ndm/netfilter.d/xray.sh. Теперь работает, в том числе после перезагрузки

ЗЫ несколько токенов bep20, а вот с адресом trc20 возникла проблема (ругается кошель) (смотрел на гитхабе)

Доброго Вам вечера)

В первую очередь благодарю за поддержку. С trc20 и правда проблема, спасибо за замечание)
Где-то послезавтра будет обновление, в котором будет полноценно исправлена проблема с внесением правил и, скорее всего, с tproxy)

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

То есть, сайты, адрес которых содержит в себе whoer будут открываться через подключение outbounds c тегом proxy)

Спасибо за ответ. Накрутил чего-то, у меня перестали открываться запрещенные сайты. Заново скопировал конфиг из шапки

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

Этот

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

Заработало. Хуера в нем нет, на него трафик заворачивается и ip сокса показывает. Не понимаю🫤

УПД: я не перезапустил xray

Изменено пользователем m0.graph
Опубликовано
Только что, m0.graph сказал:

Спасибо за ответ. Накрутил чего-то, у меня перестали открываться запрещенные сайты. Заново скопировал конфиг из шапки

  Скрыть содержимое

Этот

// Настройка маршрутизации

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      // Настройка черного списка
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "ext:geosite_v2fly.dat:category-ads-all",
          "google-analytics",  // Могут быть проблемы с сервисами Google. Нужны тесты
          "analytics.yandex"  // Могут быть проблемы с сервисами Yandex. Нужны тесты
        ],
        "outboundTag": "block",
        "type": "field"
      },
      
      // Блокируем соединение по уязвимым UDP портам
      {
        "inboundTag": ["socks-in"],
        "network": "udp",
        "port": "135, 137, 138, 139",
        "outboundTag": "block",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью доменных имен
      {
        "inboundTag": ["socks-in"],
        "domain": [
          "speedtest.net",
          "ext:geosite_antifilter.dat:antifilter-community",
          "ext:geosite_v2fly.dat:openai",
          "ext:geosite_v2fly.dat:paypal",
          "ext:geosite_v2fly.dat:ebay",
          "ext:geosite_v2fly.dat:facebook",
          "ext:geosite_v2fly.dat:instagram"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },
	  
      // Настройка подключений через VPS с помощью IP
      {
        "inboundTag": ["socks-in"],
        "ip": [
          "ext:geoip_antifilter.dat:antifilter",
          "ext:geoip_antifilter.dat:antifilter-community",
          "ext:geoip_v2fly.dat:facebook",
          "ext:geoip_v2fly.dat:netflix",
          "ext:geoip_v2fly.dat:twitter"
        ],
        "outboundTag": "proxy",
        "type": "field"
      },

      // Направление остальныех соединений на VPS
      {
        "inboundTag": ["socks-in"],
        "outboundTag": "direct",
        "type": "field"
      }
    ]
  }
}

Заработало. Хуера в нем нет, на него трафик заворачивается и ip сокса показывает. Не понимаю🫤

Перед тестированием новых конфигураций, нужно почистить кэш браузера и перезапустить сам xkeen)

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

Доброго Вам вечера)

В первую очередь благодарю за поддержку. С trc20 и правда проблема, спасибо за замечание)
Где-то послезавтра будет обновление, в котором будет полноценно исправлена проблема с внесением правил и, скорее всего, с tproxy)

🤝 и вам большое спасибо за поддержку. К сожалению, имею опыт подобных кошельков... надеюсь у вас будет более положительный, но сильно на них надеятся нельзя конечно... на хабре /давно/ была статья хорошая про это.

Меня в таком виде вполне устраивает, более того, на период своего отьезда я отключу даже обновления самого роутера - во избежании). Для статистике, на виве из моего профиля (актуальной) вышло ~30-32мбит/с в обе стороны, без туна - 230-250. Роутер работает в режиме беспроводного клиента 5gHz. Режет нехило (ифон на этом профиле даёт 200 мбит серверных), но мне хватает вполне.

Мне бы теперь понять, как надёжно с DNS поступить... я настроил не один десяток днс-серверов/резолверов, но вот никак не понимаю, что китайцы имеют ввиду под названием fakedns 😆. Возможно конечно просто не разобрался с wireshark в руках)

Опубликовано (изменено)
2 часа назад, Sercha сказал:

🤝 и вам большое спасибо за поддержку. К сожалению, имею опыт подобных кошельков... надеюсь у вас будет более положительный, но сильно на них надеятся нельзя конечно... на хабре /давно/ была статья хорошая про это.

Меня в таком виде вполне устраивает, более того, на период своего отьезда я отключу даже обновления самого роутера - во избежании). Для статистике, на виве из моего профиля (актуальной) вышло ~30-32мбит/с в обе стороны, без туна - 230-250. Роутер работает в режиме беспроводного клиента 5gHz. Режет нехило (ифон на этом профиле даёт 200 мбит серверных), но мне хватает вполне.

Мне бы теперь понять, как надёжно с DNS поступить... я настроил не один десяток днс-серверов/резолверов, но вот никак не понимаю, что китайцы имеют ввиду под названием fakedns 😆. Возможно конечно просто не разобрался с wireshark в руках)

На самом деле, в большинстве случаев, скорость будет выше, чем ~30мб. Если шифрование не требуется в задаче (xtls шифрует только еще не зашифрованное соединение), то скорость может достигать ~90-120мб в Вашем случае)

fakedns — свой сервер, который разрешает DNS запросы в ip адреса.
К примеру, мы можем указать ya.ru разрешать в 192.168.1.1 и клиента будет перенаправлять на web роутера при попытке открыть ya.ru)

Но, тут важно уточнить, что Xray не создает сам по себе FakeDNS сервер, а только умеет работать с уже созданным)

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

так же не стартует после перезагрузки

после перезагрузки роутера?
если да - аналогичная ситуация: роутер по крону раз в неделю перезагружается и xkeen не стартует.

Но если я правильно помню, уважаемая Skrill0 планировала в следующих апдейтах пофиксить этот момент.

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

Здравствуйте, нужна помощь.
Установил  xkeen в качестве конфига использовал 07_s_inbounds, 10_d_routing и 08_outbounds.
Создал политику, в которой оставил только прокси, когда направляю в неё устройство, то ни один сайт не открывается
xkeen -status пишет, что Xray запущен
В чём может быть ошибка?

xkeen -startimage.thumb.png.da24844e36de276babb460c240759ff2.png

Прокси keeneticimage.thumb.png.1ae5b308f54298b78d0b60d9c0351f0e.png

image.png

Опубликовано
4 минуты назад, Илья Фёдоров сказал:

Здравствуйте, нужна помощь.
Установил  xkeen в качестве конфига использовал 07_s_inbounds, 10_d_routing и 08_outbounds.
Создал политику, в которой оставил только прокси, когда направляю в неё устройство, то ни один сайт не открывается
xkeen -status пишет, что Xray запущен
В чём может быть ошибка?

xkeen -startimage.thumb.png.da24844e36de276babb460c240759ff2.png

Прокси keeneticimage.thumb.png.1ae5b308f54298b78d0b60d9c0351f0e.png

image.png

Как минимум один момент точно некорректный: на скрине кинетика в типе прокси-подключения поставьте Socksv5

+ я бы добавил DoT\DoH, на всякий случай.

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

Как минимум один момент точно некорректный: на скрине кинетика в типе прокси-подключения поставьте Socksv5

+ я бы добавил DoT\DoH, на всякий случай.

 

Здравствуйте, спасибо, всё заработало

Опубликовано (изменено)
4 минуты назад, m0.graph сказал:

можно исключить устройства из правил xkeen

в режиме proxy это делается добавлением/удалением уст-ва в политике, в режиме redirect все уст-ва работают через Xray

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

в режиме proxy это делается добавлением/удалением уст-ва в политике, в режиме redirect все уст-ва работают через Xray

В шапке конфиг 10_routing_p.json режим прокси, 10_d_routing.json режим директ?

В политике в вебе роутера?

Опубликовано
16 минут назад, m0.graph сказал:

В шапке конфиг 10_routing_p.json режим прокси, 10_d_routing.json режим директ?

В политике в вебе роутера?

07_s_inbounds.json | Для подключения по socks. К примеру, прокси-клиента Keenetic

07_r_inbounds.json | Для подключения по redirect.

Опубликовано
17 минут назад, m0.graph сказал:

В шапке конфиг 10_routing_p.json режим прокси, 10_d_routing.json режим директ?

В политике в вебе роутера?

07_s_inbounds режим прокси в вебе Кнетика

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

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

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

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

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

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

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

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