Записки выжившего лемминга
Содержание
Часть 1. Паттерны убивают #
Прошлой осенью я лишился своего VPN-сервиса. Классический селфхостед на VDS, поднятом у зарубежного хостера, без посредников. Работал надёжно, стоил копейки — и я привык к тому, что всё просто работает. Осенняя волна блокировок смела его вместе с тысячами похожих.
Не я один попал под раздачу. Эта волна ударила как по самоварам, так и по крупным коммерческим сервисам. Дополнительной нервозности добавлял тот факт, что ситуация разительно отличалась в зависимости от региона, провайдера и типа соединения — что вносило дополнительную суматоху и делало любые обобщения практически невозможными.
Ноябрьский обвал стал шоком. VLESS — протокол, казавшийся нерушимым — пал. СМИ подавали это как великое достижение российского регулятора: России удалось то, чего не смог Китай — страна с самой совершенной системой интернет-цензуры в мире, с многолетним опытом и колоссальными ресурсами. Великий Китайский Файрвол при всей своей мощи не нашёл противодействия VLESS. Российский регулятор — нашёл.
Однако когда я начал по кусочкам собирать картину произошедшего, всё оказалось не так мрачно. Протокол устоял. Расколоть его до сих пор не удалось никому. Проблема была не в протоколе, а в людях, которые его использовали. Их всех сгубили общие паттерны: характерные признаки трафика, по которым системы DPI научились его детектировать и выделять из общего потока.
VLESS стал невероятно популярен — и вот это, как я понимаю теперь, и было первым тревожным звоночком, который я пропустил. Вместе с популярностью пришли удобство и инструменты: веб-панели, готовые скрипты, тулзы на любой вкус. Я оказался одним из тех десяти миллионов леммингов, которые не могут ошибаться. Поддался всеобщей эйфории, уверовал в неуязвимость VLESS — и совсем потерял осторожность. Поставил себе удобную панель 3X-UI, не удосужившись сменить дефолтный порт или хоть как-то её замаскировать.
Именно это и детектировали системы DPI. Миллионы пользователей, действующих по одному шаблону: однотипные гайды по настройке, одни и те же сайты для мимикрии трафика, одни и те же инструменты и панели с дефолтными портами, которые известны, как выяснилось, не только энтузиастам. Поверх этого — активное зондирование, выявляющее характерное отклонение при рукопожатии.
Результатом действий регулятора стала не компрометация протокола, а выявление и компрометация узлов, которые его использовали, — с последующей блокировкой по IP. Я убедился в этом лично: в судорожной попытке починить упавший сервис потерял доступ к узлу даже по SSH — но только из российского сегмента сети. С зарубежных серверов он по-прежнему оставался доступен.
Кампания по блокировке VLESS оказалась беспрецедентной по масштабу. Она наглядно показала: времена, когда можно было целиком полагаться на одну технологию — пусть даже самую совершенную — остались в прошлом. Никто больше не может чувствовать себя неуязвимым.
Но у этой истории есть и обратная сторона. Кампания обнажила слабости самого регулятора. Когда все силы были брошены на VLESS, многие другие протоколы, прежде заблокированные, вдруг снова начали работать. На короткое время открылся доступ к ранее недоступным ресурсам — мощностей оборудования, судя по всему, не хватило, чтобы блокировать всё и сразу: тотальный контроль уперся в лимиты железа.
Тем не менее главный вывод, который сделало большинство участников рынка, был однозначным: жизнь больше не будет прежней. Схемы, работавшие раньше — когда можно было арендовать сервер за рубежом по цене чашки кофе, прокинуть до него защищенный канал и получить свой личный VPN, — больше не работают. Такие каналы будут вычислены и заблокированы. И с развитием систем и техник DPI срок их обнаружения и компрометации будет только уменьшаться.
Время простых схем закончилось. Чтобы обеспечить стабильную работу сети в будущем, потребуются более сложные инфраструктурные решения — масштабные и диверсифицированные, способные гибко реагировать на действия регулятора: менять топологию и протоколы в зависимости от ситуации и обеспечивать всё более глубокую маскировку.
Эта история заставила меня остановиться и подумать. Не о том, как быстрее восстановить доступ к утраченному сервису — технически это вполне решаемая проблема. А о природе произошедшего: почему схема, работавшая годами, сломалась?
Часть 2. Гонка вооружений #
Где-то в середине 2018 года на Хабре вышла статья «Туннели и VPN, устойчивые к DPI». Это была одна из первых статей, с которых начиналось моё знакомство с темой. Хороший обзор решений, аргументы за и против собственного VPN. В те годы я только начинал строить первые приватные сети. Выбор инструментов был понятным:
- OpenVPN — главный «народный» VPN эпохи. Надёжный, гибкий, хорошо задокументированный. Но тяжёлый — и узнаваемый: характерное TLS-рукопожатие и паттерны трафика делали его видимым для любого DPI, который хотел его увидеть.
- SSH-форвард — другая крайность: минималистичный туннель поверх SSH, мимикрирующий под служебный трафик. Для точечных задач годился, для повседневного использования — не то.
- Shadowsocks появился как прямой ответ на Великий Китайский Файрвол: прокси, маскирующийся под зашифрованный поток без явных признаков протокола, созданный именно для противодействия DPI — и долгое время с задачей справлявшийся.
- WireGuard выбивался из ряда: простой, быстрый, элегантный — но откровенный. Никакой обфускации, трафик идентифицируется моментально. Скорость в обмен на скрытность.
Я в итоге осел на IKEv2 — корпоративном стандарте, непопулярном у энтузиастов. Именно поэтому он долго оставался ниже уровня радаров: нет массовости — нет устойчивых паттернов — нет приоритета для блокировки.
Но по-настоящему примечательным было другое: автор попытался заглянуть в будущее. Это неблагодарный труд — предсказывать, но многие прогнозы из той статьи сбылись. Автор указал на тенденцию, которая тогда ещё только намечалась: одного шифрования трафика перестаёт быть достаточно. Следующий рубеж — обфускация: трафик должен стать не просто зашифрованным, но неклассифицируемым, неотличимым ни от какого известного протокола. А за этим горизонтом автор предсказал появление протоколов с мимикрией: VPN, притворяющихся обычным веб-сервером. Стучишься — страничка с кошечками. Стучишься правильно — туннель. Спустя несколько лет мы увидели именно это.
Пионерами стали VMESS, а вслед за ним — VLESS. Общий принцип у них и у появившихся следом аналогов один: шифрование через TLS, минимальный объём заголовков, мимикрия под действующий HTTPS-хост, система «свой-чужой» на уровне рукопожатия. Фоллбек на настоящий веб-сервер — для всех, кто постучался не так. Никакого TLS поверх TLS и других тяжёлых схем, которые сами по себе становятся демаскирующим признаком.
Моё знакомство с VLESS началось в первые месяцы его существования — так совпало. Когда я поднимал свой первый Xray-сервер, протокол только вышел, и клиентов под него можно было пересчитать по пальцам одной руки. Никаких веб-панелей и прочей мишуры: конфиги писались вручную в терминале, прямо на сервере. Так оно и работало — несколько лет, без особого внимания с моей стороны, лишь изредка требуя перезагрузки.
Протоколы оказались настолько эффективны, что крупные коммерческие VPN-сервисы один за другим начали брать его на вооружение, а также создавать собственные решения, на тех же исходных принципах.
Точка, в которой мы находимся сейчас: взломать лучшие из современных протоколов по-прежнему не удалось. Но поиски — в активной фазе. И основное направление борьбы, избранное регулятором, — не взлом криптографии. Это выявление паттернов поведения трафика: характерных признаков, по которым можно вычислить узел и заблокировать его точечно. Иногда «точечно» означает целые подсети или отключение крупных хостеров. Но принцип именно такой: не ломать замок, а научиться узнавать нужную дверь.
Средства блокировок эволюционируют — и вместе с ними эволюционируют средства обхода. DPI умнеет, учится распознавать трафик по поведенческим паттернам, по энтропии, по тайминговым характеристикам. В ответ появляются новые транспорты, новые методы маскировки, новые способы мимикрии под легитимный трафик. Это не гонка, у которой есть финиш — это вечный бег жизни. Темп будет только расти. И тот, кто не сумеет адаптироваться — сойдёт с дистанции.
Если говорить о рынке в целом — я думаю, нас ждёт серьёзное сокращение игроков. Это не значит, что сервисы исчезнут как класс: спрос будет только расти, а значит, будет и предложение. Но стабильность крупных коммерческих сервисов, скорее всего, станет заметно хуже — и я бы не советовал заключать долгосрочные контракты ни с кем на этом рынке. Слишком много прецедентов, когда сервис исчезал за один день вместе с оплаченными подписками своих пользователей.
Из того, что активно обсуждается в сообществе: возможно появление чего-то вроде «государственного VPN» — для доступа к сервисам, которые де-факто не запрещены, но не могут нормально работать в условиях текущих ограничений. Более прагматичным мне кажется другой сценарий: серия сделок между крупными игроками и государством, в обмен на сотрудничество. Полуофициальные договорённости в серой зоне, назначение «уполномоченных операторов».
В любом случае, общий вектор здесь совпадает с тем, что мы уже видели в телекоме, банкинге и медиа: укрупнение, вытеснение мелких игроков и установление государственного контроля над несколькими крупными. Типовая история. Финал предсказуем.
Часть 3. Вызов времени #
Если вы читаете эту статью в поисках готового рецепта построения защищенной приватной и устойчивой к обнаружению сети — должен вас разочаровать. У меня его нет. Любые рецепты бессмыслены в руках человека, который не понимает принципов, — все это лишь костыли, которые работают сегодня и сломаются завтра, когда условия изменятся.
Всё, что у меня есть — это базовое понимание того, как устроены компьютерные сети. Всё, о чём я пишу в этих статьях, — не тайное знание, не инсайт от внутренних источников и не результат секретных исследований. Всё это можно прочитать в любом учебнике «Компьютерные сети» — прямо сейчас, во всех магазинах страны. Или в первоисточниках на гитхаб (или загляните ко мне на гитхаб - там тоже такого есть). Есть накопленный опыт конкретных реализаций, есть инструменты, есть сообщества людей, которые всё это любят, знают, практикуют. И только это позволяет адаптироваться к постоянно меняющимся правилам игры.
Серебряной пули нет, и её поиски — бессмысленны. Главный вызов, на мой взгляд, состоит не в том, чтобы найти работающее на сегодняшний день решение или правильный протокол.
Технические решения меняются постоянно. Протоколы будут появляться — один лучше другого — и исчезать. Протоколы с тяжёлой криптографией уходят в прошлое — просто потому что они видны. Чем надёжнее криптография — тем заметнее трафик. Тренд в построении приватных сетей идет не на максимальную криптографическую сложность, а на невидимость и маскировку.
Завернуть трафик в туннель — теперь недостаточно. Современные системы DPI смотрят на форму. Размер заголовков, ритм передачи, характер handshake — всё это складывается в цифровой отпечаток, по которому трафик опознаётся так же уверенно, как человек по походке.
Вызов времени — сделать соединение статистически невидимым. Не выделяющимся из фонового трафика ни по объёму, ни по ритму, ни по поведению. Если DPI научился распознавать характерный ритм VPN-трафика — нужно научиться ломать этот ритм. Если он умеет выделять аномалии в потоке — нужно свести отклонения до уровня статистического шума, неотличимого от фонового HTTPS.
Помочь в этом может соблюдение нескольких базовых принципов.
Никаких VPN-паттернов. Любые протоколы на транспортном или прикладном уровне, создающие характерные паттерны — как мастодонты, вроде OpenVPN, так и относительно свежие и экзотические протоколы, наподобие Hysteria 2, слишком выделяются на общем фоне.
Постоянство — это мишень. Даже идеально замаскированный трафик становится уязвимым, если он регулярно приходит с одного и того же адреса. Ответ — непрерывная ротация: автоматическая смена узлов, эндпоинтов и доменов.
Изоляция слоёв. Компрометация одного элемента не должна тянуть за собой всё остальное. Минимум четыре независимых слоя: сетевой, операционный, сервисный, коммерческий. Единый сервис, в котором сосредоточено всё, — это единая точка входа для атакующего.
Правильный размер. Оптимальный размер сети — баланс: достаточно большой, чтобы обеспечить полноценную ротацию; достаточно малый, чтобы оставаться ниже порога обнаружения. Размер — это тоже паттерн.
Это архитектурная философия базируется вокруг одной простой идеи: лучший способ спрятать — это положить на самое видное место.
Лучшее место для человека, чтобы спрятаться — это толпа. Быть как все. Выглядеть как все. Двигаться как все. Не оставлять ничего, за что можно было бы зацепиться.
Цифровая невидимость стоит на тех же принципах.
Часть 4. Последний удар #
Я понимаю, что это прозвучит максимально странно в тексте, посвящённом протоколам и архитектурным решениям. Но вот в чём дело: организационная сторона таких сетей важнее технической. Истинная, глубинная природа компьютерных сетей — социальная. Всегда.
Чтобы пакет добрался из точки А в точку Б через государственную границу — через барьер, через фильтр, через ограничение — по ту сторону должен быть кто-то, кто готов его принять. Узел. Человек. Связь. Сеть держится не на протоколах — она держится на доверии между людьми, которые решили её построить. Протокол — это язык. Но прежде чем говорить, нужно захотеть слушать друг друга.
Пока такие связи живы — вы без труда наладите технический канал. Это вопрос инструментов, а инструменты найдутся. Если связи исчезнут — вы окажетесь заперты внутри одного региона, одного общества, одной культуры. И тогда уже не поможет ни один протокол.
В 1980-е советские инженеры читали зарубежные технические журналы через систему межбиблиотечного обмена и через личные связи с коллегами из соцстран. Это была буквально социальная сеть поверх железного занавеса. Когда она работала — работало и знание. Когда она прерывалась — появлялось отставание.
Поэтому вот парадокс, который я хочу зафиксировать явно: построение технологического суверенитета через ограничение распространения информации — это самый верный путь к потере этого суверенитета. Изоляция не защищает. Она ведёт к отставанию.
Вся история моей активности на ниве строительства приватных сетей — это всегда личные истории, которые выросли из конкретных потребностей конкретных людей. Родственники, которые оказались по другую сторону границы. Друзья, которым заблокировали нужный сервис. Знакомые, которым нужен был надёжный канал связи. Дети, которые хотят смотреть любимых блогеров на Ютуб.
Сегодня я добавил ещё одного пользователя в нашу сеть. Это не плюс к счётчику. Это конкретный человек — пятнадцать лет знакомства, совместная работа в двух организациях, ежедневный круг общения. И теперь все члены этой небольшой группы находятся внутри сети. Я считаю это личной победой. Не потому что это даёт мне статистику — а потому что это важно лично мне.
В своих статьях я рассказываю про туннель, который работает. Потому что по ту сторону туннеля есть человек, который его поддерживает. Про то, что всё в этом мире держится на соплях. А также — на доверии, на личных связях, на симпатиях и многолетних контактах.
Эти течения всегда похожи на водопад. Сначала — тонкая струйка. Потом ручейки складываются в реки. А потом этот поток уже не может сдержать никакая плотина. История знает немало примеров того, как то, что начиналось в подвале или в переписке между десятком людей, в конечном счёте приводило к глобальным последствиям.
Но я не пытаюсь спасти мир. Я не пытаюсь приблизить победу мировой революции. Я делаю продукты, которые нужны здесь и сейчас. Для конкретных людей, для решения конкретной задачи, с пользой в конкретный момент времени. Смотреть своё любимое аниме. Общаться без помех через мессенджер, который по каким-то причинам перестал работать в России.
Я верю, что именно такие объединения и станут основой свободных сетей будущего. Государства, корпорации и централизованные платформы завалятся набок — а выживут лишь небольшие объединения из малых социальных групп.
Я буду верить до последнего удара сердца, что то, что я делаю, меняет мир к лучшему. Делает мир вокруг меня чуть-чуть ближе к миру, в котором свобода общения — не привилегия, а норма.