Все проекты
Сеть202612 мин

Как я строил VPN через две точки и чуть не сошёл с ума

Как я строил VPN через две точки и чуть не сошёл с ума

TL;DR: Прямой VPN на Европу не работает. Белосписочный IP блокируют через пару дней. VK подчищает пулы. Единственный путь — многослойная архитектура с автоматическим фолбэком. Я строил её два месяца и вот что из этого вышло.


Знаете, есть такая народная мудрость: если ты живёшь в России и хочешь просто открыть YouTube — тебе нужно стать сетевым инженером.

Не ирония. Не преувеличение. Буквально.

Ещё пару лет назад достаточно было скачать любой VPN из App Store, нажать одну кнопку и жить спокойно. Потом VPN из App Store удалили. Потом протоколы начали банить. Потом начали банить протоколы, которые маскируются под не-протоколы. Потом начали замораживать соединения, которые «выглядят подозрительно».

А подозрительно, по мнению Роскомнадзора, выглядит примерно всё, что не ведёт на Госуслуги.

В общем, привет. Меня зовут Стас, я работаю из дома, и последние два месяца вместо того, чтобы заниматься полезными делами, строил себе VPN-инфраструктуру уровня небольшой корпорации. Потому что по-другому уже никак.


🤡 Акт I. Простые времена

Долгое время я жил на простом сетапе: VPS в Нидерландах, на нём AmneziaVPN с протоколом VLESS+Reality, клиент на маке и телефоне. Нажал кнопку — работает. YouTube крутится, Telegram летает, Instagram показывает чужие завтраки.

VLESS+Reality — это, если кто не в курсе, довольно хитрая штука. Протокол маскирует VPN-трафик под обычное TLS-соединение к реальному сайту. Ты подключаешься к своему серверу, а для внешнего наблюдателя это выглядит как визит на ozon.ru. Даже если РКН постучится на твой сервер без пароля — получит реальную страницу Озона. Магия.

И какое-то время это реально работало.

А потом перестало.


💀 Акт II. ТСПУ научились думать

В начале 2026 года DPI-оборудование Роскомнадзора (ТСПУ — «Технические средства противодействия угрозам») получило апгрейд с ML-алгоритмами. К марту 2026 года число заблокированных VPN-сервисов перевалило за 469.

Раньше система просто смотрела на TLS-рукопожатие и проверяла SNI. Теперь она анализирует поведение всей сессии. VLESS-туннель генерирует характерный паттерн трафика, который не совпадает с тем, как ведёт себя настоящий ozon.ru.

Плюс JARM-сканеры — штука, которая отправляет 10 специально сформированных TLS-запросов на твой сервер и получает «отпечаток». Сервер на Go (а XRay написан на Go) отвечает иначе, чем Nginx. Привет, деанон.

Симптомы: подключаешься, начинает качать... и через 15–20 килобайт всё замирает. Соединение не рвётся — оно просто висит до таймаута. ТСПУ замораживает TCP-сессию, как будто ничего не произошло.

Каждый раз когда я видел крутящийся спиннер в Safari, я мысленно представлял усатого мужика за стойкой ТСПУ, который удовлетворённо кивает: «Ну вот, ещё одного зажали».

Прямой VPN на Европу — всё, приехали.


🔍 Акт III. Чужой конфиг как озарение

Как любой нормальный человек в безвыходной ситуации, я пошёл в интернет спрашивать «а чо делать-то?»

И нашёл конфиг. Чей-то XRay-конфиг на 200 с лишним строк. Четыре сервера на VK Cloud, балансировщики с автоматическим фолбэком, домены-доноры eh.vk.ru и ads.x5.ru, и логика, которая выглядела как блок-схема запуска ракеты.

попробовать DIRECT
↓ не работает
WL-01 — 4 сервера VK Cloud
↓ не работают
WL-02 — RegionTelecom
↓ не работает
последний шанс: DIRECT
грустная музыка

Ключевая идея — все промежуточные серверы стояли на российских IP-адресах. VK Cloud, Яндекс, региональные хостинги. РКН к ним лоялен — это же свои, российские. А уже с российского сервера трафик шёл на зарубежную ноду, и для ТСПУ это выглядело как обычный межсерверный обмен.

Вот это и есть двуххоповая цепочка. Или, как я её называю, «российский бутерброд с нидерландской начинкой».

