Jump to content

Recommended Posts

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

 

Edited by Skrill0
Link to comment
Share on other sites

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 возникла проблема (ругается кошель) (смотрел на гитхабе)

Edited by Sercha
  • Thanks 1
Link to comment
Share on other sites

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

 

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

Edited by Роберт Зарипов
  • Upvote 1
Link to comment
Share on other sites

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

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

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

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

  • Настроил впс по мануалу
  • Проверил с тел через 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. Вытащил флешку с энтваре.

Link to comment
Share on other sites

Вопрос 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 идут через так же через прокси - буду благодарен за совет!

Link to comment
Share on other sites

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 без ошибок.

  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

23 минуты назад, Sercha сказал:

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

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

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

Link to comment
Share on other sites

13 минуты назад, m0.graph сказал:

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

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

Отлично, 🤝

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

  • Thanks 1
Link to comment
Share on other sites

Добрый вечер, помогите разобраться, как работает 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", сохраняю обновляю все заработало.

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

Edited by m0.graph
Link to comment
Share on other sites

2 минуты назад, m0.graph сказал:

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

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

"ext:geosite_v2fly.dat:whoer",

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

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

Link to comment
Share on other sites

8 минут назад, Roman Balaev сказал:

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

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

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

Edited by m0.graph
Link to comment
Share on other sites

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)

  • Thanks 1
Link to comment
Share on other sites

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"

 

  • Thanks 1
Link to comment
Share on other sites

1 час назад, Roman Balaev сказал:

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

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

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

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

  • Upvote 1
Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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

Edited by m0.graph
Link to comment
Share on other sites

Только что, 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)

Link to comment
Share on other sites

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

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

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

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

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

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

Link to comment
Share on other sites

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 сервер, а только умеет работать с уже созданным)

Edited by Skrill0
  • Thanks 1
Link to comment
Share on other sites

12 часа назад, Roman Balaev сказал:

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

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

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

Link to comment
Share on other sites

Здравствуйте, нужна помощь.
Установил  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

Link to comment
Share on other sites

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, на всякий случай.

  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

44 минуты назад, adk сказал:

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

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

 

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

Link to comment
Share on other sites

4 минуты назад, m0.graph сказал:

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

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

Edited by bigpu
  • Thanks 1
  • Upvote 1
Link to comment
Share on other sites

11 минуту назад, bigpu сказал:

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

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

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

Link to comment
Share on other sites

16 минут назад, m0.graph сказал:

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

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

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

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

  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...