Аббревиатура ТСПУ расшифровывается как «технические средства противодействия угрозам». За сухим названием стоит оборудование, установленное у операторов связи, через которое проходит весь ваш трафик. Разберём без мифов, что оно видит, чего не видит и почему у вас и у соседа результат может отличаться.
Где физически стоит это оборудование
Оборудование размещено на узлах операторов связи — в точках, где трафик абонентов собирается перед выходом в магистральные каналы. Не на каждой базовой станции и не в каждом доме, а на уровне узлов, обслуживающих десятки и сотни тысяч абонентов.
Из этого следует важное: ваш трафик проходит через конкретный узел, а не через некую общую систему. У разных узлов разные настройки, разные версии, разное состояние.
Именно это порождает картину, которая многих сбивает с толку: у одного человека сервис работает, у другого в том же городе — нет. Они не в разных условиях по географии, они в разных условиях по оборудованию.
Что система видит в зашифрованном соединении
Распространённое заблуждение: «трафик зашифрован, значит его не видно». Шифрование скрывает содержимое, но не скрывает сам факт и форму соединения. Видно многое.
Адреса и порты. Куда вы обращаетесь и на какой порт — это никогда не шифруется, иначе пакет некуда было бы доставить.
Имя сайта при установке защищённого соединения. В классическом TLS имя запрашиваемого сайта передаётся открытым текстом в самом первом пакете. Это сделано для того, чтобы сервер понял, какой из размещённых на нём сайтов вы запрашиваете.
Размеры и тайминги пакетов. Даже не видя содержимого, можно судить о характере трафика: видеозвонок, скачивание файла и просмотр страницы выглядят по-разному.
Структуру рукопожатия. То, как клиент и сервер договариваются о шифровании, различается у разных протоколов и даже у разных библиотек.
Чего система не видит
Содержимое соединения после установки шифрования остаётся закрытым. Какие страницы вы открываете внутри туннеля, что пишете и что скачиваете — не читается.
Поэтому задача фильтрации формулируется иначе: не «прочитать, что внутри», а «определить, что это за соединение, и решить, пропускать ли его целиком».
И вот здесь возникает принципиальная развилка. Если ваше соединение неотличимо от обращения к обычному сайту, то решение «не пропускать» означало бы блокировать заодно и обычные сайты.
Как принимается решение
Оборудование работает на потоке и не может позволить себе долгие вычисления над каждым соединением — иначе интернет встанет для всех. Отсюда компромиссы, которые определяют реальное поведение.
Быстрые признаки в приоритете. Проверить адрес по списку — мгновенно. Посмотреть на порт — мгновенно. Сопоставить первые пакеты с известным образцом — быстро. Глубокий анализ поведения соединения во времени — дорого.
Под нагрузкой правила смягчаются. В час пик оборудование физически не успевает применять все проверки ко всем соединениям. Отсюда наблюдение, знакомое многим: ночью и утром работает лучше, вечером хуже.
Решения принимаются с запасом. Ложное срабатывание, из-за которого перестанет открываться популярный сайт, — заметное происшествие. Поэтому агрессивные правила применяют осторожнее, чем можно было бы.
Мобильный интернет: отдельная история
На мобильных сетях всё сложнее по нескольким причинам сразу.
Абоненты сидят за общим преобразованием адресов: сотни и тысячи людей выходят в интернет с одного адреса, а сам адрес меняется. Один телефон за десять минут может побывать в нескольких подсетях оператора.
Размер пакета в мобильных сетях обычно меньше стандартного — около 1400 байт вместо 1500. Из-за этого пакеты рукопожатия дробятся, и часть оборудования обрабатывает дробленые пакеты иначе. Это одна из причин, почему в мобильных приложениях появилась настройка фрагментации: кому-то она помогает, кому-то нет — зависит от узла.
Наконец, часть абонентов получает адреса нового формата и добирается до обычных серверов через преобразование на стороне оператора. Качество этого преобразования у всех разное.
Что этому можно противопоставить
Стратегий ровно две, и они противоположны.
Прятаться — шифровать сильнее, менять порты, обфусцировать. Проигрышная в долгую: любой новый способ маскировки со временем получает свой отпечаток и распознаётся.
Не отличаться — не прятать VPN, а сделать соединение настоящим веб-трафиком. Настоящий домен, настоящий сертификат, 443-й порт, обычное рукопожатие. Тогда вопрос «это VPN?» теряет смысл: со стороны это посещение сайта.
Мы используем второй подход: VLESS поверх WebSocket и TLS на 443-м порту. По адресу каждого нашего сервера действительно работает веб-сервер с валидным сертификатом — он ответит на обычный запрос как обычный сайт. Туннель живёт на отдельном пути внутри того же соединения.
Но и это не защищает от главного
Всё сказанное касается анализа трафика. А самый действенный метод анализа не требует: адрес просто закрывают.
19 августа в 18:00 два наших сервера одновременно перестали принимать соединения из России. Никакой анализ протокола тут не участвовал — просто перестали ходить пакеты. Проверка изнутри российской сети показала: до этих адресов трафик не доходит, до трёх других доходит нормально.
Поэтому устойчивость сервиса определяется не только протоколом, но и тем, как быстро он замечает потерю адреса и переводит людей на рабочий. У нас на это ушло около часа: мы нашли причину, переставили порядок серверов в подписке, чтобы клиенты автоматически попадали на живую локацию, и подняли запасной выход на соседнем адресе.
Почему фильтрация усиливается волнами
Наблюдая за происходящим не первый год, легко заметить: блокировки приходят волнами, а не равномерно. Несколько недель ничего не меняется, потом за сутки отваливается сразу несколько сервисов, потом снова затишье.
Причина в том, как устроено обновление правил. Настройки приезжают на узлы пакетами, а не непрерывно. Между обновлениями система работает по старым правилам, и всё, что научилось их обходить, спокойно живёт.
Отсюда практическое наблюдение: если сервис перестал работать, имеет смысл проверить его через несколько дней. Иногда правило оказывается слишком грубым, задевает лишнее и его откатывают.
И обратное: если сервис работает сейчас, это не значит, что он переживёт следующую волну. Устойчивость измеряется не текущим состоянием, а тем, как быстро сервис восстанавливается после очередного удара.
Что видно по нашим счётчикам
У нас есть возможность наблюдать за происходящим изнутри, и картина получается нагляднее любых рассуждений.
Когда адрес попадает под фильтр, подключения не снижаются постепенно — они обрываются. За один час с пятнадцати тысяч до семидесяти одного. Это не деградация канала и не перегрузка: это выключение.
При этом соседние локации в тот же час не только продолжают работать, но и принимают на себя перетёкшую нагрузку. Эстонский сервер девятнадцатого августа за час после отключения двух других принял вдвое больше подключений, чем часом ранее.
Такая картина — прямое доказательство того, что дело не в протоколе. Транспорт на всех наших серверах одинаковый. Если бы распознавали протокол, отвалились бы все сразу.
Пять локаций, устойчивый транспорт, честная поддержка
Мы используем VLESS поверх WebSocket и TLS на 443-м порту с настоящими доменами и валидными сертификатами — для сети это неотличимо от обычного сайта. Когда адрес всё-таки попадает под фильтр, мы переключаем людей на рабочую локацию и покупаем новый — за август это происходило четыре раза, и сервис продолжал работать. Пробный период оформляется на сайте за пару минут, без карты.
Понимание того, как устроена фильтрация, снимает большую часть вопросов: почему у соседа работает, почему вечером хуже, почему смена страны иногда помогает, а иногда нет. И объясняет, почему сервис с несколькими локациями надёжнее самого хитрого протокола в одной точке.