📱 Мой Mac / iPhone
VLESS + Reality (SNI: eh.vk.ru)
☁️ VK Cloud VPS — Москва, российский IP
VLESS + Reality
🇳🇱 VPS в Нидерландах — выход в интернет
🌐 YouTube, Telegram, вот это вот всё

Принял решение: делаю такую же.


☁️ Акт IV. «Занято 0 из 0, не хватает 1»

Пошёл на VK Cloud создавать виртуалку. Ubuntu 22.04, минималка. Дешевле чашки кофе в месяц.

Создаю SSH-ключ. .pem файл скачивается один раз — если потеряешь, пересоздавай сервер. Добро пожаловать в мир DevOps, где бэкапы — это для слабых.

Выбираю firewall, включаю тоггл «Назначить внешний IP»...

«Недостаточно свободного количества портов во внешней сети Sprut. Занято 0 из 0, не хватает 1».

Ноль из нуля. Мой лимит на внешние IP — ноль. VK Cloud даже не притворяется.

Окей. Иду в настройки, нахожу квоты, отправляю заявку. Мне нужен 1 (один) Floating IP. Пожалуйста.

Сел ждать. Пока ждал — от безделья начал изучать вообще всё: XHTTP через Cloudflare, ShadowTLS v3, AmneziaWG, Cloudflare WARP, белые списки мобильных операторов. К моменту когда квоту одобрили, я мог бы защитить диссертацию по обходу DPI.


🎰 Акт V. Белый IP — квест внутри квеста

Квоту одобрили! Машина создалась! IP получен!

А дальше квест номер два: IP должен быть в белом списке мобильных операторов.

С января 2026 года РКН потребовал от облачных провайдеров разделить пулы адресов. Одни — для ресурсов из белого списка (Госуслуги, банки), другие — для всех остальных.

Проверка простая: отключаешь WiFi на телефоне, заходишь на https://IP_СЕРВЕРА через мобильный интернет. Если хоть что-то загрузилось — IP в белом списке. Если таймаут — не повезло.

VK Cloud упорно выдавал IP из подсетей 217.x.x.x, которые не проходили. Час пересоздавал машины. Нашёл подходящий репозиторий на GitHub — hxehex/russia-mobile-internet-whitelist — с краудсорсинговыми списками белых IP и SNI-доменов. Стал сверять.

Наконец словил рабочий адрес, настроил цепочку, проверил на ipleak.netIP из Нидерландов. Заработало! YouTube крутится, Telegram летает, всё как в старые добрые.

Счастье длилось два дня.


💥 Акт VI. IP заблокировали. VK подчищает пулы.

На третий день всё перестало работать. Проверяю с мобильного — таймаут. IP заблокирован.

Пересоздал машину. Новый IP. Работает... 18 часов. Опять заблокирован.

Выяснилось то, чего я боялся: VK активно подчищает ранее выданные белые IP. РКН ведёт постоянный мониторинг, и как только видит подозрительный трафик с IP из белого пула — адрес летит в чёрный список, а провайдеру приходит требование убрать его из белого пула.

Старая схема «арендовать российский VPS и надеяться что его IP останется белым» — мертва. Это не разовая проблема, это системная. Каждый IP живёт от нескольких часов до нескольких дней, потом его вычищают.

Я чувствовал себя как тот парень из фильма «День сурка», только вместо того чтобы просыпаться в одном и том же дне — я каждое утро пересоздавал виртуальную машину на VK Cloud.


🧠 Акт VII. Поиск решений: кроличья нора

Окей, статические IP не работают. Нужно что-то другое. Я начал копать глубже.

SNI-ротация

Первое, что пришло в голову — менять SNI-домены регулярно. Если ТСПУ блокирует по комбинации IP + SNI, то при смене SNI-донора трафик может снова начать проходить.

Я начал собирать свой список рабочих SNI-доменов: eh.vk.ru, ads.x5.ru, img.yandex.ru, max.ru, api-maps.yandex.ru, m.vk.com. Не google.com — это давно засвечено и палится моментально.

vk-turn-proxy: VPN через ВК-звонки

А потом я нашёл cacggghp/vk-turn-proxy — и у меня отвисла челюсть.

Идея безумная в своей простоте: ВК-звонки используют TURN-серверы для передачи видео и аудио. Эти серверы всегда в белом списке — иначе звонки через ВК перестанут работать, а это миллионы пользователей. Так вот: можно прокинуть WireGuard-трафик через эти TURN-серверы.

📱 Телефон
🔒 TURN-сервер VK (белый список!)
🖥 VPS
🌐 Интернет

