Как я строил 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, и логика, которая выглядела как блок-схема запуска ракеты.
Ключевая идея — все промежуточные серверы стояли на российских IP-адресах. VK Cloud, Яндекс, региональные хостинги. РКН к ним лоялен — это же свои, российские. А уже с российского сервера трафик шёл на зарубежную ноду, и для ТСПУ это выглядело как обычный межсерверный обмен.
Вот это и есть двуххоповая цепочка. Или, как я её называю, «российский бутерброд с нидерландской начинкой».
Принял решение: делаю такую же.
☁️ Акт 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.net — IP из Нидерландов. Заработало! 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-серверы.
Пакеты шифруются DTLS 1.2, отправляются на TURN по протоколу STUN ChannelData, оттуда по UDP попадают на VPS, расшифровываются и передаются в WireGuard. Логин/пароль генерируются из ссылки на ВК-звонок.
Звучит как хак из фильма про хакеров. Но работает.
olcRTC: туннель через Телемост
Ещё более экзотический подход — openlibrecommunity/olcrtc. Идея: использовать WebRTC data channels через Яндекс.Телемост для проброса трафика. Телемост использует SFU-архитектуру, трафик идёт через серверы Яндекса, которые всегда в белом списке.
Ограничения есть: размер сообщения 8 КБ, скорость до 44 Мбит/с. Но как аварийный канал — идеально.
🏗 Акт VIII. Финальная архитектура
После двух месяцев мытарств я пришёл к архитектуре из нескольких уровней. Не потому что перфекционист, а потому что каждый отдельный метод рано или поздно ломается.
Плюс 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-спуфинг.
📎 Полезные ссылки
- AmneziaVPN — amnezia.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-сервисы
Если эта статья помогла вам настроить интернет — значит она уже окупилась.
Стек / Инструменты