Безопасный Android-клиент для своих VPN-профилей

Tunguska — открытый Android-клиент для собственных VPN-профилей. Он умеет импортировать профили, выбирать sing-box или Xray + tun2socks, поднимать системный VPN-туннель Android, настраивать маршруты по приложениям и показывать состояние сессии.

Я начал писать его из-за российской практики вокруг VPN. Сетевые блокировки никуда не делись, но теперь часть проблем приходит уже с телефона: приложение видит активный VPN, отправляет этот признак на сервер, а при трафике через туннель ещё и светит выходной IP или адрес VPS. По данным РБК и Meduza, площадки должны делиться сведениями о новых выявленных VPN с регулятором; в такой схеме выходной IP может попасть в общие списки блокировки.

У меня это проявилось на телефонах родственников: часть российских приложений периодически переставала работать при активном VPN. Сторонние клиенты завязаны на чужой релизный цикл ядра, транспортов и Android-части. Быстрого решения под мои требования не нашлось, поэтому я начал писать Tunguska.

Репозиторий

На момент этой заметки актуальный публичный релиз — v0.7.2, опубликован 10 мая 2026 года. APK лежат в GitHub Releases, Google Play пока не участвует.

Что детектят приложения

Сетевые блокировки продолжаются. По данным «Коммерсанта» со ссылкой на Роскомнадзор, к концу февраля 2026 года в РФ ограничили доступ к 469 VPN-сервисам. В начале апреля 2026 года РБК, а затем Meduza писали, что Минцифры просило крупные российские платформы ограничивать доступ пользователям с активным VPN и передавать сведения о новых найденных VPN регулятору. В обновлении исследования RKS Global от 16 апреля 2026 года все 30 проверенных российских Android-приложений детектировали VPN, 20 из них активно блокировали или ограничивали функциональность.

Среди методов: NetworkCapabilities.TRANSPORT_VPN, интерфейсы вроде tun0, записи в /proc/net/tcp, системный прокси, список установленных VPN-клиентов, эвристика MTU и выходной IP при запросе через туннель.

Android официально помечает VPN-сеть как TRANSPORT_VPN. VPN-клиенты работают через системный API VpnService: приложение получает локальный TUN-интерфейс и отдаёт Android правила маршрутизации. Это нормальная часть платформы, но в российских приложениях она стала ещё одним источником сигнала об активном VPN.

Активный VPN Tunguska от Android не скрывает. На уровне системы иначе нельзя. Клиент занимается тем, что может контролировать: локальные поверхности, мосты между движками, раздельную маршрутизацию, поддержку форматов профилей и отображение плана трафика.

Почему отдельный клиент

Серверная часть у собственного VPN обычно под контролем: транспорт меняется на сервере, логи доступны, внешний доступ проверяется отдельными инструментами. На телефоне остаётся слой, который из серверных логов не виден: системный VPN API, TUN-интерфейс, DNS, маршрутизация по приложениям, жизненный цикл фоновой службы, смена сети, фоновые ограничения Android и ограничения конкретной прошивки. Tunguska закрывает свою часть этого слоя: быстрое обновление форматов профилей, явная совместимость с sing-box или Xray + tun2socks, маршруты по приложениям, DNS-режимы и статус сессии, который снимается после проваленной проверки маршрута.

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

Что есть в 0.7.2

(скриншоты немного битые — в процессе обновления)

Tunguska хранит библиотеку профилей, даёт их импортировать и редактировать, показывает совместимость с движками, поднимает системный VPN-туннель Android и показывает, куда пойдёт трафик.

В приложении четыре основных раздела.

Главная — повседневный экран для активного профиля, подключения, IP до и после старта, краткой статистики и текущего состояния.

Профили — библиотека профилей с импортом из ссылки, JSON и QR. Перед сохранением приложение проверяет дубли и совместимость.

Маршруты — полный туннель, туннель для приложений, переиспользуемые политики, шаблоны, пользовательские правила и офлайн-проверка маршрута.

