Блог Clearway

Экономика whitelisted-входа: сколько стоит CDN для VPN-сервиса

Коротко

Цена гигабайта через whitelisted CDN-вход складывается из двух частей: исходящий трафик по прайсу провайдера и — у части провайдеров — отдельная плата за количество запросов, которых XHTTP генерирует очень много. Whitelist привязан к /24-подсетям хостера: у Selectel они часто в белых списках, у cloud.ru/SberCloud — часто нет, и статус нужно проверять актуально. Рабочая схема — спрятать вход за whitelisted CDN-edge и гнать XHTTP (packet-up), обязательно передавая uplink в теле запроса, а не в кастомном заголовке. Цена whitelist-CDN для оператора всегда выше сырой себестоимости, потому что в неё зашита операционная работа по подсетям, транспорту и защите origin.

Почему прямой вход к ноде отваливается под ограничениями оператора

Когда мобильный оператор в РФ включает жёсткий режим — при региональном шатдауне или массовой блокировке — мобильный интернет часто переводится в режим «белого списка». В этом состоянии абонент дотягивается только до whitelisted-ресурсов: части CDN-сетей, госсервисов, отдельных социально значимых доменов. Всё остальное для радиосети как будто не существует.

Для VPN-оператора это означает конкретную поломку: нода, к которой клиент идёт напрямую по IP дата-центра, просто перестаёт отвечать. Транспорты, которые в обычных условиях хорошо маскируют трафик — Reality, Hysteria2 — под троттлингом и белым списком обычно не проходят: edge оператора не пропускает соединение к IP, которого нет в списке. Дело не в сигнатуре протокола, а в том, что пакет до вашего сервера физически не доходит.

Отсюда вывод, важный для проектирования сервиса: устойчивость под ограничениями оператора — это не вопрос «более скрытного протокола», а вопрос того, на какой IP и домен клиент делает первое обращение. Если этот адрес в белом списке — трафик идёт; если нет — не спасёт ни один обфускатор.

Как устроен whitelisted-вход через CDN

Идея простая: спрятать вход VPN за whitelisted CDN-edge. Клиент обращается не к вашей ноде напрямую, а к поддомену CDN (например, на инфраструктуре Yandex CDN). Для оператора это выглядит как обращение к «белому» CDN-ресурсу — такой трафик проходит. CDN-edge, в свою очередь, проксирует соединение на ваш origin — ту самую ноду.

Рабочий транспорт для этой схемы — XHTTP в режиме packet-up. XHTTP укладывается в обычный HTTP(S), который CDN умеет проксировать штатно, и переживает промежуточный edge. Reality и Hysteria2 в этой цепочке не живут: CDN-edge не рассчитан на их рукопожатие и не пробрасывает его до origin.

Схема трафика получается такой:

клиент → whitelisted CDN-edge (напр. *.whitechannel-x1-cdn.ru) → origin-нода (XHTTP-инбаунд)

Ключевой момент — оператор видит только левое плечо: обращение к домену CDN, входящему в белый список. Вся «неудобная» часть маршрута спрятана за edge. Именно поэтому whitelisted-вход через CDN работает там, где прямой маршрут к ноде обрезан.

Whitelist живёт на уровне /24: почему хостер решает всё

Белые списки операторов привязаны не к доменам целиком и не к отдельным IP, а к подсетям — как правило, к блокам /24. Практический вывод: whitelisted или нет ваш вход, определяет не «CDN вообще», а конкретная подсеть, из которой отвечает edge или origin.

У одних хостеров подсети регулярно оказываются в белых списках, у других — нет. По опыту Selectel часто оказывается whitelisted, а cloud.ru / SberCloud — часто нет. Но это не гарантия и не таблица на все времена: статус подсети меняется, и проверять нужно каждую /24 отдельно и актуально на момент запуска.

ХостерТипичный статус whitelistЧто делать
Selectelчасто whitelistedпроверить конкретную /24 перед запуском
cloud.ru / SberCloudчасто НЕ whitelistedне полагаться, тестировать вживую
Прочие ДЦпо-разномупроверять каждую /24, перепроверять периодически

Отсюда вытекает скрытая статья затрат, которую операторы часто недооценивают: whitelist — это не «настроил и забыл», а процесс. Нужно держать пул подходящих подсетей, мониторить их статус и уметь быстро переезжать, когда конкретная /24 выпадает из белого списка. Эта операционная нагрузка — часть реальной стоимости CDN для VPN, даже если в прайсе она не выделена отдельной строкой.

Себестоимость трафика: из чего складывается цена гигабайта

Теперь к главному вопросу — сколько стоит прогнать гигабайт через whitelisted-вход. Себестоимость трафика VPN складывается минимум из двух компонент, и вторую регулярно забывают.

Сырой исходящий трафик (egress) оплачивается по прайсу провайдера — это та цифра, которую видят первой и на которой строят наивную экономику.

