-
Notifications
You must be signed in to change notification settings - Fork 0
RU User Guide
English guide | Русское руководство | 中文使用说明 | README на русском
shadowsocks-reborn — современное продолжение классического Shadowsocks for Windows. Версия 5.2.31 использует .NET 10, WinUI 3 / Windows App SDK, поддерживает только x64 и работает на Windows 10 build 19041+ и Windows 11.
Это самостоятельный fork, а не upstream-репозиторий
shadowsocks/shadowsocks-windows.
- Нативный WinUI 3 интерфейс и меню в системном трее.
- Несколько Shadowsocks-серверов, QR import/export и обработка
ss://. - Локальный SOCKS5, managed HTTP/1.1 forward proxy и HTTPS
CONNECTtunnel. - UDP relay.
- User Mode и elevated Admin Mode.
- Прозрачный TCP/UDP capture через WinDivert в Admin Mode.
- Автоматический Game Mode, временно отключающий Admin capture для выбранных программ.
- Полностью managed C# маршрутизация GeoSite/EasyList/ABP network rules.
- Управление SIP003-плагинами, известные плагины и ручной импорт ZIP/TAR.GZ.
- Опциональный DNSCrypt/DoH; ODoH отключён.
- Автоматическое обновление приложения с SHA-256, проверкой версии и rollback.
- Hotkeys, страницы Traffic/Logs, GeoSite и одноразовый Clean Mode.
Официальные release assets:
Shadowsocks-win-x64.zip
Shadowsocks-win-x64.zip.sha256
В продуктовом ZIP находится ровно:
Shadowsocks.exe
Release self-contained, поэтому отдельная установка .NET Runtime не нужна. SHA-256 можно сверить sidecar-файлом либо вручную:
(Get-FileHash .\Shadowsocks-win-x64.zip -Algorithm SHA256).Hash- Запустите
Shadowsocks.exe. - Откройте Servers и добавьте или импортируйте сервер.
- Укажите имя, адрес, порт, пароль, метод шифрования и при необходимости SIP003 plugin.
- Выберите активный сервер и режим трафика в окне приложения или трее.
- Страница Share / QR позволяет импортировать и экспортировать
ss://.
Серверам без имени назначаются стабильные уникальные имена Server N; явно заданные имена не перезаписываются.
Не требует прав администратора и не запускает прозрачный WinDivert capture. Приложения используют Shadowsocks через системный proxy, Local/Online PAC, локальный SOCKS5 или managed HTTP proxy.
Запрашивает UAC и активирует изолированный Shadowsocks.NetworkService. Helper встроен в Shadowsocks.exe, извлекается по необходимости в управляемый runtime-каталог, проверяется и выполняет прозрачный TCP/UDP capture через WinDivert. UI показывает состояние broker/capture и redirect ports.
Это не третий выбираемый traffic mode. Когда работает одна из настроенных игр/программ, transparent Admin capture автоматически приостанавливается, а после завершения процесса восстанавливается.
Application rules имеют более высокий приоритет, чем domain rules, и поддерживают:
ProxyDirectBlock
Клиент предоставляет SOCKS5 и managed HTTP forward proxy.
- HTTP: HTTP/1.1 forwarding.
- HTTPS: byte tunnel через
CONNECT; конечные стороны могут согласовать HTTP/2 внутри TLS без локального HTTP/2 parser. - FTP gateway: не реализован.
Используйте фактические порты из настроек приложения, а не фиксированные значения из старой документации.
Local GeoSite + EasyList/ABP фильтрация полностью выполняется managed-кодом C#. Старый встроенный abp.js, compiled-PAC compatibility backend, backend selector и исполняемый custom abp.txt удалены.
Local PAC существует только потому, что Windows system proxy/PAC ожидает PAC endpoint. В нём находится минимальный FindProxyForURL, который направляет подходящий HTTP/HTTPS трафик в ManagedHttpProxyService; EasyList/ABP rules в PAC не исполняются.
Порядок принятия решения:
request
↓
application rule (если есть)
↓
immutable snapshot GeoSite + user-rule.txt
↓
C# Shadowsocks.Routing.FilterEngine
↓
DIRECT или PROXY
Managed matcher поддерживает нужное клиенту подмножество network rules: domain anchors, start/end anchors, wildcard, separator, explicit regex, $domain= и $match-case. Cosmetic filtering браузерной страницы не входит в задачи клиента.
В Admin Mode обычный TCP без явного application rule может быть отложен до чтения HTTP Host либо TLS ClientHello SNI. Для HTTP доступен path/query context, для TLS — только hostname. Клиент не расшифровывает TLS, не устанавливает CA и не заменяет сертификаты. UDP и протоколы без доступного Host/SNI используют детерминированный fallback.
В Local mode страница PAC / GeoSite содержит Открыть user-rule.txt. Пользовательские правила проверяются раньше GeoSite defaults и применяются автоматически; при Online PAC локальные managed-routing/user-rule/GeoSite карточки скрыты.
Online PAC — отдельный явно включаемый compatibility mode. Выбранная пользователем внешняя PAC-программа остаётся авторитетной и выполняется PAC-средой Windows. Это не Local EasyList/ABP engine: произвольную PAC JavaScript-программу в общем случае невозможно без потерь преобразовать в ABP rules.
В Administrator Mode доступны DNS policies:
-
System— обычное системное DNS-поведение в рамках transparent-routing contract. -
Direct— classic DNS идёт напрямую согласно resolver settings. -
Proxy— UDP/TCP DNS маршрутизируется через Shadowsocks. -
CustomDoh— DNS wire message отправляется в настроенный HTTPS endpoint с независимой опцией маршрута через Shadowsocks. -
DnsCrypt— запрос перенаправляется в локальный managed listenerdnscrypt-proxy.
Приложение не встраивает dnscrypt-proxy.exe. По запросу оно получает официальный Windows x64 компонент, проверяет подписанные release materials и размещает runtime внутри активного storage root. При первой установке/включении DNSCrypt страница держит видимой анимированную operation-card на этапах скачивания, проверки, установки и активации; недоступные DNSCrypt settings скрыты до завершения активации.
Automatic resolver selection применяет к подписанному каталогу настройки DNSSEC/no-log/no-filter/IPv4/IPv6. Страна resolver определяется по GeoIP фактического endpoint IP, а не по имени или description. Manual Mode позволяет выбирать подписанные DNSCrypt/DoH resolvers; ODoH отключён. При сбое активного DNSCrypt runtime используется fail-closed поведение, а не скрытый откат на plaintext system DNS.
User Mode не перехватывает произвольный системный DNS прозрачно. Game Mode приостанавливает system-level DNS interception вместе с Admin capture.
Страница Plugins управляет SIP003 plugins. Если импортируемая ss:// конфигурация требует известный catalog plugin, которого ещё нет, Share / QR предлагает установить его до импорта сервера; также доступен явный вариант импортировать без plugin. В известных вариантах есть xray-plugin, v2ray-plugin и qtun; также поддерживается ручной импорт ZIP/TAR.GZ. Файлы плагинов находятся внутри текущего storage root, а конфигурация сервера ссылается на plugin ID.
Для built-in catalog кнопка Install получает актуальный Windows x64 release и сохраняет в metadata доверенное происхождение repository/release/asset. Установленные из каталога плагины автоматически проверяются раз в сутки во время работы приложения; используемый сейчас plugin откладывается до следующей проверки. Check updates запускает немедленную проверку, а Automatic updates можно выключить отдельно для каждого managed catalog plugin. Неудачная сетевая/release-проверка не закрывает суточное окно, поэтому maintenance сможет повторить её позже.
Обновление распаковывается в ограниченный staging-каталог и заменяет пакет через rollback-safe swap. Запрещены traversal, Windows alternate-data-stream имена и TAR links/special entries; если GitHub публикует SHA-256 digest asset-а, он проверяется перед установкой. Ручные ZIP/TAR.GZ-пакеты никогда не участвуют в фоновом сетевом обновлении. Произвольное repository field намеренно оставлено в TODO до отдельной модели доверия repository и выбора release asset.
Updater выполняет следующую цепочку:
- проверяет GitHub Releases;
- выбирает только допустимую более новую версию;
- скачивает
Shadowsocks-win-x64.zipи.sha256; - проверяет SHA-256 и структуру архива;
- проверяет версию replacement EXE;
- создаёт transaction в
%TEMP%\Shadowsocks\Updates; - запускает отдельно проверенную updater-копию;
- ждёт завершения текущего процесса;
- сохраняет rollback и заменяет основной EXE;
- запускает обновлённый основной экземпляр;
- удаляет промежуточные файлы transaction.
Устаревшая startup-копия не определяет установленную версию: UpdateChecker учитывает основной executable.
В обычном режиме Start with Windows синхронизирует проверенную копию в:
%LOCALAPPDATA%\Shadowsocks\Startup\Shadowsocks.exe
Run entry указывает на этот стабильный файл и сохраняет путь к исходному product EXE в startup metadata. Подходящие legacy Run entries мигрируются/удаляются. Процессный single-instance gate не позволяет startup copy и исходному EXE одновременно стать владельцами двух controller instances.
В Clean Mode автозагрузка отключена.
Обычные постоянные данные приложения находятся в:
%LOCALAPPDATA%\Shadowsocks
Там находятся settings, rollback snapshot, logs, PAC/GeoSite cache, plugins, startup copy и управляемые runtime/components. Точная модель описана в Storage policy.
Если stem имени EXE заканчивается на p, например:
Shadowsocksp.exe
Shadowsocks-5.2p.exe
приложение создаёт изолированную session в %TEMP%\Shadowsocks\Clean\.... Settings, cache, logs, plugins и скачанные runtimes остаются внутри этого одноразового дерева и при штатном выходе удаляются best-effort.
На странице Hotkeys можно зарегистрировать действия при запуске; конфликты регистрации отображаются в UI. Logs использует выделяемый текст, подсветку severity, horizontal scrolling, live refresh и ограничения на объём читаемой истории. PAC/GeoSite, Traffic и DNS показывают локальную диагностику; managed matcher не отправляет URL/domain routing decisions как telemetry.
Нужны Windows и .NET SDK 10.0.303 или новее. Единственный канонический источник product version — Directory.Build.props.
dotnet restore .\shadowsocks-reborn.sln -p:Platform=x64 -r win-x64
dotnet build .\shadowsocks-reborn.sln -c Release -p:Platform=x64 -m:1 --no-restore
dotnet test .\Shadowsocks.UnitTests\Shadowsocks.UnitTests.csproj -c Release -p:Platform=x64 --no-buildПеред релизом:
.\packaging\Validate-Repository.ps1
.\packaging\Build-Release.ps1Build-Release.ps1 проверяет metadata, выполняет restore/build/tests с release NuGet audit, публикует self-contained продукт, убеждается, что остался только Shadowsocks.exe, сверяет FileVersion и создаёт ZIP + SHA-256 sidecar.
Shadowsocks Reborn распространяется по GPL-3.0-or-later. Legal text встроен в single-file продукт и доступен в About. Сторонние компоненты сохраняют собственные лицензии.
- Architecture
- Storage policy
- Windows 11 / WinUI guide
- Release notes 5.2.31
- Changelog
- Contributing
- Release checklist
Shadowsocks Reborn самостоятельно обновляет подписанный каталог DNSCrypt, не позволяя dnscrypt-proxy разрешать hostnames удалённых sources через bootstrap DNS. Основной resolver — Cloudflare DoH (1.1.1.1, TLS/SNI cloudflare-dns.com), резервный — Google DoH (8.8.8.8, TLS/SNI dns.google); оба HTTPS-соединения DoH открываются через активный локальный SOCKS5 Shadowsocks. После разрешения имени источника загрузка public-resolvers.md и .minisig также идёт через Shadowsocks.
Размер загрузок ограничен, а пара проверяется закреплённым публичным Minisign-ключом DNSCrypt до публикации. Затем dnscrypt-proxy получает только локальный аутентифицированный кэш с urls = [], bootstrap_resolvers = [] и ignore_system_dns = true. Если обновление временно недоступно, может использоваться уже существующий валидный подписанный кэш; при отсутствии валидного кэша операция завершается fail-closed, а предыдущий DNS mode сохраняется.