Jump to content

Выход руководств зависит от свободного времени автора и востребованности со стороны сообщества  

132 members have voted

  1. 1. Какого руководства для Xray не хватает?

    • Как выбрать VPS-сервер
      23
    • Настройки DNS
      13
    • Настройки Reverse Proxy
      6
    • Настройки FakeDNS (Только часть Xray)
      5
    • Настройки транспортных протоколов
      1
    • Настройки входящего соединения
      7
    • Настройки исходящего соединения
      4
    • Настройки политик доступа
      5
    • Настройки маршрутизации
      46
    • Настройки Fallback
      2
    • Конфигурация для максимальной анонимности
      11
    • Конфигурация для максимальной защищенности
      9


Recommended Posts

16 часов назад, jameszero сказал:

На Giga тот же процессор, что и на Viva, только памяти больше. Вы всё таки попробуйте zkeen, не понравится, вернётесь к своему списку обхода. Кстати, вы оптимизацию сервера выполнили?

Спасибо! На zkeen тоже самое, не понимаю. Причем долго открывается только при заходе на сайт. Внутри сайта все хорошо. А так же не понятны вылеты в онлайн играх, трафик же идет напрямую в них. Еще как я понял на встроенном прокси клиенте кинетика завезли udp в бете. Как его активировать?

Link to comment
Share on other sites

6 часов назад, jameszero сказал:

Доброе утро!

Для оптимизации подключения с клиентской стороны, можно добавить следующие параметры в outbound на роутере:

 

Здравствуйте! Не совсем понятно, как данный фрагмент вставить в outbound. У меня после вставки выдает ошибку. Можете, пожалуйста, сделать готовый файл outbound? Мне не нужны вообще никакие фильтры, у меня весь трафик напрямую идет через xkeen на VPS. Цель - максимально облегчить и ускорить веб-серфинг.

Link to comment
Share on other sites

В 10.01.2024 в 19:12, Skrill0 сказал:

Добавлено
01. Режим TProxy | Спасибо @avn, @Alexey77, @bigpu, @Pawant, @Le ecureuil
02. Миграция модулей прошивки
03. GeoSite Zkeen от
@jameszero
04. Умные правила iptables
05. Поддержка чистого DNS сервиса от Xray для конкретной политики
06. Оптимизация сервера.

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

Установил обновление, спасибо!
Но вот не могу найти файл GeoSite Zkeen. Понимаю, что его можно скачать отдельно и добавить, но мне просто интересно где он находится после установки обновления.

 

UPD: Нашёл, нужно выбрать соответствующий пункт при установке Xkeen, и тогда он появится.

Edited by LexxWin
Link to comment
Share on other sites

На виртуальной машине (192.168.1.102) запущен Сервер.

На роутере открыт порт 50458, и направляет на 8090 для того, чтобы иметь доступ извне по доменному имени.

 

На новой версии Xkeen, я не могу получить доступ к Серверу.

Подключаюсь локально, по адресу 192.168.1.102:8090 - доступен, но по 192.168.1.102:50458 - недоступен.

Отключаю Xkeen, есть доступ.


На старой версии Xkeen настроенной через Redirect, это работало.

Подскажите пожалуйста как это исправить?
Или по крайней мере как отключить TProxy, может хотя бы через Redirect у меня заработает.

 

UPD: Здесь тоже сработал прошлый совет от @Alexey77, когда у меня не работал telegram.

Отредактировал параметр: port_donor="80,443", в файле "S24xray",  по пути "opt\etc\init.d"

После перезапуска Xkeen - заработало.

Edited by LexxWin
Link to comment
Share on other sites

Модули ядра подсистемы Netfilter после выполнения команды

xkeen -modules

находятся в etc\ndm\netfilter.d ?

 

UPD: Нашёл, здесь находятся: /opt/lib/modules

Edited by LexxWin
Link to comment
Share on other sites

Всем привет!

подскажите, пожалуйста, возможна ли работа сабжа с уже установленным adguard?

-----------

Прошу прощения, поиск по ключевым словам не дал ничего, но в инструкции увидел о возможности такой работы. попробую