Но CDN тарифицирует не только гигабайты, но и запросы. А XHTTP по своей природе плодит много мелких HTTP-запросов — особенно на аплинке. На масштабе плата за запросы становится самостоятельной статьёй расхода, сопоставимой с трафиком, — и тем более весомой, чем интерактивнее трафик абонентов.

КомпонентаПорядок величиныКомментарий
Сырой egressпо прайсу провайдераоплата отданных гигабайтов
Плата за запросызависит от профиля трафикаXHTTP генерирует много мелких запросов
Итог на масштабесчитается из своего биллингагигабайты и операции за один период

Главный рычаг снижения себестоимости — размер запросов. Чем крупнее POST-порции, которые клиент отправляет в теле запроса, тем меньше суммарное число запросов при том же объёме данных, и тем ниже вклад «поштучной» тарификации. Иными словами, правильная настройка транспорта — это не только про то, «поднимется ли туннель», но и напрямую про то, сколько будет стоить трафик. Об этом — следующая секция: тот же самый параметр отвечает и за работоспособность, и за цену.

XHTTP через CDN: uplink обязан идти в теле запроса

Это самый неочевидный и самый ломающий пункт. При проксировании через CDN-edge аплинк-данные XHTTP должны передаваться в теле запроса (uplinkDataPlacement: "body"), а не в кастомном HTTP-заголовке.

Причина инфраструктурная: CDN-edge не обязан доносить произвольные кастомные заголовки до origin. Если положить полезную нагрузку в заголовок вроде X-Payload, edge его по дороге отбрасывает или переписывает, origin не получает данные — и туннель рвётся с характерным unexpected EOF. Классический симптом «через CDN не работает, а напрямую работает» — это почти всегда payload в заголовке.

Практические правила для схемы через CDN:

  • полезную нагрузку аплинка — в тело запроса (body), не в заголовок;
  • служебные session / seq — в cookie (их edge пробрасывает надёжнее заголовков);
  • padding — в query-параметрах.

Тот же выбор «данные в body» помогает и экономике из предыдущей секции: крупные посты в теле = меньше запросов = ниже вклад платы за запросы в себестоимость. Один правильный параметр закрывает сразу две задачи — работоспособность туннеля и стоимость трафика.

Настройка на стороне ноды и панели

Схема совместима с распространёнными панелями: Remnawave, 3x-ui, Marzban, Hiddify. Логика везде одинаковая.

На ноде поднимается XHTTP-инбаунд (например, на порту 25454) — это origin, на который CDN проксирует трафик. В клиентском конфиге в качестве Address / SNI / Host указывается поддомен CDN, а не IP ноды.

Критично: параметры path и extra на клиенте и на ноде должны совпадать точь-в-точь. Любое расхождение — лишний слэш, другой регистр, отличающийся extra-блок — и туннель не поднимется, хотя оба конца выглядят «правильно настроенными». Это первое, что стоит сверять при отладке.

Отдельно — безопасность origin. Раз клиент ходит через CDN, прямые обращения к ноде мимо CDN не нужны и опасны (деанон реального IP, сканеры, обход учёта). Два механизма:

  • файрвол на входе origin открыт только для IP gateway/edge — всё остальное отбрасывается;
  • секрет-заголовок X-Cdn-Auth: origin принимает запрос, только если edge проставил валидный секрет; прямое обращение без заголовка отсекается.

Так вы одновременно скрываете реальный IP ноды и защищаете её от паразитной нагрузки и сканеров.

Учёт трафика: множитель потребления и лимиты

CDN-трафик обходится оператору дороже прямого, поэтому важно, как он биллится внутри панели. В Remnawave есть два подходящих механизма: множитель потребления ноды и per-user лимиты.

Множитель определяет, с каким коэффициентом трафик через конкретную ноду списывается против лимита пользователя. Множитель 0 на ноде означает, что трафик через неё не считается против лимита юзера — при этом нода полностью работает. Это удобно, когда whitelisted-вход используется как аварийный/fallback-канал: вы не хотите, чтобы вынужденный переход на дорогой CDN-маршрут сжигал квоту клиента.

Обратная логика тоже возможна: если CDN-канал дорогой и вы хотите ограничить его потребление, множитель выставляется больше единицы, и гигабайт через CDN «весит» больше в квоте. Это чисто экономическое решение — оно не влияет на работоспособность туннеля, только на скорость расхода лимита. Настройка учёта — часть управления себестоимостью трафика VPN, а не техническая формальность.

Строить свою дистрибуцию или брать whitelisted-вход как сервис

