Перейти к содержанию

Обход блокировок

ЗАЧЕМ ЭТО НУЖНО

Системы DPI часто блокируют по SNI (домен назначения) из TLS ClientHello — первого пакета каждого TLS/Reality-хендшейка. Фрагментация дробит этот ClientHello на множество мелких TCP-сегментов с крошечными задержками, так что DPI не может собрать SNI обратно → не видит домен → не может резать по домену. Работает целиком на штатном ядре Xray (outbound freedom с настройками fragment) — без дополнительного сервера и инфраструктуры.

Четыре параметра ниже решают разные задачи и часто применяются вместе.

Приложение настраивает всё за вас. Вручную добавлять fragment-outbound в конфиг НЕ нужно: при включении приложение само вставляет его и перенаправляет через него весь прямой TLS/Reality-трафик на ЛЮБОМ конфиге, оставляя цепочки (multi-hop) нетронутыми — фрагментируется только тот хоп, который видит DPI.

08.1 · s-fragment — фрагментация TLS

Включение — заголовок s-fragment

Значение Эффект
отсутствует / off Выключено (отсутствие заголовка не меняет прежнее значение)
on Включено с параметрами по умолчанию
packets=tlshello;length=50-100;interval=10-20;maxsplit=100-200 Включено с этими параметрами

Передаётся как HTTP-заголовок ответа s-fragment: или строкой-комментарием в теле #s-fragment: packets=tlshello;length=50-100;interval=10-20.

🔒 Требует активного Provider ID. Как и любое управляемое провайдером поле, s-fragment учитывается только пока ваш Provider ID активен. Неактивный или неизвестный провайдер не может включать фрагментацию на устройствах пользователей.

Параметры

Параметр Формат · по умолчанию · описание
packets tlshello или N-M · по умолчанию tlshelloКакие пакеты фрагментировать. tlshello — только TLS ClientHello (несёт SNI), рекомендуется. 1-3 — первые 1–3 исходящих пакета.
length min-max (байты) · по умолчанию 50-100Размер фрагмента, случайно в диапазоне. Меньше = труднее собрать, но больше накладных расходов.
interval min-max (мс) · по умолчанию 10-20Задержка между фрагментами, случайно в диапазоне. Джиттер мешает буферизации и пересборке.
maxsplit min-max · по умолчанию не заданОпционально (только новые ядра). Ограничивает число фрагментов. Старые ядра игнорируют.

Значения по умолчанию подходят большинству сетей. Тюнинг под конкретный DPI: сильнее блокируют → меньше length и/или больше interval; падает скорость → больше length и меньше interval.

Имена параметров не зависят от регистра (maxsplit и maxSplit — один и тот же ключ), а ключ packets — во множественном числе: packets=, не packet=. packet= относится к s-noise, где означает полезную нагрузку.

⚙️Пользователь может включить сам

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

08.2 · s-noise — шумовые пакеты

Мусорный трафик, отправляемый до соединения, чтобы DPI не распознал его начало. Работает в паре с фрагментацией — у них общий выход, и вместе они закрывают и начало соединения, и его содержимое.

Значения: on / 1 — параметры по умолчанию (rand, пакет 50-100, задержка 10-20); off / 0 — выключить. Полная форма — type=rand;packet=50-100;delay=10-20 или позиционно rand,50-100,10-20; type принимает rand, str или hex.

Принимаются оба написания заголовка — s-noise и s-noises.

08.3 · s-resolve — предразрешение адреса сервера

Разрешает адрес сервера через DoH до подъёма туннеля. Нужно там, где локальный DNS отдаёт подменённый ответ для домена вашего узла: без этого клиент получит неверный IP и просто не подключится.

Значения: on / 1 — резолвер по умолчанию (dnsforge.de); off / 0 — выключить; URL задаёт свой резолвер.

Если отравлен и домен самого резолвера, добавьте bootstrap-IP через ;ip=… — например https://dnsforge.de/dns-query;ip=49.12.67.122. Исходный домен остаётся в SNI, поэтому TLS/Reality проверяются как обычно. Если резолвер не ответил за полторы секунды, используется обычный поиск — параметр может только помочь, но не заблокировать подключение.

Несколько резолверов. Адреса можно перечислить через запятую, каждый со своим bootstrap-IP — они пробуются по порядку до первого ответившего. Одиночный адрес работает как раньше: это тот же формат без запятых.

s-resolve: https://a.example/dns-query;ip=1.2.3.4, https://b.example/dns-query;ip=5.6.7.8

Список полезнее встроенного набора приложения: вы задаёте адреса, про которые знаете, что они работают в сетях ваших пользователей, — встроенный список об этом знать не может. К тому же включить его заголовком нельзя, он управляется только тумблером у пользователя.

08.4 · s-dns — DNS-over-HTTPS в туннеле

Шифрует обычные DNS-запросы внутри туннеля. Значения: on / 1 — встроенный резолвер по умолчанию (dnsforge.de); URL вида https://dnsforge.de/dns-query — свой резолвер; off / 0 — выключить. Разрешённый DNS идёт через туннель, а не через физическую сеть.

Порядок применения

Параметры провайдера всегда важнее пользовательских настроек, включая off. Если настраивает сам пользователь, порядок такой: фрагментация → шум → DoH.