------------

с adguard home все работает корректно, вроде.

вопрос - как добавить свой список блокировки рекламы? Вот тут есть список без дублей, собранный из многих других списков. одно кольцо, чтоб править всеми, так сказать

 

Edited by dok
список рекламы
Link to comment
Share on other sites

Никак не получилось завести при помощи Redirect-mode на версии 1.0, при этом через Proxy работает. 
Есть идеи, куда нужно копать, чтобы решить проблему? Inbounds настраивал правильно, прописывал dokodemo-door, а вот правила маршрутизации не создавались

iptables -t nat -nL xkeen -v

писал, что ничего нет.

UPD. Смог завести на TProxy. Чудеса, да и только

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

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

Подскажите что делаю не так? Есть Keenetic Extra. Xkeen установился без проблем. VPS тоже настроен, с мобильного клиента и с компьютера отлично работает.

после запуска xkeen, сообщений об ошибках конфигурации нет. Но на vps сервере в панели 3x-ui клиент Offline.

root@Keenetic-2330:~$ xkeen -start
Xray 1.8.7 (Xray, Penetrates Everything.) 3f0bc13 (go1.21.5 linux/mipsle)
A unified platform for anti-censorship.
2024/01/18 09:47:07 Using confdir from env: /opt/etc/xray/configs
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/01_log.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/02_stats.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/03_dns.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/04_reverse.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/05_fake-dns.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/06_transport.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/07_inbounds.json
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/07_inbounds.json] appended inbound with tag: socks-in
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/08_outbonds.json
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: proxy
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: direct
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: block
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/09_policy.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/10_routing.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/11_fallbacks.json
  Прокси-клиент запущен
 

Подскажите пожалуйста, что делаю не так? В логах xray на кинетике ставил уровень debug. Но активной записи в него не идёт.

2024/01/18 10:10:03 [Debug] app/log: Logger started
2024/01/18 10:10:03 [Debug] app/router: MphDomainMatcher is enabled for 703 domain rule(s)
2024/01/18 10:10:03 [Debug] app/router: MphDomainMatcher is enabled for 2 domain rule(s)
2024/01/18 10:10:03 [Debug] app/proxyman/inbound: creating stream worker on 192.168.1.1:54836
2024/01/18 10:10:03 [Info] transport/internet/tcp: listening TCP on 192.168.1.1:54836
2024/01/18 10:10:03 [Warning] core: Xray 1.8.7 started
 

Причём в политиках роутинга выставил направлять клиента кинетик на прокси соединение у клиента вообще никакого интернета нет, даже адреса днс не резолвит...

Link to comment
Share on other sites

Добрый вечер.

Помогите разобраться. Сейчас настроен Xkeen в режиме REDIRECT, все работает, но хочу заставить работать TPROXY и не получатеся. Конфиги все, кроме 07_inbounds.json одинаковые, сервисы перенесены на 8443, порт 443 открыт и направлен на "Этот интернет-центр". Проверял перенаправляя его на другой хост в локалке, снаружи доступ есть. Компоненты нужные установлены. Один раз даже взлетело и заработало, но после перезагрузки роутера работать перестало и трафик больше не идет. Повторно заставить работать не получается. Статус кинетика в панели X-UI остается offline, при том, что при REDIRECT стабильно горит online.

Вот inbounds, которым пользуюсь и с которым не работает.

Скрытый текст
{
    "inbounds": [
        {
            "listen": "192.168.1.1",
            "port": 54836,
            "protocol": "dokodemo-door",
            "settings": {
                "network": "tcp,udp",
                "followRedirect": true
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http", 
                    "tls", 
                    "quic"
                ]
            },
            "streamSettings": {
                "sockopt": {
                  "tproxy": "tproxy"
                }
              },
            "tag": "socks-in"
        }
    ]
}

 

 

Edited by Gmarapet
Link to comment
Share on other sites

2 часа назад, jameszero сказал:
"listen": "127.0.0.1",

Тот же результат.

Так заработало. В первый раз опечатался. 

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

48 минут назад, Gmarapet сказал:

Добрый вечер.