Настройки — безопасность, резервные копии, экспорт аудита с вычищенными секретами, автоматизация, обновления и расширенная диагностика.

Интерфейс показывает технические детали до подключения. Для VLESS XHTTP, WireGuard-конфига или Shadowsocks prefix-ссылки сразу видно выбранный движок, ограничения и причину ошибки.

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

Импорт профилей

При импорте Tunguska раскладывает профиль в типизированную модель и сохраняет параметры, которые влияют на запуск и совместимость.

В VLESS важны транспорт, поля REALITY, flow, packetEncoding, spx/spiderX, проверки ML-DSA-65 и полный снимок query-параметров. У Shadowsocks отдельно обрабатываются prefix-ссылки. WireGuard импортируется и из ссылки, и из обычного конфига с [Interface] и [Peer]. Поддержка этих полей зависит от выбранного движка, поэтому импорт хранит их без потери. Для части протоколов нет удобного публичного формата, который экспортируется и импортируется обратно без потери смысла.

Поддерживаются импорт и редактирование таких семейств:

  • VLESS + REALITY: TCP, HTTP, WebSocket, gRPC, HTTP Upgrade, QUIC, XHTTP и SplitHTTP с учётом выбранного движка;

  • VMess;

  • Trojan;

  • Shadowsocks, включая prefix-ссылки через sing-box;

  • SOCKS и HTTP-прокси;

  • Hysteria1 и Hysteria2;

  • TUIC;

  • WireGuard;

  • SSH;

  • AnyTLS, ShadowTLS и NaiveProxy через канонический JSON.

Публичные ссылки Tunguska экспортирует там, где формат действительно подходит. WireGuard, SSH, AnyTLS, ShadowTLS и NaiveProxy сохраняются через канонический JSON, потому что публичные форматы ссылок здесь не дают полного обратного импорта без потери параметров.

При импорте приложение проверяет профиль до записи в хранилище. Небезопасные TLS-флаги, отладочные входы и совместимость через открытый локальный прокси отбрасываются сразу. После импорта туннель не стартует сам. Сначала пользователь видит, что именно собирается сохранить.

Два движка под капотом

Основной путь запуска — sing-box через libbox: широкий набор протоколов, DNS, маршрутизация, TUN внутри встроенного движка, меньше промежуточных мостов. Xray + tun2socks остаётся веткой совместимости для профилей, которым нужен Xray. В первую очередь это VLESS + REALITY с XHTTP, SplitHTTP или ML-DSA-65. Через эту же ветку запускаются VMess, Trojan, обычный Shadowsocks, SOCKS и HTTP-прокси, но уже с ограничениями моста tun2socks.

Два пути нужны из-за несовпадающей поддержки. XHTTP, SplitHTTP и ML-DSA-65 сейчас логичнее вести через Xray; WireGuard, TUIC и большая часть sing-box-экосистемы живут в libbox. Поэтому выбор движка остаётся явной частью профиля.

Неподходящая комбинация блокируется до подключения. VLESS XHTTP не сваливается в «почти TCP», WireGuard не запускается через Xray + tun2socks, неподдерживаемый DNS-режим или правило маршрутизации показываются как проблема совместимости.

В интерфейсе для этого есть сводка по выбранному пути запуска и рекомендации по совместимости.

Маршрутизация

Маршрутизация в Tunguska хранится как видимая политика с фиксированным порядком применения правил. Поддерживаются полный туннель, режим «только выбранные приложения» и режим исключений. Android разрешает выбрать только один тип правил по приложениям на VPN-сессию, поэтому изменения сохраняются в профиле и применяются после переподключения. Конфиги туннеля по приложениям переиспользуются: их можно привязать к профилю или временно перекрыть глобальной политикой; один общий список приложений быстро мешает, когда у профилей разные задачи.

Шаблоны применяются как обычные правки политики. «Россия напрямую» добавляет российские доменные зоны и GeoIP RU, «Обход локальных/частных сетей» — локальные сети и домены, «Блокировка рекламы» — явные правила блокировки. Правила дорабатываются.

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

