[Openwrt] Низкая скорость TUN режима в sing-box

Здравствуйте! Поставил себе на роутер (в моем случае это raspberry pi 4) singbox, настроил обход ру зоны, проксирование заблокированных сайтов, всё ок. Но я не могу получить выше 100 мбит в режиме обхода (скорость проксирования еще меньше, хотя с телефона всё ок), при замерах скорости процессор роутера нагружен только на 50%. При отключении singbox скорость поднимается до привычных 500 мбит. Кто-то знает как это исправить?

Как вариант настройки роутинга чекать, если там что-то большее чем фильтр по “.ru”, и так далее. Я когда пытался роутинг настраивать, то и интернет себе вырубал ими, то скорость в хлам сажал, тонкая тема походу. Сейчас вот такие юзаю, не знаю насколько адекватные:

Спойлер
{
    "rules": [
        {
            "outbound": "direct",
            "protocol": [
                "bittorrent"
            ]
        },
        {
            "domain_suffix": [
                ".ru",
                ".su",
                ".xn--p1ai"
            ],
            "outbound": "direct"
        },
        {
            "geoip": [
                "private",
                "ru"
            ],
            "outbound": "direct"
        },
        {
            "outbound": "direct",
            "process_name": [
                "GoogleDriveFS.exe",
                "onedrive.exe",
                "dropbox.exe",
                "YandexDisk2.exe",
                "qbittorrent.exe",
                "steam.exe",
                "steamservice.exe",
                "steamwebhelper.exe",
                "Code.exe",
                "conhost.exe",
                "wslservice.exe"
            ]
        },
        {
            "outbound": "direct",
            "package_name": [
                "com.google.android.apps.docs",
                "ru.rostel",
                "ru.sberbankmobile",
                "ru.tinkoff.investing",
                "ru.sberbank.investor",
                "ru.ozon.app.android",
                "ru.alfabank.mobile.android",
                "com.vk.vkvideo",
                "ru.rutube.app",
                "com.uma.musicvk",
                "ru.kinopoisk",
                "ru.more.play",
                "ru.mts.mtstv",
                "com.zvooq.openplay",
                "ru.rt.video.app.mobile",
                "ru.vtb24.mobilebanking.android",
                "com.avito.android",
                "com.vkontakte.android",
                "ru.yandex.music",
                "ru.yandex.yandexmaps",
                "ru.yandex.disk",
                "com.octopod.russianpost.client.android",
                "com.wildberries.ru",
                "ru.foodfox.client",
                "ru.yandex.taxi",
                "ru.dodopizza.app",
                "com.adguard.android",
                "moe.nb4a",
                "ru.nspk.mirpay",
                "ru.dns.shop.android",
                "ru.aliexpress.buyer",
                "com.yandex.searchapp",
                "ru.vk.store",
                "org.fdroid.fdroid",
                "com.android.vending"
            ]
        },
        {
            "geosite": [
                "category-ads-all"
            ],
            "outbound": "block"
        }
    ]
}

p.s: не шарю в роутерах, использую nekoray на пк, увидел в заголовке “sing-box”, и думаю что там одинаковые конфиги.

del

Через сокс столько же?

Извиняюсь за задержку. Похоже, после смены режима на TProxy проблема решилась, а проксирование UDP (Для дискорда) всё также работает. Не ясно тогда, зачем вообще был добавлен TUN, раз так сильно скорость режет. Через сокс также скорость нормальная

роуты никак по моим тестам не влияли на скорость, по крайней мере между правилами antizapret и refilter не заметил разницы (либо она была очень незначительная)

для винды, для удобства настройки

а, точно :slight_smile:

Подскажите, пожалуйста, как должен выглядеть inbound с TProxy и нужно ли для его работы прописывать какие-либо правила в firewall и network в openwrt (помимо тех, что были прописаны для работы tun)?

У меня сейчас сделан tun, и точно такая же проблема что у вас - упала скорость до 100 мбит.

Мой текущий inbounds в sing-box
"inbounds": [
                {
                        "tag": "all-in",
                        "type": "tun",
                        "domain_strategy": "ipv4_only",
                        "inet4_address": "172.16.0.1/30",
                        "mtu": 9000,
                        "stack": "system",
                        "auto_route": true,
                        "strict_route": false,
                        "sniff": true,
                        "sniff_override_destination": true
                }
        ],
Правила, добавленные в network
config interface 'proxy'
        option proto 'none'
        option device 'tun0'
        option defaultroute '0'
        option delegate '0'
        option peerdns '0'
        option auto '1'
Правила, добавленные в firewall
config zone
        option name 'proxy'
        option forward 'REJECT'
        option output 'ACCEPT'
        option input 'ACCEPT'
        option masq '1'
        option mtu_fix '1'
        option device 'tun0'
        option family 'ipv4'
        list network 'tun0'

config forwarding
        option dest 'proxy'
        option src 'lan'
        option family 'ipv4'

inbound:

        {
            "type": "tproxy",
            "tag": "tproxy-in",
            "listen_port": 12345,
            "sniff": true,
            "tcp_fast_open": true
        }

xray.nft (нашел в интернете, без понятия что делает, но работает):

#!/usr/sbin/nft -f

flush ruleset

define RESERVED_IP = {
    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,
    224.0.0.0/4,
    240.0.0.0/4,
    255.255.255.255/32
}

table ip xray {
    chain prerouting {
        type filter hook prerouting priority mangle; policy accept;
        ip daddr $RESERVED_IP return
        ip saddr $RESERVED_IP return
        ip daddr 192.168.2.0/16 tcp dport != 53 return
        ip daddr 192.168.2.0/16 udp dport != 53 return
        ip protocol tcp tproxy to 127.0.0.1:12345 meta mark set 1
        ip protocol udp tproxy to 127.0.0.1:12345 meta mark set 1
    }
    chain output {
        type route hook output priority mangle; policy accept;
        ip daddr $RESERVED_IP return
        ip saddr $RESERVED_IP return
        ip daddr 192.168.2.0/16 tcp dport != 53 return
        ip daddr 192.168.2.0/16 udp dport != 53 return
        meta mark 2 return
        ip protocol tcp meta mark set 1
        ip protocol udp meta mark set 1
    }
}

Спасибо! Пока не до конца разобрался с TProxy, настроил FakeIP, чтобы в tun заворачивался не весь трафик, а только нужные домены. Проблема решилась.