Помогите разобраться. Сейчас настроен Xkeen в режиме REDIRECT, все работает, но хочу заставить работать TPROXY и не получатеся. Конфиги все, кроме 07_inbounds.json одинаковые, сервисы перенесены на 8443, порт 443 открыт и направлен на "Этот интернет-центр". Проверял перенаправляя его на другой хост в локалке, снаружи доступ есть. Компоненты нужные установлены. Один раз даже взлетело и заработало, но после перезагрузки роутера работать перестало и трафик больше не идет. Повторно заставить работать не получается. Статус кинетика в панели X-UI остается offline, при том, что при REDIRECT стабильно горит online.

Вот inbounds, которым пользуюсь и с которым не работает.

  Показать содержимое
{
    "inbounds": [
        {
            "listen": "192.168.1.1",
            "port": 54836,
            "protocol": "dokodemo-door",
            "settings": {
                "network": "tcp,udp",
                "followRedirect": true
            },
            "sniffing": {
                "enabled": true,
                "destOverride": [
                    "http", 
                    "tls", 
                    "quic"
                ]
            },
            "streamSettings": {
                "sockopt": {
                  "tproxy": "tproxy"
                }
              },
            "tag": "socks-in"
        }
    ]
}

 

 

И Вам доброго вечера!

Покажите, пожалуйста, после запуска XKeen результаты следующих команд:

cat /opt/etc/ndm/netfilter.d/proxy.sh
iptables -t mangle -nL PREROUTING -v
iptables -t mangle -nL xkeen -v

 

Link to comment
Share on other sites

В директории /etc/xray/configs/ нет лишних файлов или папок? Например, резервных копий конфигов. Они могут считываться и накладываться на настройки.

Удалите файл /etc/ndm/netfilter.d/xray.sh, если остался после обновления.

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

Добрый вечер! tproxy заработал (со 127.0.0.1 в конфиге inbounds), для диагностики просили:

Скрытый текст
~ # iptables -t mangle -nL PREROUTING -v
Chain PREROUTING (policy ACCEPT 6507 packets, 2239K bytes)
 pkts bytes target     prot opt in     out     source               destination
   45  6140 _NDM_PREROUTING_MC  all  --  *      *       0.0.0.0/0            224.0.0.0/4
14274 3025K _NDM_IPSEC_PREROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0
14274 3025K _NDM_HOTSPOT_PRERT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
 8175  833K xkeen      all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0xffffd00 ! ctstate INVALID
