Проблема

Несколько недель назад в рабсии был введен новый метод блокировки (особенно в мобильных сетях).
Работает он следующим образом. Итак, если:

Клиент подключается к серверу по TCP с использованием HTTPS и TLS 1.3 (например, VLESS/Reality фактически имитирует HTTPS с TLS 1.3);
IP-адрес сервера «подозрителен» (он находится за пределами ⚠️ (т.е. не в рабсии), входит в подсеть AS, принадлежащую зарубежным дата-центрам, таким как Hetzner, Digital Ocean и т.д.);
В рамках одного TCP-соединения (а не одного HTTP-запроса/ответа — это важно) размер данных, полученных от сервера клиенту, превышает ≈15–20 КБ (значение варьируется в зависимости от провайдера) — это ГЛАВНОЕ.

Это соединение «заморожено» (т.е. TCP-пакеты от сервера в рамках этого соединения перестают поступать после достижения заданного ограничения на размер передаваемых данных). Любопытно отметить, что, как правило, цензор (под видом ответа сервера) не отправляет, например, RST-пакет, а просто «замораживает» TCP-соединение (с точки зрения клиента), и клиент просто ожидает ошибки по таймауту ожидания ответа от сервера, и всё перестаёт работать.

ВАЖНО: Неважно, идёт ли «легитимный» HTTPS-трафик или его кто-то имитирует. Сейчас на это не обращают внимания.

Есть ли у меня эти ограничения?

Вы можете проверить своего «домашнего» интернет-провайдера с помощью инструмента проверки RU :: TCP 16-20 из этого репозитория. Работает прямо из браузера, VPN во время проверки должен быть отключён. Примечания

Хорошая новость заключается в том, что если фрагментировать ответы сервера на несколько пакетов данных по ≈15–20 КБ (если они достаточно большие) в разных TCP-соединениях, всё будет работать нормально. Важно не путать это с фрагментацией TCP-пакетов в пределах одного соединения или разделением передаваемых данных на несколько HTTP-запросов/ответов (в одном соединении) — это разные вещи, и это не поможет.

Да, это будет работать заметно медленнее, чем одно соединение (особенно если мы собираемся загрузить/скачать большой файл). Например, для загрузки файла размером 50 МБ потребуется около 2560 TCP-соединений — это много и довольно подозрительно.

upd1: TLS 1.2 также заблокирован (иногда существует другой лимит на размер данных для одного TCP-соединения).

upd2: На данный момент, похоже, без ограничений в TCP работают только SSH/sFTP+ и иногда RDP (оба на любых портах). Передача произвольных данных по TCP (без TLS и т.п., в необработанном виде) также ограничена. Возможно, в TCP есть и другие функции, которые работали бы без ограничений, но я в этом не уверен.

upd3: У Censor есть белый список (основанный на SNI в рукопожатии TLS и, возможно, на HTTP-заголовке Host при использовании обычного HTTP). Подробнее, включая часть этого списка, см. здесь. Например, его можно использовать как SNI/dest в xray/vless+reality (с xtls-rprx-vision), и он будет работать