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

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

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

Решил допилить установочный и обслуживающий скрипт для S-UI. Тестировал работу на Keenetic Ultra KN-1811 и Keenetic Peac. В целом на aarch64 (arm64)  точно работает. Других устройств у меня нет что бы протестировать, буду рад если кто-то опишет свой опыт установки на других версиях Keenetic.

П.С. Ставить отдельно Sing-Box не нужно, в S-UI встроен SingBox этот, ставим по инструкции ниже и больше ничего не нужно.

logo.png.4afca0e576e208138d805f8dc2164bfa.png

main_logo.thumb.png.055f4bbebed4c09e1c30dc6260b41ad5.png

 

Установка:

Спойлер
  1. Установить Curl и Bash:
    opkg update && opkg install curl bash
  2. Установка скрипта с выбором установки кастомной версии:
    curl -O https://gitlab.com/own-open-source/s-ui-keenetic/-/raw/main/s-ui.sh && bash s-ui.sh
  3. Установка скрипта рекомендованной версии сразу:
    curl -O https://gitlab.com/own-open-source/s-ui-keenetic/-/raw/main/s-ui.sh && bash s-ui.sh install

    Обновить скрипт и/или панель s-ui можно как вместе так и по отдельности через сам скрипт.

 

Проверка совместимости если не уверены: 

Спойлер
  • Нужно убедиться что стоит Entware: 
    command -v opkg
  • Проверить архитектуру:
    uname -m

Результат по  Entware должен быть: /opt/bin/opkg

Результат по архитектуре любой из списка ниже:

(x86_64 | x64 | amd64) = amd64,
(i*86 | x86) = 386,
(armv8* | armv8 | arm64 | aarch64) = arm64,
(armv7* | armv7 | arm) = armv7,
(armv6* | armv6) = armv6,
(armv5* | armv5) = armv5
(s390x) = s390x

Примеру ответа как у меня:

image.png.4be5ac7cb99a29e3e47d2ae1161d51a3.png

 

Пример настройки KeenDNS на панель:

Спойлер

1) В панельке обязательно установить в поле "Адрес" свой IP главного Bridge0, у меня Bridge0 = 192.168.160.1
photo_2025-11-21_20-20-05.jpg.dbb1d67b724d5c29860d82e0eb62afa3.jpg

2) В KeenDNS прописываем всё на основание скрина ниже, в IP указать Bridge0, порт который будет в S-UI, протокол HTTPS и придумываем свой DNS.

photo_2025-11-21_20-19-58.thumb.jpg.b2c9f6b7366b94431e7563e256ba1121.jpg

3) Собираем SSL сами или как на скрине ниже, выделил пути которые нужно потом будет вставить в панельку.

2025-11-21202355.thumb.png.2efabc6c3f4474ebc06871ac502ad9df.png

 

4) В панельке, в разделе settings прописываем в поле адрес Ваш Bridge0, SSL которые получили, порт и URL панели ( который указали в пункте 2. )

photo_2025-11-21_20-19-43.thumb.jpg.d21ccf38409e84c84404a45d987f832c.jpg

Готово, теперь можно зайти по KeenDNS в панельку.

 

Настройки:

1. Cвязь S-UI с Keenetic. Через SOCKS5 с работой по TCP и донастройкой для работы UDP или по Wireguard локально.

2. Маршрутизация трафика на основе запросов DNS/Domain, Wildcard, Keyword, RegEx, IP - CIDR, IP - LAN. А так же трафика по типу входящих протоколов (HTTP,TLS,QUiC,STUN,DNS,BitTorrent,DTLS,SSH,RDP,NTP), портов, источника IP, источника порта, сети TCP или UDP, версии IPv4 или IPv6, клиентов и входящих точках.

3. Индивидуальная настройка Keenetic под S-UI