Пакеты шифруются DTLS 1.2, отправляются на TURN по протоколу STUN ChannelData, оттуда по UDP попадают на VPS, расшифровываются и передаются в WireGuard. Логин/пароль генерируются из ссылки на ВК-звонок.

Звучит как хак из фильма про хакеров. Но работает.

olcRTC: туннель через Телемост

Ещё более экзотический подход — openlibrecommunity/olcrtc. Идея: использовать WebRTC data channels через Яндекс.Телемост для проброса трафика. Телемост использует SFU-архитектуру, трафик идёт через серверы Яндекса, которые всегда в белом списке.

Ограничения есть: размер сообщения 8 КБ, скорость до 44 Мбит/с. Но как аварийный канал — идеально.


🏗 Акт VIII. Финальная архитектура

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

Layer 0 Прямое подключение основной
📱 Устройство ──VLESS Reality──▶ 🇳🇱 VPS Netherlands ──▶ 🌐 Интернет
Для DPI выглядит как HTTPS к www.ozon.ru
Layer 1 CDN-фронтинг домашний WiFi
📱 Устройство ──HTTPS/WSS──▶ ☁️ Cloudflare ──▶ 🖥 VPS ──▶ 🌐 Интернет
Если IP VPS заблокирован. На мобильных не работает.
Layer 2 Relay через Yandex Cloud мобильный интернет
📱 Устройство ──VLESS──▶ 🇷🇺 Yandex Cloud ──xHTTP──▶ 🖥 VPS ──▶ 🌐 Интернет
IP Яндекса в белых списках — пробивает мобильные ограничения.
Layer 3 Аварийный — WebRTC / TURN последний рубеж
📱 Устройство ──WebRTC──▶ 🔒 Телемост / VK ──▶ 🖥 VPS ──▶ 🌐 Интернет
Яндекс и ВК всегда в белом списке. Последний рубеж.

Плюс split routing: российские сайты идут напрямую, зарубежные — через VPN. Включаю VPN, открываю YouTube — работает. Открываю Яндекс — тоже работает, видит мой российский IP.


🧮 Бюджет

КомпонентСтоимость
VPS в Нидерландах~€4/мес (~420₽)
VPS на VK Cloud / Yandex Cloud~500₽/мес
Домен (для Cloudflare CDN)~100₽/мес
AmneziaVPNбесплатно
Нервные клеткибесценно

Итого: примерно 1000₽ в месяц за работающий интернет. В стране, которая тратит 2,3 миллиарда рублей на развитие нейросетевой архитектуры ТСПУ, чтобы мне его сломать.


🤯 Что я понял за эти два месяца

Первое. Статический подход мёртв. Любой одиночный VPN-сервер — это вопрос времени. Нужна система с автоматическим переключением между уровнями.

Второе. Самые хитрые решения — паразитические. vk-turn-proxy гонит трафик через TURN-серверы ВК-звонков. olcRTC туннелирует через Телемост. Блокировать это невозможно без поломки самих сервисов ВК и Яндекса.

Третье. Гонка вооружений не заканчивается. Пока я настраивал цепочку, ТСПУ получили ML-модели, РКН заблокировал 469 VPN-сервисов, а Минцифры предложило брать плату за международный трафик свыше 15 ГБ.

Четвёртое. AmneziaVPN заслуживает донатов. Опенсорсный инструмент, который реально работает против одной из самых агрессивных систем цензуры в мире. Бесплатно.

Пятое. Самое обидное — это не сложность настройки. Самое обидное, что всё это вообще нужно. Что в 2026 году, чтобы посмотреть как человек готовит пасту карбонару, нужны два сервера в разных странах, шифрование военного уровня и SNI-спуфинг.


📎 Полезные ссылки

  • AmneziaVPNamnezia.org — клиент для Mac, iPhone, Android
  • 3X-UI — панель управления XRay через браузер
  • hxehex/russia-mobile-internet-whitelist — краудсорсинговый список белых IP и доменов
  • igareck/vpn-configs-for-russia — готовые конфиги, тестируемые каждые 2 часа
  • cacggghp/vk-turn-proxy — VPN через TURN-серверы ВК-звонков
  • openlibrecommunity/olcrtc — туннелирование через whitelisted-сервисы

Если эта статья помогла вам настроить интернет — значит она уже окупилась.

Стек / Инструменты

XRay-coreVLESSRealityVK CloudYandex CloudAmneziaVPNWebRTCCloudflare