Тест маршрута работает офлайн: по пакету приложения, домену или IP он показывает итоговое действие правила без сетевого запроса. Порядок применения зафиксирован: loopback всегда остаётся локальным, затем применяется Android-правило по приложениям, потом явные правила профиля в сохранённом порядке, затем сгенерированные правила шаблонов и регионального обхода, после них — правило по умолчанию.

DNS

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

По умолчанию в модели профиля стоит Системный DNS. В Xray + tun2socks это совместимый режим с публичным запасным DNS; если нужны именно резолверы текущей сети Android, есть DNS сети Android: при старте приложение берёт DNS-серверы из активной сети Android, находящейся вне VPN. Если Android не отдаёт такие серверы, старт падает с ошибкой. Это особенно полезно для Xray + tun2socks, где хочется убрать неявный публичный запасной DNS.

Есть режимы DNS через VPN и Свой защищенный DNS. В sing-box они компилируются напрямую; в Xray + tun2socks поддержка более узкая, поэтому неподходящие формы режутся до старта.

Эта настройка помогает отделить проблемы профиля от проблем конкретной сети: Wi-Fi может отдавать нужные DNS, LTE — нет.

Безопасность без обещаний невидимости

Невидимость VPN на Android здесь не заявляется. Система показывает VPN-индикатор и отдаёт приложениям часть сетевых признаков; root и привилегированные наблюдатели видят ещё больше.

Клиент закрывает поверхности, которые контролирует сам.

У Tunguska нет неаутентифицированного локального прокси и включённых API управления для Xray или sing-box. В ветке Xray + tun2socks локальный SOCKS-мост слушает только 127.0.0.1; порт из диапазона 20000..49999 и учётные данные для него генерируются заново на каждый старт через SecureRandom, а tun2socks получает уже готовый socks5://user:pass@127.0.0.1:port.

Файлы движка лежат в закрытом хранилище приложения, временные конфиги удаляются после старта нативного движка, профили и резервные копии хранятся локально в шифрованном виде. Экспорт аудита вычищается: секреты заменяются хэшами и скрытыми полями.

Аналитики, рекламных идентификаторов и телеметрии по умолчанию нет. Проверка публичного IP нужна только для экрана состояния.

Автоматизация выключена по умолчанию. Если её включить, внешний запуск и остановка идут через токен и тот же контур управления, что интерфейс, уведомление и плитка быстрых настроек. Отдельного публичного API нет.

Усиленная защита включается вручную. В этом режиме уведомления меньше раскрывают детали, чувствительные экраны просят Android запретить скриншоты, скопированные ссылки профилей и токены автоматизации помечаются как чувствительные данные буфера обмена и очищаются через короткое время. Android VPN-индикатор остаётся на месте.

В sing-box-пути по умолчанию включена защита от трафика с неизвестным владельцем: если Android не смог сопоставить пакет на TUN с приложением-владельцем, такой трафик режется. Правило ограничено TUN-входом и не цепляет внутренние loopback-мосты Tunguska. Xray + tun2socks эту специфичную для sing-box защиту не применяет, там другая топология.

Единое состояние

После ошибки старта или смены сети экран и уведомление должны подтягивать свежий снимок службы. Старый статус вводит в заблуждение: пользователь видит рабочую сессию, хотя движок уже перезапускается. В Tunguska запуск, остановка и переподключение идут через общий контур управления движком. «Главная», уведомление, плитка быстрых настроек, автоматизация и диагностика читают один снимок состояния.

Рабочей считается только сессия, где движок поднят и маршрут проходит проверки; живой движок с падающим маршрутом получает «Сбой связи», а запрос ручного действия уходит в статус внимания.

Плитка быстрых настроек показывает только старт, стоп и статус. Там нет имени профиля, адреса сервера, выходного IP или скорости.

Уведомление учитывает приватность: при выключенной усиленной защите показывает больше деталей, при включенной — только нейтральный статус.

Восстановление после сбоев сети