~ # iptables -t mangle -nL xkeen -v
Chain xkeen (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/8
    0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8
   17  1166 RETURN     all  --  *      *       0.0.0.0/0            100.64.0.0/10
    0     0 RETURN     all  --  *      *       0.0.0.0/0            127.0.0.0/8
    0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16
    0     0 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.0.0.0/24
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.0.2.0/24
  547 56769 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16
    0     0 RETURN     all  --  *      *       0.0.0.0/0            198.18.0.0/15
    0     0 RETURN     all  --  *      *       0.0.0.0/0            198.51.100.0/24
    0     0 RETURN     all  --  *      *       0.0.0.0/0            203.0.113.0/24
   34  4831 RETURN     all  --  *      *       0.0.0.0/0            224.0.0.0/4
    0     0 RETURN     all  --  *      *       0.0.0.0/0            240.0.0.0/4
    0     0 RETURN     all  --  *      *       0.0.0.0/0            255.255.255.255
 7064  665K TPROXY     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            TPROXY redirect 127.0.0.1:54836 mark 0x111/0xffffffff
 1024  158K TPROXY     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            TPROXY redirect 127.0.0.1:54836 mark 0x111/0xffffffff
~ # cat /opt/etc/ndm/netfilter.d/proxy.sh
#!/bin/sh

mode_proxy="TPROXY"
network="tcp udp"
name_prerouting_chain="xkeen"
name_output_chain="xkeen_mask"
name_profile="xkeen"
port_proxy="54836"
port_donor=""
policy_mark="0xffffd00"
table_redirect="nat"
table_tproxy="mangle"
table_mark="0x111"
table_id="111"
file_dns=""
port_dns="53"
directory_os_modules=/lib/modules/4.9-ndm-5
directory_user_modules=/opt/lib/modules

load_module() {
    local module=${1}
    local directory_modules

    if [ -f "${directory_user_modules}/${module}" ]
    then
        directory_modules="${directory_user_modules}"
    else
        directory_modules="${directory_os_modules}"
    fi

    insmod ${directory_modules}/${module} >/dev/null 2>&1
}

if [ "${mode_proxy}" = "REDIRECT" ]; then
    network="tcp"
else
    network="tcp udp"
fi

if [ -n "${file_dns}" ]; then
        port_donor="${port_dns},${port_donor}"
fi

iptables_supported=$(command -v iptables >/dev/null 2>&1 && echo true || echo false)
ip6tables_supported=$(command -v ip6tables >/dev/null 2>&1 && echo true || echo false)

add_ipt_rule() {
    local family="${1}"
    local table="${2}"
    local chain="${3}"
    shift 3

    if { [ "${family}" = "iptables" ] && [ "${iptables_supported}" = "false" ]; } || { [ "${family}" = "ip6tables" ] && [ "${ip6tables_supported}" = "false" ]; }; then
        return
    fi


    if ! "${family}" -t "${table}" -nL ${name_prerouting_chain} >/dev/null 2>&1; then
        "${family}" -t "${table}" -N ${name_prerouting_chain} >/dev/null 2>&1 || exit 0

           add_exclude_rules ${name_prerouting_chain}

                for net in ${network}; do
            case "${mode_proxy}" in
                "REDIRECT")
                    "${family}" -t "${table}" -A ${name_prerouting_chain} -p "${net}" -j REDIRECT --to-port "${port_proxy}" >/dev/null 2>&1
                    ;;
                "TPROXY")
                    "${family}" -t "${table}" -A ${name_prerouting_chain} -p "${net}" -j TPROXY --on-ip "${proxy_ip}" --on-port "${port_proxy}" --tproxy-mark "${table_mark}" >/dev/null 2>&1
                    ;;
                *)
                    exit 0
                    ;;
            esac
        done
    fi

        if [ -n "${file_dns}" ]; then
                if ! "${family}" -t "${table}" -nL ${name_output_chain} >/dev/null 2>&1; then
                        "${family}" -t "${table}" -N ${name_output_chain} >/dev/null 2>&1 || exit 0

                        add_exclude_rules ${name_output_chain}

                        "${family}" -t "${table}" -A ${name_output_chain} -j CONNMARK --set-mark "${table_mark}"
                fi
        fi

}

add_exclude_rules() {
    local chain="${1}"

        for exclude in ${exclude_list}; do
                if ([ "${exclude}" = "192.168.0.0/16" ] || [ "${exclude}" = "fd00::/8" ]) && [ -n "${file_dns}" ]; then
                        "${family}" -t "${table}" -A ${chain} -d "${exclude}" -p tcp ! --dport 53 -j RETURN 2>/dev/null
                        "${family}" -t "${table}" -A ${chain} -d "${exclude}" -p udp ! --dport 53 -j RETURN 2>/dev/null
                else
                        "${family}" -t "${table}" -A ${chain} -d "${exclude}" -j RETURN 2>/dev/null
                fi
        done
}

configure_route() {
    local ip_version="${1}"
    if ! ip -"${ip_version}" rule show | grep -q "fwmark ${table_mark} lookup ${table_id}" >/dev/null 2>&1; then
        ip -"${ip_version}" rule add fwmark "${table_mark}" lookup "${table_id}" >/dev/null 2>&1
        ip -"${ip_version}" route add local default dev lo table "${table_id}" >/dev/null 2>&1
    fi
}

case "${mode_proxy}" in
    "TPROXY")
        active_table="${table_tproxy}"
        load_module xt_TPROXY.ko
        ;;
    "REDIRECT")
        active_table="${table_redirect}"
        ;;
    *)
        exit 0
        ;;
esac