Спойлер
  1. Cвязь S-UI с Keenetic. Далее читаем этот пункт внимательно. Есть два стабильных варианта решения подключения Keenetic к локальному S-UI, первый 1.1 это через локальный Proxy по SOCKS5 L5 уровень, его преимущество быстрая работа и малая нагрузка на роутер, минус главный в том что проходят TCP/UDP но не проходят ICMP которые нужны для таких вещей как умный дом и всего того что любит держать постоянные соединения. Вариант 1.3. подключение через локальный wireguard L3 уровень, плюс то что ВСЁ работает TCP/UDP/ICMP и канал держит долгие и стабильные соединения, но минус в том что wireguard из под Golang очень прожорлив и требует запас RAM, поэтому обязательно нужно дополнительно подключать SWAP и делать его донастройку по пункту 1.4.Можно сделать оба варианта подключения и управлять ими через WEB UI самого роутера в "Политики доступа в интернет", тут кому как нравиться. Решение с TUN работает, но не стабильно постоянно выдаёт ошибки из-за того что криво написан сам S-UI TUN на Golang, поэтому пока такая ситуация описания с настройкой TUN не будет.
    Спойлер

    1.1. Подключение к S-UI через локальный Proxy по SOCKS5, заходим в панель Keenetic и настраиваем proxy по SOCKS v5, жмём другие подключения и добавляем подключение в разделе прокси-подключения, протокол, адресс, тип аутентификации пишем как на скрине ниже, а подключаться через можно оставить любое, но предпочтительно выбрать свой Bridge0

    0.thumb.png.15288d0b4f2597d75a33e3b8e77fe3f9.png

    1.2. Теперь открываем у SOCKS5 пропуск UDP трафика иначе будет идти только TCP, для этого заходим в WEB CLI по адресу http://192.168.160.1/webcli/parse где 192.168.160.1 это ваш Bridge0 и вводим по порядку команды ниже.

    • show interface    - и ищем через поиск браузера "id" вашего созданного прокси, у меня "id": "Proxy1"

    0.1.thumb.png.92d79366a9e789d0a4ff68f9988979ed.png

    • interface {ID} proxy socks5-udp    - эта команда откроет UDP у SOCKS5, нужно обязательно сделать!

    0.2.png.7a1ee29e7f5741549a6dac92d11fb1cc.png

    • system configuration save    -  сохраняем настройки

    На этом всё, настройка SOCKS5 подключения завершена, теперь можно приступать к настройке SOCKS5 в S-UI, об этом во втором пункте если не требуется отдельно Wireguard.

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

    1.3. Подключение к S-UI через локальный Wireguard.

    Постарался сделать максимально общею схему единовременной настройки S-UI панели и панели Keenetic, открывает две страницы браузера как у меня и делим по половине экрана, картинку можно скачать и приблизить для наглядности, порядок следующий такой.

    image.thumb.png.97650a9fab829b93b8382a3cbae1f61b.png

    1.3.1. В левом окне где S-UI в панели вкладок тыкаем эндпоинты (endpoints), нажимаем добавить и выбираем Wireguard, сразу где "Пиры" тыкаем плюсик +, ключи создадуться автоматически, в правом окне Keenetic тыкаем "другие подключения" - > "+ Добавить подключение", в открышевся окне сразу тынким галку "Использовать для выхода в интернет" задайте имя подключения и потом тыкаем кнопку "+ Добавить пир". Теперь из левого окна из поля жёлтым "приватный ключ" копируем его в правое окно в поле "частный ключ", после чего появиться кнопка "Установить частный ключ", нажимаем эту кнопку! На всякий случай смотрим что в правом окне поле розовым "Публичный ключ" такое же как и в левом в поле "Публичный ключ пира". Теперь из левого окна зеленого поля "Публичный ключ" копируем в правое окно поле "Публичный ключ". 
    То что выделено синими полями сделайте просто как у меня 1 в 1. Оранжевые можете сделать уже на Ваше усмотрение, они не обязательны.

    Многие делают ошики прописывая через CLI такие команды interface Wireguard0 security-level private и ip nat Wireguard0, этого делать НЕ НАДО! Ведь интерфейс Wireguard локальный и он не на пряму ведёт в интернет, а через S-UI и private сломает его! А от nat толку не вижу. В итоге у нас зелёные значки "в сети" когда пустим через это соединение трафик (про это дальше в инструкции), как ниже на скриншоте у меня. Но обязательно сделайте пункт 1.3.2 со SWAP!

    image.thumb.png.0c668e30e91be22f3b929f3be3ad3170.png

     

    1.3.2. В Keenetic в разделе "настройки системы" ищем "производительность" и нажимаем галку как ниже на скрине.

    image.thumb.png.698eba9f0ea10e7e7c799614885bc93d.png

    Так же очень советую если диск позволяет, стоит не USB, а SSD как у меня, то подключить по инструкции swap на диск. 

    Далее в настройках системы выкачиваем startup-config

    image.png.084563d3567018f87b0a8f095e6b2275.png

    и после system добавляем как у меня, ниже можно скопировать, потом загружаем его обратно на роутер.

    image.png.5bdc87ed68b7735d908a96ba727fbd11.png

        set vm.dirty_background_ratio 3
        set vm.dirty_ratio 15
        set vm.min_free_kbytes 3072
        set vm.overcommit_memory 1
        set vm.overcommit_ratio 100
        set vm.page-cluster 0
        set vm.swappiness 100
        set vm.vfs_cache_pressure 30

    Я не говорю что это прям оптимальные настройки, но на краш тесте RAM через скрипт ниже

    python3 -c "import time; print('Выделяем память...'); a = b'x' * (2048 * 1024 * 1024); print('Готово! Смотри в htop. Скрипт закроется через минуту.'); time.sleep(60)"

    получилось в SWAP засунуть 2GB на NK-1812, скрин ниже

    image.thumb.png.c7de7996765c66261fbf818138eb0a35.png

    На этом всё можно приступать к дальнейшей настройки.

  2. Маршрутизация трафика на основе запросов и т.д.  настройка S-UI
    Спойлер

    2.1. Начнём с настройки inbounds, в левой панели выбираем входящие и нажимаем добавить, после чего выбираем тип SOCKS5 и указываем остальные настройки как у меня, клиенты я ставлю "никакие" это значит что SOCKS5 буде доступен без аутентификации по паролю и логину, т.к. у меня SOCKS5 внутри сети 127.0.0.1 мне не зачем лишнюю аутентификацию делать. 

    1.png.8914dd2c70ded7c500d8c4c8271c93a6.png

    1.1.png.16fcdd3e50e9381f82654929e8e2e743.png

     

    1.2.png.5313df2bd892a2c050a3b250987afdd2.png

    2.2. Настроим outbounds в левой панели выбираем исходящие и добавляем одно исходящие через наш основной интерфейс, а второй через какой либо ваш внешний сервер.

    2.png.041387e067979fb8d9d86477d26f415f.png

    2.3. Для выхода напрямую через вашего провайдера выбираем Direct и заполняем как на скрине ниже

    2.1.png.c2359469773e6a8bad9b18035de866df.png

     

    2.4. И добавляем ещё один выход через какой либо ваш внешний сервер... в моём примере простой выход через SOCKS5, но это старое соединение, сейчас у меня через Hysteria2 ;)

     

    2.2.png.ebd6622e627c531d94cad60dd0fe2391.png

    2.5. Настроим rules в левой панели выбираем правила и добавляем два правила, одно (под 3 номером) для того что бы выходить через внешний сервер, другое что бы выходить через вашего основного провайдера (под 4 номером). Сразу оговорю порядковый номер играет роль сортировки и имеет значение при проходе по правилам, поэтому первые два правила по умолчанию установлены при установке S-UI их обвёл зелёным и не трогаем, а добавляем те что обведены жёлтым 

    2.3.thumb.png.71241339b06ce3b5389b6fd68817fba9.png

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

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

    2.4.thumb.png.e27b29ca5989f4b28694b657e40088df.png

    00.png.f18edf95f4afafdc2160c8c7ab89dc42.png

    2.7. В параметрах правил как видим много условий по которым мы можем задать куда маршрутизировать трафик, но мы выбираем везде Домен/IP

    2.5.png.758fe73b64ac12dd94a12267f0de8a55.png

    2.6 Теперь добавим правило для направления трафика через нашего провайдера. Я не стал заморачиваться и у меня данное правило стоит как видно из пункта 2.5 последним 4-ым, а значит если первые 3 условия не попали то обязательно будет 4 потому что в нём тупо выход через нашего провайдера.

    2.6.png.288442eff504ecb337cd928d7d220c05.png

     

    Готово, про настройку клиентов рассказывать не стал т.к. тут упрощённая инструкция, да и сложного там ничего нет. Можно переходить к 3 пункту что бы настроить домашние устройства ради которых мы старались :) 

  3. Индивидуальная настройка Keenetic под S-UI
    Спойлер

    3.1. Настраиваем работу наших устройств и сетей под индивидуальные настройки, для этого начнём с того что в приоритетах подключений создадим новую политику для проброса трафика через S-UI, делаем всё как на скирне ниже, галочку многопутевая передача ставить НЕ надо. Так же надо обязательно вашего провайдера поставить следующим после S-UI-LOCAL, для того что бы если вдруг что-то с S-UI случиться, клиенты не остались без интернета совсем, у меня идёт провайдер через Ethernet-подключение.

    3.thumb.png.6ad7fa2eda1aa5b8552181f8035a173b.png

    В политике по умолчанию поднимаем нашего провайдера в верх, у меня идёт провайдер через Ethernet-подключение, а S-UI-LOCAL спускаем в самый низ

    3.3.png.840ca1a2cd20ea5ef2c70761c687bc5d.png  

    3.2. Переходим во вкладку применение политик и тут самое интересно, в политеке по умолчанию всё идёт на прямую через провайдера мимо S-UI, там у меня Bridge(ы) которым не нужно фильтровать трафик, такие как умные розетки, лампочки, увлажнители и т.п. А вот в политике которую мы создали у меня Bridge(ы) которые я виду через S-UI, а все устройства находиться в политике по умолчанию сегмента, для того что бы они подчинялись правилам Bridge(ей) в которых находятся. Для примера я mybook вынес из  политике по умолчанию сегмента в S-UI и вот такие лучше направить все в политику по умолчанию сегмента, а Bridge(ми) управлять. Но тут кому как нравиться уже :)

    3.1.thumb.png.80b327e9a99fadd501d36790750617f6.png

    3.3. Возвращаемся в CLI http://192.168.160.1/webcli/parse где 192.168.160.1 это мой Bridge0 и выполните команды ниже для установки DNS DOT.

    • dns-proxy tls upstream 1.1.1.1 sni cloudflare-dns.com
    • dns-proxy tls upstream 1.0.0.1 sni cloudflare-dns.com
    • system configuration save

    3.4. Ну и в конце нашего пути установим любимые DNS для нашего провайдера, а вот галочку "Игнорировать DNSv4 интернет-провайдера" по моему опыту лучше ставить ;) 

    3.2.png.cc5060daaa81c03d89b36ab7402ae47d.png

     

    На этом всё!

    П.С. На самом деле всё не сложно, но в одном канале один хороший человек увидев картинку из пункта 2.6. скинул в ответ такую картинку... мне понравилось)) Всем хорошего настроения :D 

    KCKtwTN28fGZSVGMqSI30PJw2sIKK3RN979NxPsv.thumb.jpg.a6c3d3963c55e4f91394083e06511a7b.jpg

     

     

