Skip to content

RU User Guide

SlimRG edited this page Aug 23, 2026 · 1 revision

Shadowsocks Reborn — руководство пользователя

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 CONNECT tunnel.
  • 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

Первый запуск и серверы

  1. Запустите Shadowsocks.exe.
  2. Откройте Servers и добавьте или импортируйте сервер.
  3. Укажите имя, адрес, порт, пароль, метод шифрования и при необходимости SIP003 plugin.
  4. Выберите активный сервер и режим трафика в окне приложения или трее.
  5. Страница Share / QR позволяет импортировать и экспортировать ss://.

Серверам без имени назначаются стабильные уникальные имена Server N; явно заданные имена не перезаписываются.

Режимы трафика

User Mode

Не требует прав администратора и не запускает прозрачный WinDivert capture. Приложения используют Shadowsocks через системный proxy, Local/Online PAC, локальный SOCKS5 или managed HTTP proxy.

Admin Mode

Запрашивает UAC и активирует изолированный Shadowsocks.NetworkService. Helper встроен в Shadowsocks.exe, извлекается по необходимости в управляемый runtime-каталог, проверяется и выполняет прозрачный TCP/UDP capture через WinDivert. UI показывает состояние broker/capture и redirect ports.

Game Mode

Это не третий выбираемый traffic mode. Когда работает одна из настроенных игр/программ, transparent Admin capture автоматически приостанавливается, а после завершения процесса восстанавливается.

Маршрутизация по приложениям

Application rules имеют более высокий приоритет, чем domain rules, и поддерживают:

  • Proxy
  • Direct
  • Block

Локальный proxy

Клиент предоставляет SOCKS5 и managed HTTP forward proxy.

  • HTTP: HTTP/1.1 forwarding.
  • HTTPS: byte tunnel через CONNECT; конечные стороны могут согласовать HTTP/2 внутри TLS без локального HTTP/2 parser.
  • FTP gateway: не реализован.

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

Local PAC и managed C# routing

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

Online PAC — отдельный явно включаемый compatibility mode. Выбранная пользователем внешняя PAC-программа остаётся авторитетной и выполняется PAC-средой Windows. Это не Local EasyList/ABP engine: произвольную PAC JavaScript-программу в общем случае невозможно без потерь преобразовать в ABP rules.

DNS и DNSCrypt

В 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 listener dnscrypt-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.

SIP003 плагины

Страница 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 выполняет следующую цепочку:

  1. проверяет GitHub Releases;
  2. выбирает только допустимую более новую версию;
  3. скачивает Shadowsocks-win-x64.zip и .sha256;
  4. проверяет SHA-256 и структуру архива;
  5. проверяет версию replacement EXE;
  6. создаёт transaction в %TEMP%\Shadowsocks\Updates;
  7. запускает отдельно проверенную updater-копию;
  8. ждёт завершения текущего процесса;
  9. сохраняет rollback и заменяет основной EXE;
  10. запускает обновлённый основной экземпляр;
  11. удаляет промежуточные файлы transaction.

Устаревшая startup-копия не определяет установленную версию: UpdateChecker учитывает основной executable.

Запуск вместе с Windows

В обычном режиме 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.

Clean Mode

Если stem имени EXE заканчивается на p, например:

Shadowsocksp.exe
Shadowsocks-5.2p.exe

приложение создаёт изолированную session в %TEMP%\Shadowsocks\Clean\.... Settings, cache, logs, plugins и скачанные runtimes остаются внутри этого одноразового дерева и при штатном выходе удаляются best-effort.

Hotkeys, Logs и диагностика

На странице 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.ps1

Build-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. Сторонние компоненты сохраняют собственные лицензии.

Остальная документация

Bootstrap resolver-каталога DNSCrypt

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 сохраняется.

Clone this wiki locally