Пресеты для обхода цензуры
Что делают фрагментация TLS, TLS tricks, uTLS, мультиплексирование, ECH и TLS spoof, когда они помогают и каковы их издержки.
Некоторые сети блокируют или замедляют прокси, анализируя начало каждого зашифрованного соединения. Эти параметры меняют то, как выглядит это начало. Предустановленные настройки (Preset Settings), разделы Настройки маскировки TLS (TLS Camouflage Settings) и Доп. настройки (Advanced Settings) редактора профиля, а также вариант Custom у мультиплексирования доступны только в расширенном режиме (см. Простой и расширенный режим).
Пресеты и настройки профиля
Глобальные значения по умолчанию находятся в Настройки (Settings) → Предустановленные настройки. В редакторе профиля у фрагментации TLS, TLS Tricks, мультиплексирования и TLS Spoof есть варианты По умолчанию (Keep Default) — следовать значению Вкл. по умолчанию (Default On) в пресете, его используют новые профили, — Вкл. (On) и Выкл. (Off). Поэтому Вкл. по умолчанию действует только на профили, у которых оставлен вариант По умолчанию.
Пресеты действуют только на профили, работающие на sing-box, кроме Fingerprint по умолчанию (Default Fingerprint) из uTLS, который действует на оба ядра, и пресетов мультиплексирования Xray, которые используют профили VLESS (Xray). См. sing-box или Xray.
Меняйте по одному параметру за раз
Каждый параметр противодействует одному методу блокировки. Ни один из них не помогает везде, и каждый может сломать профиль, который до этого работал.
- Включите один параметр в одном профиле, который не работает или работает медленно.
- Запустите тест задержки и откройте несколько сайтов. Если ничего не улучшилось, верните параметру значение
По умолчаниюи попробуйте следующий. - Если параметр помогает большинству ваших профилей, включите для него
Вкл. по умолчаниювПредустановленные настройки.
Фрагментация TLS
Цензор часто читает имя сервера (SNI) в первом сообщении TLS-соединения — ClientHello. Фрагментация TLS разбивает это сообщение, чтобы простой фильтр не смог прочитать имя из одного пакета. Она помогает только против таких простых фильтров.
Задайте Фрагментация (Fragment) в редакторе профиля в разделе Настройки маскировки TLS. Сначала попробуйте Включить фрагментацию записи TLS (Enable TLS Record Fragment) рядом с ним: этот параметр мягче и разбивает ClientHello не на пакеты, а на записи TLS.
Предустановленные настройки → TLS → Фрагментация TLS (TLS Fragment) → Реализация (Implementation) задаёт способ разбиения:
built-in(по умолчанию): sing-box разбивает ClientHello на TCP-пакеты.Fallback Delayв профиле, например500ms, — пауза между частями, когда система не может её измерить.custom: части случайного размераРазмер(Size, байты,10-100) с паузамиПауза(Sleep, миллисекунды,2-5). Профили Naive поддерживают только эту реализацию.
Издержки: новые соединения устанавливаются медленнее, а custom отключает для профиля TCP Fast Open.
Фрагментировать подходящие соединения может и правило маршрутизации, например прямые соединения с сайтом, который фильтр блокирует по имени. См. tls_fragment в разделе Расширенные правила.
TLS tricks
TLS tricks записывает имя сервера вперемешку заглавными и строчными буквами, например ExAmPlE.com. Серверы не различают регистр, а фильтр, который ищет точное имя, может его пропустить. Задайте TLS Tricks в редакторе профиля в разделе Настройки маскировки TLS.
Издержки: почти никаких, но против фильтров, которые не учитывают регистр, он не помогает.
Отпечаток uTLS
uTLS делает ClientHello похожим на ClientHello распространённого браузера или системы, а не обычного прокси-клиента, которого легко распознать по отпечатку.
- Для профиля:
Fingerprintв редакторе профиля. Ссылки для обмена часто задают его черезfp=. - Глобально:
Предустановленные настройки→TLS→uTLS→Fingerprint по умолчанию— для профилей без собственного отпечатка. Пока поле пустое (по умолчанию), такие профили не используют uTLS на sing-box, используютrandomдля REALITY на sing-box иchromeна Xray. Профили Hysteria, TUIC, Juicity и Naive не используют uTLS. - Варианты:
chrome,firefox,edge,safari,360,qq,ios,android,random,randomizedиunsafe.unsafeотключает uTLS, даже если заданFingerprint по умолчанию, и только тогда действует поле профиляНаборы шифров(Cipher Suites) — наборы шифров TLS 1.2 через двоеточие; оставьте его пустым, если этого не требует ваш сервер.
Издержки: небольшие. Если сервер перестал работать с одним отпечатком, попробуйте другой или очистите поле.
Мультиплексирование
Мультиплексирование (mux) передаёт много соединений внутри одного соединения с сервером, поэтому страницам нужно меньше рукопожатий, а наблюдатель видит меньше соединений. Сервер должен поддерживать mux с тем же протоколом, а если вы используете дополнение (padding), то и его.
Задайте Мультиплексирование (Multiplex) в редакторе профиля (у профилей VLESS (Xray) вместо Вкл. и Выкл. — Включено (Enabled) и Выключено (Disabled)). Custom → Configure даёт профилю собственную копию полей пресета; профили из ссылок или подписок с собственными настройками mux открываются с вариантом Custom. Мультиплексирование отключено для профилей VLESS с flow xtls-rprx-vision и обязательно для XDRIVE.
Пресеты sing-box (Предустановленные настройки → Мультиплексирование → Sing-box):
Protocol:smux,yamuxилиh2mux.Mode: приMax Streamsследующее соединение открывается, когда одно несёт столько потоков. ПриMax Connectionsсоединений не больше этого числа, и новое открывается, только если наименее загруженное несётMin Streamsпотоков.Padding: добавляет к мультиплексированному трафику дополнение.TCP Brutal: передаёт данные с фиксированными скоростями из полейUpload (Mb/s)иDownload (Mb/s), даже при потере пакетов. Укажите обе. Нужна поддержка на сервере, и все потоки тогда идут через одно соединение.
Пресеты Xray (Предустановленные настройки → Мультиплексирование → Xray):
Concurrency: сколько потоков несёт одно соединение, прежде чем откроется следующее.0— значение Xray по умолчанию (8),-1отправляет TCP в обход mux.Max Connections: не больше стольких соединений, отдельно для TCP и XUDP. Пустое поле — без ограничения.XUDP Concurrency: потоков UDP на соединение, в отдельных соединениях.0передаёт UDP через соединения TCP,-1отправляет его в обход mux.UDP/443, в основном QUIC:Reject(по умолчанию) заставляет браузеры вернуться к TCP,Allowпропускает его через mux,Skipотправляет в обход mux.
Издержки: всё, что идёт через одно соединение, зависает вместе. Множество параллельных соединений, например от торрент-клиента, может заставить Throne сильно нагружать процессор (#1090) — отключите мультиплексирование для такого профиля. Первый запрос через новое mux-соединение идёт дольше, поэтому при коротком тайм-ауте теста задержки рабочий профиль может быть отмечен как неработающий.
ECH
Encrypted Client Hello (ECH) шифрует имя сервера, чтобы наблюдатель не смог его прочитать. Работает, только если сервер его поддерживает, и включается в каждом профиле отдельно:
- Откройте профиль, нажмите
Доп. настройкии отметьтеВкл. ECH(Enable ECH). - Необязательно: вставьте ECH-конфигурацию сервера в
ECH Config. Если там остаётсяНе задано(Not Set), конфигурация ищется в DNS — для домена изECH Query Name / Resolverили для имени сервера. Чтобы спросить определённый DNS-сервер вместо прямого DNS, добавьте его после+, напримерcloudflare-ech.com+https://1.1.1.1/dns-query. - Нажмите
OKв обоих окнах.
Профили Xray вместо этого используют ECH Config List в настройках TLS: ECH-конфигурацию в Base64 или домен и сервер DNS поверх HTTPS, например cloudflare-ech.com+https://8.8.8.8/dns-query. Ссылки для обмена передают ECH в ech=, см. ECH и закрепление сертификатов в ссылках.
Издержки: профиль не работает, если сервер не поддерживает ECH или конфигурацию не удаётся найти.
TLS spoof
Некоторые фильтры пропускают несколько разрешённых имён и блокируют остальные. TLS spoof отправляет поддельный ClientHello с разрешённым именем непосредственно перед настоящим. Поддельное сообщение намеренно некорректно, поэтому сервер его игнорирует, а фильтр пропускает соединение.
- Пресеты (
Предустановленные настройки→TLS→Подмена TLS(TLS Spoof)):Поддельный SNI(Spoof SNI) — разрешённое имя,Метод(Method) — способ сделать поддельное сообщение некорректным:wrong-sequence,wrong-checksum,wrong-ack,wrong-md5илиwrong-timestamp(пусто — значение ядра по умолчанию). - Для профиля:
Доп. настройки→Подмена TLS,Поддельный SNIиМетод. Пустые поля берут значения из пресетов. Профиль с собственнымПоддельный SNIвыполняет подмену даже при вариантеПо умолчанию. - Для сайта: расширенное правило маршрутизации с
tls_spoofиtls_spoof_method, см. Расширенные правила.
TLS spoof отправляет сырые пакеты, поэтому ядру нужны права, которые выдаются для режима TUN: права администратора в Windows (кроме Windows ARM64), root или CAP_NET_RAW и CAP_NET_ADMIN в Linux и root в macOS, где метод wrong-timestamp не работает.
Издержки: нужны повышенные права, а помогает он только против фильтров, которые пропускают некоторые имена.
Настройка HTTP/2 и QUIC
Предустановленные настройки → HTTP/2 & QUIC задаёт значения по умолчанию, такие как Idle Timeout, Keep Alive Period и Initial Packet Size, для профилей Hysteria, TUIC и MASQUE. Профиль переопределяет их в Доп. настройки → Параметры QUIC (QUIC Parameters). Оставляйте эти поля пустыми, то есть со значениями ядра, если документация вашего сервера не требует других.
Android
- Те же пресеты находятся в
Настройки(Settings) →Пресеты(Presets), аВкл. по умолчаниютам называетсяВключено по умолчанию(On by default). ECH задаётся в каждом профиле. - У
Включить мультиплексор(Enable multiplexer) в редакторе профиля есть и вариантПользовательский(Custom), который показывает поля мультиплексирования прямо под ним. - Правила маршрутизации могут фрагментировать подходящие соединения с помощью
Фрагментация TLS(TLS fragment),Резервная задержка фрагментации TLS(TLS fragment fallback delay) иФрагментация записей TLS(TLS record fragment). - TLS spoof недоступен.