Пресеты для обхода цензуры
Что делают фрагментация TLS, TLS tricks, uTLS, мультиплексирование, ECH и TLS spoof, когда они помогают, каковы их издержки и как сочетаются пресеты и настройки профиля.
Некоторые сети блокируют или замедляют прокси, анализируя начало каждого зашифрованного соединения. В Throne есть несколько параметров, которые меняют то, как выглядит это начало. На этой странице объясняется, что делает каждый параметр, когда он может помочь и каковы его издержки.
Пресеты и настройки профиля
Глобальные значения по умолчанию находятся в Настройки (Settings) → Предустановленные настройки (Preset Settings):
| Вкладка | Параметры — значение по умолчанию |
|---|---|
Мультиплексирование (Multiplex) |
sing-box: Протокол (Protocol) — smux; Кол-во потоков (Concurrency) — 8; Padding — выкл.; Вкл. по умолчанию (Default On) — выкл. Xray: Кол-во потоков — 8; Вкл. mux по умолчанию (Default Mux On) — выкл. |
TLS |
TLS фрагментация (TLS Fragment): Реализация (Implementation) — built-in; Size — 10-100; Sleep — 2-5; Вкл. по умолчанию — выкл. TLS Tricks: Вкл. по умолчанию — выкл. uTLS: Default Fingerprint — пусто. TLS Spoof: Spoof SNI — пусто; Метод (Method) — пусто; Вкл. по умолчанию — выкл. |
HTTP/2 & QUIC |
Тонкая настройка профилей на базе QUIC. Пустые поля оставляют значения ядра по умолчанию. |
Каждый профиль может переопределить пресеты в своём редакторе. Для фрагментации TLS, TLS Tricks, мультиплексирования и TLS Spoof есть три варианта:
| Вариант в профиле | Результат |
|---|---|
По умолчанию (Keep Default) |
Следует значению Вкл. по умолчанию в пресете. Его используют новые профили. |
Вкл. (On) |
Всегда включено для этого профиля. |
Выкл. (Off) |
Всегда выключено для этого профиля. |
Таким образом, Вкл. по умолчанию включает параметр только для профилей, у которых оставлен вариант По умолчанию.
Пресеты фрагментации TLS, TLS Tricks, TLS Spoof и мультиплексирования sing-box действуют только на профили, работающие на sing-box. У профилей VLESS (Xray) есть свой параметр мультиплексирования (По умолчанию, Включено (Enabled), Выключено (Disabled)), который следует значению Вкл. mux по умолчанию. Default Fingerprint из uTLS действует на оба ядра. См. sing-box или Xray.
Меняйте по одному параметру за раз
Каждый параметр противодействует определённому методу блокировки. Ни один из них не помогает везде, и каждый может сломать профиль, который до этого работал.
- Выберите один профиль, который не работает или работает медленно.
- В его редакторе включите один параметр.
- Проверьте профиль: запустите тест задержки, затем откройте несколько сайтов.
- Если ничего не улучшилось, верните параметру значение
По умолчаниюи попробуйте следующий. - Если параметр помогает большинству ваших профилей, включите для него
Вкл. по умолчаниювПредустановленные настройки.
Мультиплексированию, его дополнению (padding), TCP Brutal и ECH также нужна поддержка на стороне сервера. О том, как тестировать профили, см. Тестирование и автовыбор.
Фрагментация TLS
Цензор часто читает имя сервера (SNI) в первом сообщении TLS-соединения — ClientHello. Фрагментация TLS разбивает это сообщение на маленькие части, чтобы простой фильтр не смог прочитать имя из одного пакета. Она помогает только против таких простых фильтров.
В редакторе профиля в разделе Настройки маскировки TLS (TLS Camouflage Settings) установите для Fragment значение По умолчанию, Вкл. или Выкл.. Способ разбиения выбирается в Предустановленные настройки → TLS → TLS фрагментация → Реализация:
Реализация |
Как работает | Настройки |
|---|---|---|
built-in (по умолчанию) |
sing-box разбивает ClientHello на несколько TCP-пакетов. | Задержка отката (Fallback Delay) в профиле, например 500ms: пауза между частями, когда система не может её измерить. |
custom |
ClientHello отправляется частями случайного размера с короткими паузами между ними. | Size: байт в одной части, в виде диапазона (10-100). Sleep: миллисекунд между частями, в виде диапазона (2-5). |
Включить фрагментацию записи TLS (Enable TLS Record Fragment) в том же разделе редактора — отдельный и более мягкий параметр. Он разбивает ClientHello не на несколько пакетов, а на несколько записей TLS. Попробуйте его раньше, чем Fragment.
Издержки: новые соединения устанавливаются медленнее. С реализацией custom для профиля отключается TCP Fast Open. Профили Naive поддерживают только реализацию custom.
TLS tricks
Параметр TLS tricks записывает имя сервера вперемешку заглавными и строчными буквами, например ExAmPlE.com вместо example.com. Серверы обычно не различают регистр, а фильтр, который ищет точное совпадение имени, может его пропустить.
Установите TLS Tricks в значение Вкл. в профиле (в разделе Настройки маскировки TLS) или отметьте Предустановленные настройки → TLS → TLS Tricks → Вкл. по умолчанию для всех профилей, у которых оставлен вариант По умолчанию.
Издержки: почти никаких. Не помогает против фильтров, которые не учитывают регистр.
Отпечаток uTLS
У каждого TLS-клиента есть характерный отпечаток: набор и порядок параметров в его ClientHello. Отпечаток обычного прокси-клиента легко распознать. uTLS вместо этого копирует отпечаток распространённого браузера или системы.
- Для профиля:
Отпечаток (fingerprint)в редакторе профиля. Ссылки для обмена часто задают его черезfp=. - Глобально:
Предустановленные настройки→TLS→uTLS→Default Fingerprint. Его используют профили без собственного отпечатка — на обоих ядрах. Если поле пустое (по умолчанию), профили sing-box без отпечатка не используют uTLS, а профили Xray без отпечатка используютchrome. Профили Hysteria, TUIC, Juicity и Naive не используют uTLS. - Варианты:
chrome,firefox,edge,safari,360,qq,ios,android,random,randomized.
Профиль sing-box с REALITY, у которого вообще не задан отпечаток, использует random.
Издержки: небольшие. Если сервер перестал работать с одним отпечатком, попробуйте другой или очистите поле.
Мультиплексирование
Мультиплексирование (mux) передаёт много соединений внутри одного соединения с сервером. Тогда для открытия страницы нужно меньше новых соединений и рукопожатий, а наблюдатель видит меньше соединений.
- Для профиля:
Мультиплексированиев редакторе профиля:По умолчанию,Вкл.илиВыкл.. - Пресеты sing-box:
Протокол(smux,yamuxилиh2mux),Кол-во потоков(потоков на одно соединение),Padding(включает дополнение данных для всех профилей с мультиплексированием) иВкл. по умолчанию. - Пресеты Xray:
Кол-во потоковиВкл. mux по умолчанию.
Сервер должен поддерживать mux с тем же протоколом. Для дополнения данных тоже нужна поддержка сервера. Редактор профиля отключает мультиплексирование для профилей VLESS с flow xtls-rprx-vision.
TCP Brutal
Включить TCP Brutal (Enable TCP Brutal) заставляет мультиплексированное соединение передавать данные с фиксированными скоростями, указанными в полях Скорость скачивания (Brutal) (Brutal Download Speed) и Скорость загрузки (Brutal) (Brutal Upload Speed), в Мбит/с, даже при потере пакетов. Для этого нужен сервер с поддержкой TCP Brutal, и параметр работает, только если в профиле для Мультиплексирование установлено значение Вкл..
Когда mux вредит
- Весь трафик идёт через одно соединение. Если оно зависает, зависают и все страницы и загрузки, которые через него идут.
- Множество параллельных соединений, например от торрент-клиента, при включённом mux может заставить Throne сильно нагружать процессор (#1090). Отключите мультиплексирование для такого профиля.
- Первый запрос через новое mux-соединение занимает больше времени. При коротком тайм-ауте теста задержки рабочий профиль может быть отмечен как неработающий.
ECH
Encrypted Client Hello (ECH) шифрует имя сервера внутри ClientHello, чтобы наблюдатель не смог его прочитать. Работает, только если сервер поддерживает ECH. Пресета для ECH нет: он включается в каждом профиле отдельно.
- Откройте профиль и нажмите
Доп. настройки(Advanced Settings). - Отметьте
Вкл. ECH(Enable ECH). - Необязательно: нажмите
Конфигурация ECH(ECH Config) и вставьте ECH-конфигурацию сервера. Если там остаётсяНе задано(Not Set), ядро ищет конфигурацию в DNS. - Необязательно: в поле
ECH имя сервера(ECH Server Name) укажите домен, для которого нужно искать конфигурацию, если это не имя сервера. - Нажмите
OK, затемOKв редакторе профиля.
Издержки: профиль не работает, если сервер не поддерживает ECH или конфигурацию не удаётся найти.
TLS spoof
Некоторые фильтры пропускают соединения только к нескольким разрешённым именам и блокируют остальные. TLS spoof отправляет поддельный ClientHello с разрешённым именем непосредственно перед настоящим. Поддельное сообщение намеренно делается некорректным, поэтому сервер его игнорирует, а фильтр читает его и пропускает соединение.
Глобальные настройки находятся в Предустановленные настройки → TLS → TLS Spoof:
Spoof SNI: разрешённое имя, которое подставляется в поддельное сообщение.Метод: способ сделать поддельное сообщение некорректным:wrong-sequence,wrong-checksum,wrong-ack,wrong-md5илиwrong-timestamp. Если поле пустое, используется значение ядра по умолчанию.Вкл. по умолчанию: подмена для каждого профиля, у которого оставлен вариантПо умолчанию. Отметить этот флажок можно только после того, как вы укажетеSpoof SNI.
Для отдельного профиля откройте Доп. настройки и задайте TLS Spoof (По умолчанию, Вкл. или Выкл.), Spoof SNI и Метод. Пустое поле берёт значение из пресета. Профиль с собственным Spoof SNI выполняет подмену даже при варианте По умолчанию.
Чтобы выполнять подмену только для некоторых сайтов, используйте расширенное правило маршрутизации с действием route или route-options и задайте tls_spoof и tls_spoof_method. См. Маршрутизация.
TLS spoof отправляет сырые пакеты, поэтому ядру нужны повышенные права:
- Windows: Throne должен работать от имени администратора — это нужно для драйвера WinDivert. TLS spoof недоступен в Windows ARM64.
- Linux: ядру нужны права root или возможности (capabilities)
CAP_NET_RAWиCAP_NET_ADMIN. - macOS: ядру нужны права root. Метод
wrong-timestampв macOS не работает.
Эти права ядро получает при выдаче прав для режима TUN. См. Режим TUN.
Издержки: нужны повышенные права, а помогает он только против фильтров, которые пропускают некоторые имена.
Настройка HTTP/2 и QUIC
Предустановленные настройки → HTTP/2 & QUIC задаёт значения по умолчанию для профилей Hysteria, TUIC и MASQUE: Idle Timeout, Период поддерж. активности (Keep Alive Period), Stream Receive Window, Connection Receive Window, Max Concurrent Streams, Initial Packet Size и Disable Path MTU Discovery. Пустые поля оставляют значения ядра по умолчанию. Профиль может переопределить их в Доп. настройки → QUIC Parameters.
Оставляйте эти поля пустыми, если документация вашего сервера не требует других значений.
Android
- Те же пресеты находятся в
Настройки(Settings) →Presets: мультиплексирование (sing-box и Xray), фрагментация TLS Client Hello, TLS tricks, uTLS, а также HTTP/2 и QUIC.Вкл. по умолчанию(Default On) там называетсяOn by default. - У профилей есть тот же вариант
Keep default, а ECH задаётся в каждом профиле. - TLS spoof на Android недоступен.