На Android VPN-сервис может оставаться живым, когда полезный трафик уже не проходит через ожидаемый путь.

Сервис делает две проверки: нативную проверку живости встроенного движка и низкочастотную проверку активного маршрута. После повторных неудач сессия получает состояние «Сбой связи» и перезапускается. При смене Wi-Fi на мобильную сеть или обратно активный путь тоже рестартится; старое сетевое состояние Android не используется как постоянное.

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

Если маршрут подозрительный, рабочий статус снимается.

Тесты

Приложение сильно покрыто тестами, иначе вести разработку было очень тяжело. Unit-тесты закрывают парсер и генерацию конфигов, UI-тесты — основные экраны. Отдельно проверяются офлайн-расчёт маршрута, traffic-probe в живом туннеле, UDP-сценарии и логика реакции на смену сети по умолчанию Android. Сквозные проверки закрывают жизненный цикл профиля на живых конфигурациях, матрицу sing-box/Xray + tun2socks, сверку маршрутизации, автоматизацию и вспомогательные проверки трафика.

Как поставить

Релизы лежат здесь:

https://github.com/Acionyx/tunguska/releases

В v0.7.2 опубликованы внутренние APK без отладки и файлы с контрольными суммами. Для обычного Android-устройства нужен arm64-v8a. Для локального Android Emulator есть x86_64. armeabi-v7a/32-bit сборок нет: обязательные Xray/tun2socks/vpnhelper артефакты в этой линейке есть только для arm64-v8a и x86_64.

Поддерживаемая платформа — Android 8.0+ (minSdk 26), сборка таргетит SDK 36.

Установка через adb обычная:

adb install tunguska-v0.7.2-arm64-v8a-internal.apk

Базовый путь: импортировать профиль в «Профилях», проверить предупреждения, сохранить, выбрать профиль активным и подключиться на «Главной». После старта стоит проверить выходной IP и отдельно прогнать «Проверку маршрута» для важных доменов и пакетов приложений.

В приложении есть проверка обновлений через GitHub Releases, она забирает только метаданные релиза. Проверка включена по умолчанию и срабатывает не чаще раза в день. APK автоматически не скачивается и не устанавливается; Tunguska только сообщает, что вышел новый релиз, и даёт перейти на страницу релизов. Нежелательную версию можно скрыть.

Если собираете из исходников, смотрите README. Для libbox-android может понадобиться доступ к GitHub Packages или локальный Maven override.

Ограничения текущего релиза

Проект молодой, по факту даже младенческий. Ставить его стоит, если готовы смотреть диагностику, проверять реальные сценарии и писать отчёты.

Совместимость с произвольными подписками провайдеров не заявлена.

iOS вне фокуса до доведения Android-версии.

Google Play нет. На текущем этапе релизы идут через GitHub, с файлами контрольных сумм рядом с APK.

Зачем я сюда пишу?

Сейчас больше всего нужны воспроизводимые проверки на реальных устройствах.

В багрепортах нужны условия воспроизведения: устройство и версия Android, сеть, тип профиля без секретов, выбранный движок и режим маршрутизации. Дальше — ожидаемый результат, фактический результат и проверка после переподключения, сна телефона или перезагрузки.

Особенно полезны баги на границе Android-сети: сон и пробуждение телефона, смена Wi-Fi и LTE, UDP, push-уведомления. Отдельно интересны расхождения между моделью Tunguska и фактическим поведением: туннель для приложений против «Проверки маршрута», разные результаты на sing-box и Xray + tun2socks, зависшее состояние интерфейса после ошибки. Проблемы на маленьких экранах и качество диагностики тоже лучше приносить в issues.

Не прикладывайте реальные ссылки профилей, ключи, UUID, приватные ключи и токены.

GitHub