4. Подключение внешних клиентов proxy к вашему Keenetic по KeenDNS / IP и создание клиентов.

Спойлер

4.1. Для того что бы подключить внешних клиентов нужно создать пользователей - клиентов в S-UI.
Настроим clients в левой панели выбираем клиенты и добавляем.

4.0.thumb.png.0a7df17e48a148638784d0896b8fde45.png

4.2. Создадим для примера клиента admin как на скрине ниже

 4.0.1.png.25ef8995ecb47e01c46f2a5fb0ea14d5.png

4.3.  И пароль 12345 :D как на скрине ниже

4.0.2.thumb.png.f58f765d15c69e93729007c419500b10.png

4.4. Теперь настроим inbounds, в левой панели выбираем входящие и нажимаем добавить, после чего выбираем тип mixed и указываем остальные настройки как у меня.

4.1.thumb.png.a16bde7c5975a7bfa0409845c463448c.png

4.5. IP это мой Bridge0 вы ставите свой Bridge0. Выбираем своего созданного клиента.

4.1.1.png.d031d595955cd79130fda9f6e40d2e7e.png

4.6. Теперь откроем порт на самом Keenetic, в разделе переадресация портов создадим подключение

4.2.thumb.png.0bfc74dc1fa18e7f13135a69b2b1ef80.png