for family in iptables ip6tables; do
    if [ "${family}" = "ip6tables" ]; then
        exclude_list="0000::/8 0100::/64 0200::/7 2001:0002::/48 2001:0010::/28 2001:0db8::/32 2002::/16 3ffe::/16 fc00::/7 fd00::/8 fe80::/10 fec0::/10 ff00::/8 ::1/128 ::ffff:0:0/96 64:ff9b::/96 64:ff9b:1::/48 100::/64 2001::/23"
        proxy_ip="::1"
        configure_route 6
    else
        exclude_list="0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"
        proxy_ip="127.0.0.1"
        configure_route 4
    fi

        add_ipt_rule "${family}" "${active_table}" "${name_prerouting_chain}"

        if [ -n "${file_dns}" ]; then
                add_ipt_rule "${family}" "${active_table}" "${name_output_chain}"
        fi

done

if [ -n "${port_donor}" ]; then

        load_module xt_multiport.ko
        load_module xt_owner.ko
    for net in ${network}; do
        for family in iptables ip6tables; do
            if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
                iptables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1
            fi
            if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
                ip6tables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1
            fi
                        if [ -n "${file_dns}" ]; then
                                if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1; }; then
                                        iptables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1
                                fi
                                if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1; }; then
                                        ip6tables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1
                                fi
                        fi
        done
    done
else
    for family in iptables ip6tables; do
        if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
            iptables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1
        fi
        if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
            ip6tables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1
        fi

                if [ -n "${file_dns}" ]; then
                        if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1; }; then
                                iptables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1
                        fi
                        if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1; }; then
                                ip6tables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1
                        fi
                fi
    done
fi

exit 0

 

 

Edited by Konstantin Rezvykh
  • Thanks 2
Link to comment
Share on other sites

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

Покажите, пожалуйста, после запуска XKeen результаты следующих команд:

В первый раз вместо 127.0.0.1 написал 128.0.0.1, рука дрогнула.

Исправил на 127.0.0.1 и все заработало.

Вот диагностика

cat /opt/etc/ndm/netfilter.d/proxy.sh

Скрытый текст
#!/bin/sh

mode_proxy="TPROXY"
network="tcp udp"
name_prerouting_chain="xkeen"
name_output_chain="xkeen_mask"
name_profile="xkeen"
port_proxy="54836"
port_donor=""
policy_mark="0xffffd02"
table_redirect="nat"
table_tproxy="mangle"
table_mark="0x111"
table_id="111"
file_dns=""
port_dns="53"
directory_os_modules=/lib/modules/4.9-ndm-5
directory_user_modules=/opt/lib/modules

load_module() {
    local module=${1}
    local directory_modules

    if [ -f "${directory_user_modules}/${module}" ]
    then
        directory_modules="${directory_user_modules}"
    else
        directory_modules="${directory_os_modules}"
    fi

    insmod ${directory_modules}/${module} >/dev/null 2>&1
}

if [ "${mode_proxy}" = "REDIRECT" ]; then
    network="tcp"
else
    network="tcp udp"
fi

if [ -n "${file_dns}" ]; then
	port_donor="${port_dns},${port_donor}"
fi

iptables_supported=$(command -v iptables >/dev/null 2>&1 && echo true || echo false)
ip6tables_supported=$(command -v ip6tables >/dev/null 2>&1 && echo true || echo false)