Комментарии (28)


  1. Stanislavvv
    26.05.2026 07:05

    А https-прокси? Не http, а именно https, то есть http за tls?

    И про socks за tls тот же вопрос. А то чистый протокол прокси немножечко открыт кому попало.


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Сейчас обычные HTTP proxy и SOCKS профили поддерживаются как TCP-прокси без TLS-обёртки. То есть http://, socks:// / socks5://, но не “HTTP proxy over TLS” и не “SOCKS over TLS”.

      Я перепроверил реализацию: импорт HTTP proxy принимает только http://, SOCKS только socks/socks5, а TLS/REALITY для этих двух типов сейчас валидатором отклоняются. В runtime-компиляторах sing-box и xray они тоже собираются как plain http/socks outbound без TLS-настроек.

      Отправьте feature request в https://github.com/Acionyx/tunguska/issues, я посмотрю.


  1. BDI
    26.05.2026 07:05

    Из прошлых обсуждений интеграции зондов в российских приложениях упоминалось что приложение может напрямую пустить трафик через найденный tunХ вне зависимости от настроек AppBased Routing в VPN клиенте, что позволяет запалить IP выходной ноды. И, насколько я понял из тех обсуждений, без рута ничего с этим сделать нельзя.

    Если я правильно терзал нейронку про упомянутый у вас sing-box, то закрытие этой бреши делается за его счёт. Но нейронка говорит что он умеет или белый список приложений, или чёрный, и одновременно оба задействовать нельзя. Правда про то будет ли в режиме белого списка у прочих приложений возможность гнать свой трафик через tun интерфейс подконтрольный sing-box-у нейронка однозначно ответить не смогла, ссылаясь на скудность документации. Хотя и намекнула что в принципе это вероятно возможно:

    Если вам нужна именно блокировка всех, кроме явно разрешенных, и вы не хотите, чтобы их трафик вообще уходил в сеть, то одних записей в include_package недостаточно. Для этого потребуется дополнительная логика — либо на уровне правил маршрутизации в sing-box, либо на уровне сетевых экранов вашей системы.

    Не подскажете, режим блокировки доступа к впн всем кроме белого списка приложений реализован в вашем приложении, или такой возможности sing-box не даёт?

    P.S. Правильно ли я понимаю, что доступны только те протоколы что реализуются sing-box? Очень не хватает SSTP, но почему-то очень его не любят создатели впн клиентов/серверов…


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Да, режим “доступ к VPN только для белого списка приложений” в Tunguska реализован.

      Это не только правило внутри sing-box. В allowlist-режиме Tunguska передаёт выбранные приложения в Android VpnService.Builder.addAllowedApplication(...). Это системный механизм Android: только эти package/UID попадают в VPN-сеть. Остальные приложения не должны иметь маршрут через VPN-интерфейс, даже если они как-то увидят наличие tunX.

      Дополнительно в sing-box lane включён guard против неатрибутированного трафика: если пакет всё-таки попадает в TUN, но sing-box/libbox не может определить package owner, Tunguska добавляет reject-rule и такой трафик режется, а не уходит через прокси. Это как раз защита от класса “трафик пришёл в туннель без понятного приложения-владельца”.

      Но важно уточнение: это блокировка доступа к VPN для всех, кроме allowlist, а не общий firewall “запретить интернет всем остальным”. Приложения вне allowlist не должны использовать VPN-выходную ноду, но они могут идти напрямую через обычную сеть Android.

      Для root/privileged/system-level атак отдельные гарантии не заявляю: Android VPN API рассчитан на обычные приложения без привилегий.


      1. BDI
        26.05.2026 07:05

        это блокировка доступа к VPN для всех, кроме allowlist

        Да, именно это и интересовало, как раз то что теперь требуется при наличии на одном смартфоне впн и приложений крупных российских контор. Если бы ещё SSTP умело, было бы вообще сказочно(жаль маловероятно)...


        1. tunguska_vpn Автор
          26.05.2026 07:05

          Отправьте feature request в https://github.com/Acionyx/tunguska/issues, я посмотрю что с этим можно сделать.


  1. Aleksei_7bc
    26.05.2026 07:05

    Здравствуйте. А чем отличие Вашего решения от TeapodStream?


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Я начал писать этот проект ещё до анонса TeapodStream, буквально за пару недель, но тогда он совсем не был готов к публикации. В целом причины почти те же самые, поэтому решения похожие. Здорово что есть альтернативы, и кое-чему я у автора TeapodStream научился.

      Но на сегодняшний день накопились различия, приведу итого:

      TeapodStream по текущему коду — это Xray-клиент с двумя режимами: полноценный VPN/TUN режим и proxy-only режим. В VPN-режиме трафик идет через Android TUN, затем через teapod-tun2socks в локальный SOCKS и дальше в xray-core. В proxy-only режиме TUN не поднимается, работает только локальный SOCKS через xray-core.

      Tunguska устроена как multi-runtime клиент. В ней есть отдельные runtime lanes: embedded sing-box, Xray + tun2socks и OpenVPN 3. Runtime выбирается на уровне конкретного профиля, а приложение показывает совместимость профиля с выбранным runtime и не делает скрытых downgrade/fallback.

      По протоколам TeapodStream сейчас сфокусирован на Xray-семействе: VLESS, VMess, Trojan, Shadowsocks, Hysteria2 и Xray-транспорты. Tunguska хранит более широкую typed profile model: VLESS/VMess/Trojan/Shadowsocks/SOCKS/HTTP/Hysteria/TUIC/WireGuard/SSH/AnyTLS/ShadowTLS/NaiveProxy/OpenVPN, но запуск зависит от runtime lane.

      Если коротко: TeapodStream — более простой Xray-first клиент. Tunguska — более строгий multi-runtime клиент с per-profile runtime selection, отдельным OpenVPN lane, более широкой моделью профилей, read-only subscription profiles и более подробной моделью routing/security diagnostics.


  1. mihar
    26.05.2026 07:05

    Пока не будет управления всеми настройками клиента с сервера - это всего лишь ещё один клиент.
    Просто потому, что ну не буду я каждый раз настраивать клиенты всем 15 родственникам, а нынче менять настройки приходится часто.
    посмотрите как это в FlClashX и RemnaWave сделано. у FlClashX есть неприятные недостатки, оно в последних версиях жуткий тормоз, но альтернативы к сожалению нет.


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Есть подписки. Это не полноценное управление, но уже что-то. Я гляну референсы, но будет полезно если вы опишите ваш кейс подробнее


      1. mihar
        26.05.2026 07:05

        чуть ниже постарался рассказать


    1. BDI
      26.05.2026 07:05

      Пока не будет управления всеми настройками клиента с сервера

      С сервера чего? С сервера SSH? С сервера Wireguard, SOCKS5? Это не приложение для конкретного ВПН сервиса, это и есть "всего лишь ещё один клиент", но многопротокольный и с защитой от РКН зондов со стороны в приложениях всяких Озонов, Почт России и прочих госуслуг. Уже в таком функционале он будет востребован(если функционирует стабильно, у меня везде SSTP, так что пока даже не пробовал ставить).

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


      1. sundmoon
        26.05.2026 07:05

        Поддерживаю. А вот что хотел бы попросить у это ещё чуточку более кроссплатформенное/переиспользуемое ядро. Чтобы удобно форкать и продолжать хотя бы Kotlin/JVM.

        @tunguska_vpn Доменная модель ведь Ваш рисёрч? Искал и до сих пор не встретил ничего подобного.


        1. tunguska_vpn Автор
          26.05.2026 07:05

          Кроссплатформенность в ближайших планах.

          Что бы вы хотели реализовать в форке? Интерес ваш кейс.

          Касательно модели, да и вообще всего кода - да. Из сторонних решений только singbox, tun2socks, openvpn рантаймы.


          1. sundmoon
            26.05.2026 07:05

            Лично я хотел бы ориентироваться в предметной области, в первую очередь. Отсутствие стандарта на модули, точнее вообще на "квн-стек" - буквально головная боль, которая меня парализует и блокирует любые мои хотелки.

            Дальше - да, control plane для подопечных эндпойнтов, начиная с openwrt. С максимальным переиспользованием готовых решений.


            1. tunguska_vpn Автор
              26.05.2026 07:05

              Да, к сожалению типизация всего зоопарка задача нетривиальная и пока я её решаю банальным брутфорсом. С каждым новым протоколом смотрю как улучшить свою модель данных чтобы понимать и обрабатывать данные из протокола. Единого решения не существует, или я его не нашел.


          1. sundmoon
            26.05.2026 07:05

            Вот, поискал и нашлось нечто ещё для потенциального переиспользования.


      1. mihar
        26.05.2026 07:05

        с сервера, скажем так, "управления".
        вот есть, как я уже писал клиент " многопротокольный и с защитой от РКН зондов " FlClashX, это не "не приложение для конкретного ВПН сервиса " , это клиент который я могу к любому, в том числе и своему серверу подключить.
        и есть серверное ПО с названием RemnaWave, которое умеет xray запускать с собраным конфигом.
        и вот в этом remnawave я делаю нужный мне конфиг для сервера xray, а так же конфиг для клиента FlClashX со всеми нюансами роутинка и защиты от РКН (к слову ремна не только флклэш умеет, думаю оно с радостью любой другой уметь научится, пишут то наши люди), завожу юзера и всё что этому юзеру требуется, это пройти по короткой ссылке и там ему будет ссылка на скачивание клиента и эта же ссылка применяется что бы передать клиенту весь нужный конфиг. более того, я меняю конфиг клиента или самого сервера на сервере, но все клиенты FlClashX периодически обновляют сами свой конфиг.


        1. sundmoon
          26.05.2026 07:05

          Если хотите, поделюсь приватно трёхдневным пробником коммерческого сервиса, где, кмк, Ваше пожелание уже реализовано.

          У меня впечатление, что приоритетная ЦА Remnawave это "васяны"-мамкины коммерсанты, впн-ам которых нужен "биллинг". Если не сервис-провайдеры для таких васянов-реселлеров. Хотят ли там поддерживать сценарии некоммерческого самохоста не по остаточному принципу?


        1. tunguska_vpn Автор
          26.05.2026 07:05

          Судя по описанию, механизм подписок в tunguska как раз то, что нужно. Другое дело что сейчас он ограничен конфигурацией одного outbound, и не умеет принимать сложные конфигурации DNS, приоритеты, группы и так далее. Но это всё будет добавлено.


  1. Kenya-West
    26.05.2026 07:05

    @tunguska_vpn подскажите, у вас есть возможность, задать для каждого правила свой outbound, как в Karing? Чтобы, например, category:bybit шла через сервер в Чехии, category:ru через РФ сервер, category:okx шла через Казахстан и т. д.


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Я посмотрю как это реализовано в Karing. Правильно я понимаю что имеется ввиду настройка нескольких соединений параллельно и роутинг для групп приложений и веб адресов?


      1. Kenya-West
        26.05.2026 07:05

        Да. Karing основан на sing-box, и является единственным клиентом (кроме печально известного nekoray, точнее, его форка), который так умеет делать для адресов, CIDR, категорий в геобазах (в том числе вдобавок умеет роутить приложения):

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


  1. domix32
    26.05.2026 07:05

    Добавьте гитхабий CI чтобы то же состояние тестов было видно остальным.


  1. Un_ka
    26.05.2026 07:05

    А будет возможность создать каскад как в exclave? Правда там больше выбор протоколов, за исключением amneziаWG.


    1. tunguska_vpn Автор
      26.05.2026 07:05

      Возможно, - создайте, пожалуйста, тикет на гитхабе.


  1. Andrey3fn
    26.05.2026 07:05

    Выглядит интересно. Спасибо. Было бы полезно при старте соединения замораживать probing приложения как описано в Shizuki и Anubis https://habr.com/ru/articles/1023352/


    1. tunguska_vpn Автор
      26.05.2026 07:05

      В приложении есть нативная интеграция с Анубисом, посмотрите в настройках.