4.7. Вход это провайдер, а выход это Bridge0, порты слушаем по TCP и UDP

4.2.1.thumb.png.11f6d9ceef126d5300dd1d25f31b5852.png

4.8. В KeenDNS добавим свой DNS для подключения по DNS, как на скрине ниже.

4.2.2.thumb.png.f985a0fd2851eb889538f1d709272cfb.png

Готово, теперь можно пробовать подключиться внешним клиентам. 

 

 

Обновления/Releases:

Спойлер
  1. v.1.0.0 Релиз версии S-UI
  2. v.1.0.1 Добавлено: DNS и SSL автоматизация через пункты меню + bugfix 

 

Исходный код скрипта: GitLab

Исходный код s-ui: GitHab 

Изменено пользователем Tommi
Инуструкция: Wireguard и SWAP
Опубликовано (изменено)
20 часов назад, Сергей «Solaris» Сидоров сказал:

Эх, жаль под mipsel нету 😔

Понимаю, будь у меня устройство под mipsel, я бы попробовал пересобрать под него (не факт конечно что бы получилось, но под aarch64 без проблем пересобираю), но свою старую gigu продал около года назад...

Спасибо кстати, натолкнул на мысль, посмотрел люди мучаются с тем что ставят отдельно 3X-UI на впску и сегодня решил пересобрать 3X-UI под aarch64 (arm64) сразу на Keenetic, пока есть время и возможность... сейчас заливаю в GitLab само приложение и допиливаю шел скрипт, потом отдельной темой выложу рабочий вариант ;) 

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