add_ipt_rule() {
    local family="${1}"
    local table="${2}"
    local chain="${3}"
    shift 3

    if { [ "${family}" = "iptables" ] && [ "${iptables_supported}" = "false" ]; } || { [ "${family}" = "ip6tables" ] && [ "${ip6tables_supported}" = "false" ]; }; then
        return
    fi


    if ! "${family}" -t "${table}" -nL ${name_prerouting_chain} >/dev/null 2>&1; then
        "${family}" -t "${table}" -N ${name_prerouting_chain} >/dev/null 2>&1 || exit 0
       
	   add_exclude_rules ${name_prerouting_chain}
		
		for net in ${network}; do
            case "${mode_proxy}" in
                "REDIRECT")
                    "${family}" -t "${table}" -A ${name_prerouting_chain} -p "${net}" -j REDIRECT --to-port "${port_proxy}" >/dev/null 2>&1
                    ;;
                "TPROXY")
                    "${family}" -t "${table}" -A ${name_prerouting_chain} -p "${net}" -j TPROXY --on-ip "${proxy_ip}" --on-port "${port_proxy}" --tproxy-mark "${table_mark}" >/dev/null 2>&1
                    ;;
                *)
                    exit 0
                    ;;
            esac
        done
    fi
	
	if [ -n "${file_dns}" ]; then
		if ! "${family}" -t "${table}" -nL ${name_output_chain} >/dev/null 2>&1; then
			"${family}" -t "${table}" -N ${name_output_chain} >/dev/null 2>&1 || exit 0
			
			add_exclude_rules ${name_output_chain}
			
			"${family}" -t "${table}" -A ${name_output_chain} -j CONNMARK --set-mark "${table_mark}"
		fi
	fi

}

add_exclude_rules() {
    local chain="${1}"
	
	for exclude in ${exclude_list}; do
		if ([ "${exclude}" = "192.168.0.0/16" ] || [ "${exclude}" = "fd00::/8" ]) && [ -n "${file_dns}" ]; then
			"${family}" -t "${table}" -A ${chain} -d "${exclude}" -p tcp ! --dport 53 -j RETURN 2>/dev/null
			"${family}" -t "${table}" -A ${chain} -d "${exclude}" -p udp ! --dport 53 -j RETURN 2>/dev/null
		else
			"${family}" -t "${table}" -A ${chain} -d "${exclude}" -j RETURN 2>/dev/null
		fi
	done
}

configure_route() {
    local ip_version="${1}"
    if ! ip -"${ip_version}" rule show | grep -q "fwmark ${table_mark} lookup ${table_id}" >/dev/null 2>&1; then
        ip -"${ip_version}" rule add fwmark "${table_mark}" lookup "${table_id}" >/dev/null 2>&1
        ip -"${ip_version}" route add local default dev lo table "${table_id}" >/dev/null 2>&1
    fi
}

case "${mode_proxy}" in
    "TPROXY")
        active_table="${table_tproxy}"
        load_module xt_TPROXY.ko
        ;;
    "REDIRECT")
        active_table="${table_redirect}"
        ;;
    *)
        exit 0
        ;;
esac

for family in iptables ip6tables; do
    if [ "${family}" = "ip6tables" ]; then
        exclude_list="0000::/8 0100::/64 0200::/7 2001:0002::/48 2001:0010::/28 2001:0db8::/32 2002::/16 3ffe::/16 fc00::/7 fd00::/8 fe80::/10 fec0::/10 ff00::/8 ::1/128 ::ffff:0:0/96 64:ff9b::/96 64:ff9b:1::/48 100::/64 2001::/23"
        proxy_ip="::1"
        configure_route 6
    else
        exclude_list="0.0.0.0/8 10.0.0.0/8 100.64.0.0/10 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 224.0.0.0/4 240.0.0.0/4 255.255.255.255/32"
        proxy_ip="127.0.0.1"
        configure_route 4
    fi
	
	add_ipt_rule "${family}" "${active_table}" "${name_prerouting_chain}"
	
	if [ -n "${file_dns}" ]; then
		add_ipt_rule "${family}" "${active_table}" "${name_output_chain}"
	fi

done

if [ -n "${port_donor}" ]; then
	
	load_module xt_multiport.ko
	load_module xt_owner.ko
    for net in ${network}; do
        for family in iptables ip6tables; do
            if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
                iptables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1
            fi
            if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
                ip6tables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -p "${net}" -m multiport --dports "${port_donor}" -j ${name_prerouting_chain} >/dev/null 2>&1
            fi
			if [ -n "${file_dns}" ]; then
				if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1; }; then
					iptables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1
				fi
				if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1; }; then
					ip6tables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m conntrack ! --ctstate INVALID  ! -p icmp  -j ${name_output_chain} >/dev/null 2>&1
				fi
			fi			
        done
    done
