Сделал себе VPN, который:
— работает через VLESS Reality, неотличимый от обычного HTTPS
— пробивает белые списки мобильных операторов через relay на Yandex Cloud
— имеет готовый код для аварийного канала через WebRTC и Яндекс.Телемост (пока не понадобился) — автоматически переключается между 4 уровнями защиты
— пропускает российские сайты (Яндекс, Госуслуги, банки) напрямую, без VPN
Весь код, конфиги, скрипты деплоя — всё написал Claude Code. Я только описал проблему и дал ему почитать несколько статей с Хабра про блокировки. Ну и бил его кнутом, пока всё не заработает.
Расскажу, как это устроено и как повторить.
Зачем вообще заморачиваться
Если коротко: к апрелю 2026 года в России заблокировано 469+ VPN-сервисов. OpenVPN, WireGuard — мертвы, ТСПУ распознает их за миллисекунды. Коммерческие VPN отваливаются один за другим.
На мобильных операторах ситуация ещё хуже — МТС, Мегафон, Yota, Tele2 и Beeline используют белые списки. Это значит, что пропускается только трафик к одобренным IP-адресам, а всё остальное режется.
Стандартный ответ: «подними VLESS Reality на VPS за границей». Это работает. До первой блокировки IP. А дальше начинается квест с пересозданием серверов, сменой портов, подбором SNI. Каждый раз заново.
Мне нужно было решение, которое не ломается от одной блокировки. Система с запасными выходами.
Что я сделал (и что сделал Claude Code)
Я не писал код. Вообще. Вот что я реально делал:
Описал Claude Code проблему: «В РФ внедряют белые списки и блокируют все сервисы, которые не входят в эти списки, зарубежные сервисы не работают без VPN. Хочу сделать свой VPN. Изучи статьи и текст ниже, на основе этой и другой информации по теме в сети, сформируй план, как мне сделать свой VPN»
Скормил ему несколько статей с Хабра про текущее состояние блокировок (в частности, zarazaexe про ТСПУ и белые списки)
Арендовал VPS в Нидерландах (2 евро в месяц)
Купил домен за 3-6 евро в год
Подключался по SSH и выполнял команды, которые генерировал Claude Code
Установил Hiddify на Windows и Shadowrocket на iPhone, импортировал VLESS-ссылку — и подключился к своему VPN
Claude Code сделал всё остальное: написал конфиги для Xray-core, скрипты автоматического деплоя, настройку Cloudflare, relay через Yandex Cloud, скрипт для WebRTC-туннеля через Яндекс.Телемост, split routing для российских сайтов.
Архитектура: 4 уровня защиты
Идея простая — если один метод перестал работать, автоматически включается следующий. Как запасные выходы из здания.
Layer 0: ПРЯМОЕ ПОДКЛЮЧЕНИЕ (основной) Устройство --VLESS Reality--> VPS в Нидерландах --> Интернет Для DPI выглядит как HTTPS к www.microsoft.com Layer 1: CDN-ФРОНТИНГ Устройство --HTTPS/WSS--> Cloudflare CDN --> VPS --> Интернет Если IP VPS заблокирован (на мобильных сетях с белыми списками не работает — CF не в белых списках) Layer 2: RELAY ЧЕРЕЗ YANDEX CLOUD Устройство --VLESS--> VM в Yandex Cloud (РФ) --xHTTP--> VPS --> Интернет IP Yandex Cloud в белых списках — обходит белые списки мобильных операторов Layer 3: АВАРИЙНЫЙ — WebRTC (код готов, пока не подключал) Устройство --WebRTC--> Яндекс.Телемост --> VPS --> Интернет Яндекс ВСЕГДА в белом списке. Последний рубеж.
Плюс split routing: российские сайты (Яндекс, VK, Госуслуги, банки) идут напрямую, без VPN. Со включённым VPN я открываю и YouTube, и Яндекс — каждый через нужный маршрут.
Layer 0: VLESS Reality — основа всего
Layer 0: VLESS Reality — основа всего
VLESS Reality — протокол, который делает VPN-трафик неотличимым от обычного HTTPS к крупному сайту. DPI видит: «пользователь подключается к какому-то сайту по HTTPS». На самом деле трафик идёт через ваш сервер.
Как это работает: клиент устанавливает TLS-соединение с вашим VPS, но при проверке подставляется реальный сертификат сайта-донора. Если кто-то попробует подключиться к вашему серверу без правильного ключа — Xray молча перенаправит его на настоящий сайт-донор, и проверяющий увидит обычный легитимный сайт.
Что нужно:
VPS за рубежом (Швеция или Нидерланды, пинг 50–70 мс из РФ). Взял на vdsina — от 2$ в месяц. Не используйте Hetzner, OVH, DigitalOcean, AWS — их подсети массово заблокированы.
Панель 3X-UI для управления через браузер — ставится одной командой из репозитория проекта.
Правильный выбор сайта-донора (SNI) — это 80% успеха маскировки. Сайт-донор должен быть вне РФ, не иметь CDN-присутствия в России (иначе с точки зрения ТСПУ аномалия — обычный пользователь ходит на локальный IP, а вы лезете за границу), поддерживать TLS 1.3 + HTTP/2 и отдавать контент с главной страницы без редиректов.
Правильный путь — найти донора через RealiTLScanner прямо с вашего VPS. Инструмент находит сайты в той же подсети датацентра, до которых маршрут из РФ выглядит естественно — как будто ваш сервер просто стоит по соседству.
Порт — только 443. Настоящий HTTPS живёт на 443, TLS-handshake на других портах — аномалия, которую DPI сразу видит. Если нужен запасной канал — делайте его на другом протоколе (Layer 1/2/3 ниже).
Layer 1: Cloudflare CDN — если заблокировали IP
Если РКН заблокировал IP вашего VPS целиком, прямое подключение перестаёт работать. Здесь помогает Cloudflare CDN: трафик идёт через серверы Cloudflare, а уже они пересылают его на ваш VPS.
Для этого нужен домен (от 1 евро в год на Namecheap), подключённый к Cloudflare. В 3X-UI добавляется ещё один inbound с WebSocket транспортом.
Важное ограничение: с середины 2025 года Cloudflare активно блокируется ТСПУ. На практике домашние провайдеры (Wi-Fi) блокируют мягче — по сигнатурам и DPI, и IP Cloudflare пока пропускают. А вот мобильные операторы работают в режиме белых списков — пропускают трафик только к одобренным IP-адресам, и Cloudflare в эти списки не входит. Поэтому Layer 1 работает только на домашнем Wi-Fi.
Layer 2: Relay через Yandex Cloud — пробиваем белые списки
Это ключевой уровень для мобильных операторов в 2026 году.
Логика: IP-адреса Yandex Cloud находятся в белых списках ТСПУ. Они не могут их заблокировать — иначе перестанут работать сервисы Яндекса. Мы используем это: поднимаем дешёвую preemptible VM в Yandex Cloud (биллинг посекундный — за первые дни у меня списалось 1.5 рубля, по прогнозу выходит ~400-500 ₽/мес при постоянной работе), которая работает как промежуточное звено между вашим устройством и VPS за границей.
Цепочка: ваше устройство подключается к VM в Yandex Cloud по VLESS (с SNI ya.ru — для ТСПУ это выглядит как обращение к Яндексу). VM пересылает трафик на ваш VPS в Швеции через xHTTP.
Claude Code написал скрипт deploy-relay-yc.sh, который разворачивает всё за 10 минут.
Layer 3: WebRTC через Яндекс.Телемост — на крайний случай
Самый экзотический уровень. Claude Code уже написал код для этого, но подключать пока не пришлось — Layer 0 и Layer 2 закрывают все сценарии. Если заблокируют и этот путь — буду разворачивать WebRTC.
Идея: гнать трафик через видеозвонки в Яндекс.Телемосте.
Телемост использует WebRTC с SFU-архитектурой. Трафик проходит через серверы Яндекса, которые всегда в белом списке. Данные передаются через DataChannel — SCTP over DTLS.
Ограничения: максимальный размер сообщения — 8 КБ (решается чанкингом), скорость до 44 Мбит/с, работает только на десктопе. Это аварийный вариант, не основной.
Проект OlcRTC (https://github.com/zarazaex69/olcRTC) реализует эту идею.
Split routing: VPN включён, но Яндекс работает
Одна из самых полезных вещей в этой системке — раздельная маршрутизация. Российские сайты идут напрямую, зарубежные — через VPN.
На практике это значит: включаете VPN, открываете YouTube — работает. Открываете Яндекс — тоже работает, и видит ваш российский IP. Госуслуги, банки, VK — всё без проблем.
Реализуется через правила маршрутизации в клиенте (Hiddify, Shadowrocket, v2rayNG). Список российских подсетей добавляется в исключения.
Бюджет
— VPS в Нидерландах: 2.5 евро в месяц (~265 рублей)
— Домен: 3-6 $ в год (~230 - 470 рублей)
— Cloudflare: бесплатно
— Yandex Cloud relay (если нужен): ~400-500 ₽/мес (preemptible VM, биллинг посекундный)
— Shadowrocket для iOS: $2.99 разово
— Клиенты для Windows/Android: бесплатно, на IOS тоже есть бесплатные типа v2Ray, но Shadowrocket работает лучше
Итого минимум: 300 руб. в месяц. С relay + 500 ₽.
Что в итоге
У меня есть VPN, который работает. Не «работает, пока не заблокируют», а работает с системой резервных каналов. Заблокировали IP — переключается на Cloudflare. Белые списки на мобильном — идёт через Yandex Cloud. Вообще всё отрубили — есть готовый код для WebRTC через Телемост, осталось только развернуть.
При этом российские сервисы работают нормально. Яндекс видит российский IP, банки не паникуют, Госуслуги открываются.
UPD: Подготовил репозиторий и короткое видео по установке впн - https://youtu.be/WwX2HC3xry4
UPD2:
По мотивам статьи про IP-leak на desktop добавил серверный блок на 17 «узнай-свой-IP» эндпоинтов (
ipify.org,ifconfig.me,icanhazip.com,2ip.*,redirector.googlevideo.comи др.) — раньше любая вкладка или десктоп-приложение могли черезfetch()слить IP VPS в РКН.Сделал SNI rotation: теперь по 4
serverNamesна каждый Reality inbound вместо одного, паттерн «IP ↔ один SNI» для DPI ломается.Убрал Yandex Cloud relay — тезис «IP YC в белых списках ТСПУ» оказался мифом: AS
Yandex.CloudLLCи ASYANDEX LLC— разные автономные системы, YC-VM спокойно режется при белых списках.Мигрировал с Aeza на VDSina (Амстердам) — Aeza по требованию РКН удаляла VPS. Плюс готовый опциональный
deploy-sni-split.shсо своим доменом + nginx/Let's Encrypt, если базовый Reality начнут детектить.Код и новые разделы документации — github.com/Sergei-thinker/vpn-setup.
В эпоху AI, создать свой ВПН и бороться с блокировками может любой с подпиской на клауд. Более того я записал на видео как я начал создавать этот ВПН, скоро опубликую на своём тг канале В эпоху AI. Подписывайся.