Автору огромный респект и уважуха за проделанную работу. Только вот получается, что зря я купил Orange Pi, чтоб свой сервер поднять. Раньше кинетик работал как клиент VLESS, а теперь получается, что можно на кинетике свой сервер поднять? Это так или я ошибаюсь?

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

Автору огромный респект и уважуха за проделанную работу. Только вот получается, что зря я купил Orange Pi, чтоб свой сервер поднять. Раньше кинетик работал как клиент VLESS, а теперь получается, что можно на кинетике свой сервер поднять? Это так или я ошибаюсь?

Я всего-то скрипт написал, но спасибо!😊

Да, всё так, теперь Keenetic выступает в роли сервера прокси, все пробросы осуществляются удобно через S-UI и интерфейса UI самого Keenetic(а) без нужды лезть в терминал или куда либо ещё, у меня так работает, очень удобно. Могу выложить позже пример рабочего варианта как у меня прокси настроен, надо? 

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

надо? 

Да, конечно. Было бы очень здорово. И ждём 3X-UI для кинетика, уж очень интересно как он работать будет. Спасибо.

Опубликовано (изменено)
В 02.12.2025 в 11:58, PaxaR сказал:

Добрый, я правильно понимаю что данная штука будет только на оригинальном кинетике работать?

Добрый, в целом не обязательно, главное что бы стоял Entware т.к. система путей специально собранна под каталог /opt/. А архитектура была любой из списка ниже:

(x86_64 | x64 | amd64) = amd64,
(i*86 | x86) = 386,
(armv8* | armv8 | arm64 | aarch64) = arm64,
(armv7* | armv7 | arm) = armv7,
(armv6* | armv6) = armv6,
(armv5* | armv5) = armv5
(s390x) = s390x

Ниже команды и скрин примера как у меня, если архитектура из списка и Entware установлен, то всё заработает

Проверить архитектуру: uname -m
Проверить что Entawe: command -v opkg

 image.png.4be5ac7cb99a29e3e47d2ae1161d51a3.png

 

П.С. Ещё мысль есть что бы OpenWrt заводилась, по факту надо немного скрипт поправить.

Изменено пользователем Tommi
Опубликовано
В 01.12.2025 в 07:54, akimoff365 сказал:

Да, конечно. Было бы очень здорово. И ждём 3X-UI для кинетика, уж очень интересно как он работать будет. Спасибо.

Наконец-то осилил инструкцию, надеюсь не слишком сложно :)
 

 

  • 2 месяца спустя...
Опубликовано

Спасибо за вашу работу. Вот разбираюсь теперь как настроить исходящее соединение с другим VPS и перенаправить поток на инбаунд/клиента🤔

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

Вот разбираюсь теперь как настроить исходящее соединение с другим VPS и перенаправить поток на инбаунд/клиента🤔

Исходящий (outbound) можно добавить по внешней ссылке. С недавнего времени также доступно пакетное добавление через подписку.
Перенаправлять inbound (если их несколько) или источник IP-адреса клиента на нужный outbound можно в разделе "Правила" - там всё логически понятно, и автор всё подробно расписал. Вероятно, это был не вопрос.

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

Исходящий (outbound) можно добавить по внешней ссылке. С недавнего времени также доступно пакетное добавление через подписку.
Перенаправлять inbound (если их несколько) или источник IP-адреса клиента на нужный outbound можно в разделе "Правила" - там всё логически понятно, и автор всё подробно расписал. Вероятно, это был не вопрос.

Точно, увидел. "Добавить пакетно" Спасибо

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

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

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

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

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

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

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

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

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

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

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

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