else
    for family in iptables ip6tables; do
        if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
            iptables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1
        fi
        if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1; }; then
            ip6tables -t "${active_table}" -A PREROUTING -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID -j ${name_prerouting_chain} >/dev/null 2>&1
        fi
		
		if [ -n "${file_dns}" ]; then
			if [ "${family}" = "iptables" ] && { ! iptables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1; }; then
				iptables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1
			fi
			if [ "${family}" = "ip6tables" ] && { ! ip6tables -t "${active_table}" -C OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1; }; then
				ip6tables -t "${active_table}" -A OUTPUT -m owner ! --gid-owner ${name_profile} -m connmark --mark "${policy_mark}" -m conntrack ! --ctstate INVALID ! -p icmp -j ${name_output_chain} >/dev/null 2>&1
			fi
		fi
    done	
fi

exit 0

 


iptables -t mangle -nL PREROUTING -v

Скрытый текст
Chain PREROUTING (policy ACCEPT 19001 packets, 21M bytes)
 pkts bytes target     prot opt in     out     source               destination
   70 10684 _NDM_PREROUTING_MC  all  --  *      *       0.0.0.0/0            224.0.0.0/4
25265   22M _NDM_IPSEC_PREROUTING  all  --  *      *       0.0.0.0/0            0.0.0.0/0
25265   22M _NDM_HOTSPOT_PRERT  all  --  *      *       0.0.0.0/0            0.0.0.0/0
 7773 1169K xkeen      all  --  *      *       0.0.0.0/0            0.0.0.0/0            connmark match  0xffffd02 ! ctstate INVALID

 


iptables -t mangle -nL xkeen -v

Скрытый текст
Chain xkeen (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/8
    0     0 RETURN     all  --  *      *       0.0.0.0/0            10.0.0.0/8
    5   300 RETURN     all  --  *      *       0.0.0.0/0            100.64.0.0/10
    0     0 RETURN     all  --  *      *       0.0.0.0/0            127.0.0.0/8
    0     0 RETURN     all  --  *      *       0.0.0.0/0            169.254.0.0/16
    0     0 RETURN     all  --  *      *       0.0.0.0/0            172.16.0.0/12
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.0.0.0/24
    0     0 RETURN     all  --  *      *       0.0.0.0/0            192.0.2.0/24
 1515  230K RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/16
    0     0 RETURN     all  --  *      *       0.0.0.0/0            198.18.0.0/15
    0     0 RETURN     all  --  *      *       0.0.0.0/0            198.51.100.0/24
    0     0 RETURN     all  --  *      *       0.0.0.0/0            203.0.113.0/24
   49  8150 RETURN     all  --  *      *       0.0.0.0/0            224.0.0.0/4
    0     0 RETURN     all  --  *      *       0.0.0.0/0            240.0.0.0/4
    0     0 RETURN     all  --  *      *       0.0.0.0/0            255.255.255.255
 4807  678K TPROXY     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            TPROXY redirect 127.0.0.1:54836 mark 0x111/0xffffffff
 1680  283K TPROXY     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            TPROXY redirect 127.0.0.1:54836 mark 0x111/0xffffffff

 

3 часа назад, jameszero сказал:

В директории /etc/xray/configs/ нет лишних файлов или папок? Например, резервных копий конфигов. Они могут считываться и накладываться на настройки.

Удалите файл /etc/ndm/netfilter.d/xray.sh, если остался после обновления.

Лишних файлов нет. В /opt/etc/ndm/netfilter.d/ только proxy.sh

 

Edited by Gmarapet
  • Upvote 2
Link to comment
Share on other sites

10 часов назад, activio сказал:

Здравствуйте, на extra 2 заведется? usb есть у него.

Только что протестил. Завёлся через встроенный прокси. Через Redirect не пробывал. С редиректом еще не разобрался как настроить. Там видимо через iptables.

А можно попросить инструкцию для настойки REDIRECT или на какой странице форума она?

Link to comment
Share on other sites

14 часа назад, danil-v сказал:

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

Подскажите что делаю не так? Есть Keenetic Extra. Xkeen установился без проблем. VPS тоже настроен, с мобильного клиента и с компьютера отлично работает.

после запуска xkeen, сообщений об ошибках конфигурации нет. Но на vps сервере в панели 3x-ui клиент Offline.

root@Keenetic-2330:~$ xkeen -start
Xray 1.8.7 (Xray, Penetrates Everything.) 3f0bc13 (go1.21.5 linux/mipsle)
A unified platform for anti-censorship.
2024/01/18 09:47:07 Using confdir from env: /opt/etc/xray/configs
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/01_log.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/02_stats.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/03_dns.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/04_reverse.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/05_fake-dns.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/06_transport.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/07_inbounds.json
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/07_inbounds.json] appended inbound with tag: socks-in
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/08_outbonds.json
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: proxy
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: direct
2024/01/18 09:47:07 [Info] infra/conf: [/opt/etc/xray/configs/08_outbonds.json] prepend outbound with tag: block
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/09_policy.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/10_routing.json
2024/01/18 09:47:07 [Info] infra/conf/serial: Reading config: /opt/etc/xray/configs/11_fallbacks.json
  Прокси-клиент запущен
 

