Все статьи
Технологии
11 мин

ТСПУ: что это такое и как оно видит ваш трафик

Аббревиатура ТСПУ расшифровывается как «технические средства противодействия угрозам». За сухим названием стоит оборудование, установленное у операторов связи, через которое проходит весь ваш трафик. Разберём без мифов, что оно видит, чего не видит и почему у вас и у соседа результат может отличаться.

Где физически стоит это оборудование

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

Из этого следует важное: ваш трафик проходит через конкретный узел, а не через некую общую систему. У разных узлов разные настройки, разные версии, разное состояние.

Именно это порождает картину, которая многих сбивает с толку: у одного человека сервис работает, у другого в том же городе — нет. Они не в разных условиях по географии, они в разных условиях по оборудованию.

Что система видит в зашифрованном соединении

Распространённое заблуждение: «трафик зашифрован, значит его не видно». Шифрование скрывает содержимое, но не скрывает сам факт и форму соединения. Видно многое.

Адреса и порты. Куда вы обращаетесь и на какой порт — это никогда не шифруется, иначе пакет некуда было бы доставить.

Имя сайта при установке защищённого соединения. В классическом TLS имя запрашиваемого сайта передаётся открытым текстом в самом первом пакете. Это сделано для того, чтобы сервер понял, какой из размещённых на нём сайтов вы запрашиваете.

Размеры и тайминги пакетов. Даже не видя содержимого, можно судить о характере трафика: видеозвонок, скачивание файла и просмотр страницы выглядят по-разному.

Структуру рукопожатия. То, как клиент и сервер договариваются о шифровании, различается у разных протоколов и даже у разных библиотек.

Чего система не видит

Содержимое соединения после установки шифрования остаётся закрытым. Какие страницы вы открываете внутри туннеля, что пишете и что скачиваете — не читается.

Поэтому задача фильтрации формулируется иначе: не «прочитать, что внутри», а «определить, что это за соединение, и решить, пропускать ли его целиком».

И вот здесь возникает принципиальная развилка. Если ваше соединение неотличимо от обращения к обычному сайту, то решение «не пропускать» означало бы блокировать заодно и обычные сайты.

Как принимается решение

Оборудование работает на потоке и не может позволить себе долгие вычисления над каждым соединением — иначе интернет встанет для всех. Отсюда компромиссы, которые определяют реальное поведение.

Быстрые признаки в приоритете. Проверить адрес по списку — мгновенно. Посмотреть на порт — мгновенно. Сопоставить первые пакеты с известным образцом — быстро. Глубокий анализ поведения соединения во времени — дорого.

Под нагрузкой правила смягчаются. В час пик оборудование физически не успевает применять все проверки ко всем соединениям. Отсюда наблюдение, знакомое многим: ночью и утром работает лучше, вечером хуже.

Решения принимаются с запасом. Ложное срабатывание, из-за которого перестанет открываться популярный сайт, — заметное происшествие. Поэтому агрессивные правила применяют осторожнее, чем можно было бы.

Мобильный интернет: отдельная история

На мобильных сетях всё сложнее по нескольким причинам сразу.

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

Размер пакета в мобильных сетях обычно меньше стандартного — около 1400 байт вместо 1500. Из-за этого пакеты рукопожатия дробятся, и часть оборудования обрабатывает дробленые пакеты иначе. Это одна из причин, почему в мобильных приложениях появилась настройка фрагментации: кому-то она помогает, кому-то нет — зависит от узла.

Наконец, часть абонентов получает адреса нового формата и добирается до обычных серверов через преобразование на стороне оператора. Качество этого преобразования у всех разное.

Что этому можно противопоставить

Стратегий ровно две, и они противоположны.

Прятаться — шифровать сильнее, менять порты, обфусцировать. Проигрышная в долгую: любой новый способ маскировки со временем получает свой отпечаток и распознаётся.

Не отличаться — не прятать VPN, а сделать соединение настоящим веб-трафиком. Настоящий домен, настоящий сертификат, 443-й порт, обычное рукопожатие. Тогда вопрос «это VPN?» теряет смысл: со стороны это посещение сайта.

Мы используем второй подход: VLESS поверх WebSocket и TLS на 443-м порту. По адресу каждого нашего сервера действительно работает веб-сервер с валидным сертификатом — он ответит на обычный запрос как обычный сайт. Туннель живёт на отдельном пути внутри того же соединения.

Но и это не защищает от главного

Всё сказанное касается анализа трафика. А самый действенный метод анализа не требует: адрес просто закрывают.

19 августа в 18:00 два наших сервера одновременно перестали принимать соединения из России. Никакой анализ протокола тут не участвовал — просто перестали ходить пакеты. Проверка изнутри российской сети показала: до этих адресов трафик не доходит, до трёх других доходит нормально.

Поэтому устойчивость сервиса определяется не только протоколом, но и тем, как быстро он замечает потерю адреса и переводит людей на рабочий. У нас на это ушло около часа: мы нашли причину, переставили порядок серверов в подписке, чтобы клиенты автоматически попадали на живую локацию, и подняли запасной выход на соседнем адресе.

Почему фильтрация усиливается волнами

Наблюдая за происходящим не первый год, легко заметить: блокировки приходят волнами, а не равномерно. Несколько недель ничего не меняется, потом за сутки отваливается сразу несколько сервисов, потом снова затишье.

Причина в том, как устроено обновление правил. Настройки приезжают на узлы пакетами, а не непрерывно. Между обновлениями система работает по старым правилам, и всё, что научилось их обходить, спокойно живёт.

Отсюда практическое наблюдение: если сервис перестал работать, имеет смысл проверить его через несколько дней. Иногда правило оказывается слишком грубым, задевает лишнее и его откатывают.

И обратное: если сервис работает сейчас, это не значит, что он переживёт следующую волну. Устойчивость измеряется не текущим состоянием, а тем, как быстро сервис восстанавливается после очередного удара.

Что видно по нашим счётчикам

У нас есть возможность наблюдать за происходящим изнутри, и картина получается нагляднее любых рассуждений.

Когда адрес попадает под фильтр, подключения не снижаются постепенно — они обрываются. За один час с пятнадцати тысяч до семидесяти одного. Это не деградация канала и не перегрузка: это выключение.

При этом соседние локации в тот же час не только продолжают работать, но и принимают на себя перетёкшую нагрузку. Эстонский сервер девятнадцатого августа за час после отключения двух других принял вдвое больше подключений, чем часом ранее.

Такая картина — прямое доказательство того, что дело не в протоколе. Транспорт на всех наших серверах одинаковый. Если бы распознавали протокол, отвалились бы все сразу.

Пять локаций, устойчивый транспорт, честная поддержка

Мы используем VLESS поверх WebSocket и TLS на 443-м порту с настоящими доменами и валидными сертификатами — для сети это неотличимо от обычного сайта. Когда адрес всё-таки попадает под фильтр, мы переключаем людей на рабочую локацию и покупаем новый — за август это происходило четыре раза, и сервис продолжал работать. Пробный период оформляется на сайте за пару минут, без карты.

Понимание того, как устроена фильтрация, снимает большую часть вопросов: почему у соседа работает, почему вечером хуже, почему смена страны иногда помогает, а иногда нет. И объясняет, почему сервис с несколькими локациями надёжнее самого хитрого протокола в одной точке.