Экономика выбора сводится к тому, что дешёвый сырой трафик — не вся стоимость. Своя CDN-дистрибуция даёт минимальную цену за гигабайт, но добавляет к себестоимости то, что не видно в egress-прайсе:

  • поиск и удержание whitelisted /24-подсетей;
  • постоянный мониторинг их статуса и быстрый переезд при выпадении из белого списка;
  • корректную настройку XHTTP-через-CDN (body, cookie, query), иначе unexpected EOF и поток тикетов;
  • защиту origin и учёт трафика.

Для крупного оператора с инженерной командой своя дистрибуция при объёмах окупается — прямой прайс CDN трудно перебить. Для оператора, которому нужен работающий whitelisted-вход без содержания отдельной инфраструктурной функции, разумнее покупать вход как сервис.

Здесь работает Clearway (clear-way.pro): это whitelist-CDN как сервис для VPN-операторов — «белый» вход перед вашими нодами, без продажи серверов. Оператор получает whitelisted CDN-edge (домены вида *.whitechannel-x1-cdn.ru), который проксирует на его origin, и снимает с себя рутину по подсетям и настройке транспорта. Модель B2B: инфраструктура остаётся вашей, Clearway закрывает именно слой whitelisted-входа. Итоговая цена whitelist-CDN для оператора всегда выше сырой себестоимости — в неё зашита та самая операционная работа, которую иначе пришлось бы вести самому.

Чего whitelist-CDN не решает: троттлинг ≠ стриминг

Важно не смешивать две разные задачи. Whitelisted-вход решает проблему доступности: провести трафик через белый список оператора, когда прямой маршрут к ноде обрезан. Он не решает проблему репутации IP.

Сервисы вроде Кинопоиска банят IP дата-центров по репутации: с адреса ЦОДа российский контент часто не отдаётся — независимо от того, whitelisted этот адрес у мобильного оператора или нет. Для такого контента нужен резидентный (residential) IP — это отдельная инженерная задача, и whitelist-CDN её не закрывает.

Поэтому в проектировании сервиса держите две оси раздельно: «пробить троттлинг/шатдаун» — это whitelisted-вход через CDN; «разблокировать стриминг с DC-IP» — это резидентные адреса. Попытка решить вторую задачу первым инструментом приводит к неверным ожиданиям и лишним тикетам от пользователей.

Частые вопросы

Сколько реально стоит гигабайт трафика через whitelist-CDN?

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

Почему Reality или Hysteria2 не проходят под троттлингом?

В режиме белого списка оператор пропускает соединения только к whitelisted-подсетям, а к IP вашей ноды пакет физически не доходит. Reality и Hysteria2 при этом ещё и не переживают промежуточный CDN-edge: он не рассчитан на их рукопожатие и не пробрасывает его до origin. Рабочий вариант под ограничениями — XHTTP (packet-up) через whitelisted CDN.

Как понять, whitelisted ли подсеть моего хостера?

Whitelist привязан к /24-подсетям, поэтому проверять нужно конкретную /24, а не хостера целиком. По опыту у Selectel подсети часто оказываются в белых списках, у cloud.ru/SberCloud — часто нет, но гарантий нет и статус меняется. Единственный надёжный способ — тестировать актуально перед запуском и периодически перепроверять.

Почему туннель через CDN рвётся с ошибкой unexpected EOF?

Почти всегда причина в том, что uplink-данные положены в кастомный HTTP-заголовок (например, X-Payload), а CDN-edge не доносит такие заголовки до origin. Нужно передавать полезную нагрузку в теле запроса — uplinkDataPlacement: body. Session/seq кладите в cookie, padding — в query; тогда edge пробрасывает всё необходимое, и туннель поднимается.

Решает ли whitelist-CDN разблокировку Кинопоиска и стриминга?

Нет, это разные задачи. Whitelist-CDN пробивает троттлинг и шатдаун — вопрос доступности маршрута. Кинопоиск и подобные сервисы банят IP дата-центров по репутации, и для российского контента нужен резидентный IP — это отдельная задача, которую whitelisted-вход не закрывает.

Как защитить origin-ноду от прямых обращений мимо CDN?

Двумя механизмами сразу. Файрвол на входе origin открывается только для IP gateway/edge, всё остальное отбрасывается. Дополнительно origin проверяет секрет-заголовок X-Cdn-Auth, который проставляет edge, — запрос без валидного заголовка отсекается. Так реальный IP ноды скрыт, а прямые сканеры и обход учёта не проходят.

Считать ли CDN-трафик против лимита пользователя?

Это решает оператор через множитель потребления ноды в панели (например, Remnawave). Множитель 0 означает, что трафик через ноду не списывается против лимита юзера, хотя нода работает — удобно для аварийного whitelisted-канала. Множитель больше единицы, наоборот, делает гигабайт через дорогой CDN «тяжелее» в квоте.

Whitelisted-вход для вашего VPN-сервиса

Clearway даёт «белый» CDN-вход перед вашей нодой — устойчивый к троттлингу операторов. Первые 10 ГБ бесплатно, без карты.

Попробовать →