Подскажите пожалуйста, что делаю не так? В логах xray на кинетике ставил уровень debug. Но активной записи в него не идёт.

2024/01/18 10:10:03 [Debug] app/log: Logger started
2024/01/18 10:10:03 [Debug] app/router: MphDomainMatcher is enabled for 703 domain rule(s)
2024/01/18 10:10:03 [Debug] app/router: MphDomainMatcher is enabled for 2 domain rule(s)
2024/01/18 10:10:03 [Debug] app/proxyman/inbound: creating stream worker on 192.168.1.1:54836
2024/01/18 10:10:03 [Info] transport/internet/tcp: listening TCP on 192.168.1.1:54836
2024/01/18 10:10:03 [Warning] core: Xray 1.8.7 started
 

Причём в политиках роутинга выставил направлять клиента кинетик на прокси соединение у клиента вообще никакого интернета нет, даже адреса днс не резолвит...

Разобрался в чём дело. Нужно было в приоритетах подключений, в правилах с Xray так же ставить галку на подключении к провайдеру. И всё заработало!!!

 

  • Upvote 1
Link to comment
Share on other sites

1 час назад, danil-v сказал:

А можно попросить инструкцию для настойки REDIRECT или на какой странице форума она?

Доброе утро. В шапке темы написано и есть файлы 07_inbounds.json один для прокси другой для редирект. Используйте файл 07_r_inbounds.json и после перезагрузите роутер. 

  • Upvote 1
Link to comment
Share on other sites

Добрый день. И с праздником всех, кто празднует.

И снова у меня что-то не так. )

В режиме TProxy ломается доступ к устройствам внутри домашней сети через переадресацию портов.

Более подробно: внутри есть пара устройства, к которым нужен доступ снаружи. Обычно захожу на них по адресу my.domain:port, настроив  переадресацию на нужный порт на роутере. В режиме redirect доступ работает, переключаюсь на tproxy и доступа нет, хотя 10_routing.json в обоих случаях одинаковый.

Роутинг на xray настроен всё, кроме исключений, слать директом.

Как получить доступ в режиме tproxy?

Link to comment
Share on other sites

2 часа назад, Alexey77 сказал:

Вам может попробовать добавить порты xkeen -ap 80,443. 

Спасибо, помогло. Теперь заходит всюду, кроме keenetic-web, который на порту 8443.   Зайти на роутер получается только по локальному адресу или через приложение. https://myname.keenetic.pro:8443 по-прежнему не отвечает.

Link to comment
Share on other sites

13 часа назад, jameszero сказал:

у вас белый IP-адрес? Попробуйте добавить его с 32 маской в параметр ipv4_exclude

Спасибо, помогло.

Но как-то странно помогло. Извне всё открылось со всех устройств. А вот в локалке с PC открывается, с телефона Poco открывается, а с двух разных Google Pixel отваливается по таймауту. Меня это прямо обескураживает.

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

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

двух разных Google Pixel отваливается по таймауту.

Добрый день. Предполагаю что они используют dns роутера и вдобавок ещё dns от гугла. 

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.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...