Блог Clearway

Origin-нода за CDN: как правильно настроить инбаунд

Коротко

Origin-нода за CDN — это ваш VPN-сервер, спрятанный за whitelisted CDN-edge: оператор связи видит трафик как обращение к «белому» CDN-домену, а edge проксирует соединение на ноду. Рабочий транспорт — XHTTP в режиме packet-up, при этом uplink-данные обязаны идти в теле запроса (uplinkDataPlacement: "body"), иначе CDN не донесёт их до origin и туннель порвётся с ошибкой "unexpected EOF". Path и параметры инбаунда на клиенте и на ноде должны совпадать точь-в-точь, а сам origin закрывается файрволом и секрет-заголовком, чтобы принимать трафик только от gateway.

Зачем origin-нода за CDN и как это работает

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

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

Выбор транспорта: почему XHTTP, а не Reality/Hysteria2

Не любой транспорт переживает проксирование через CDN и работу под троттлингом. Reality и Hysteria2 напрямую под ограничениями обычно не проходят: CDN-edge — это HTTP-прокси, он не пропускает произвольный TLS/QUIC-транспорт до origin, а под троттлингом прямое соединение к ноде и так недоступно.

Рабочий подход — XHTTP в режиме packet-up поверх обычного HTTP(S), который CDN умеет проксировать штатно. Нода держит XHTTP-инбаунд (например, на порту 25454), а клиентский конфиг указывает CDN-поддомен как Address/SNI/Host.

ТранспортНапрямую под троттлингомЧерез whitelist-CDN
RealityОбычно не проходитEdge не доносит до origin
Hysteria2 (QUIC)Обычно не проходитCDN не проксирует UDP/QUIC
XHTTP (packet-up)Не решает whitelist сам по себеРабочий вариант

Критично: uplink — в теле запроса, а не в заголовке

Самый неочевидный момент настройки XHTTP-инбаунда за CDN. Uplink-данные (то, что клиент отправляет на сервер) обязаны идти в теле HTTP-запросаuplinkDataPlacement: "body". Если положить их в кастомный заголовок (например, X-Payload), CDN-edge такой заголовок до origin не донесёт: промежуточные прокси не форвардят произвольные заголовки, и туннель рвётся с характерной ошибкой unexpected EOF.

Практические правила размещения полей XHTTP через CDN:

  • uplink-данные — в body запроса (uplinkDataPlacement: "body");
  • session id и seq — в cookie;
  • padding — в query-строке;
  • path и все extra-параметры на клиенте и на ноде должны совпадать точь-в-точь.

Важная тонкость, которая часто путает: до origin не доносятся именно произвольные заголовки, которые ставит клиент. Сам edge — наоборот: его можно настроить так, чтобы он добавлял собственные заголовки к origin. Именно на этом держится секрет-заголовок защиты ноды (см. ниже). Поэтому uplink в клиентском заголовке не выживает, а заголовки, которые проставляет edge, доходят до origin штатно.

Крупные POST-запросы в body дают ещё и побочный выигрыш по стоимости — об этом ниже.

Хостер и подсеть: whitelist привязан к /24

Whitelist работает не по хостеру целиком, а по подсетям — как правило, на уровне /24. У одного провайдера часть /24 в белых списках, у другого — нет, и статус со временем меняется. Поэтому origin-ноду ставят не «у известного бренда», а в конкретной whitelisted-подсети и проверяют её актуальность перед запуском и периодически после.

ХостерСтатус whitelist (ориентир)
SelectelЧасто whitelisted
cloud.ru / SberCloudЧасто НЕ whitelisted

Это ориентир, а не гарантия: проверяйте каждую /24 отдельно и на текущий момент. Гарантий «навсегда» здесь не бывает — подсеть может выпасть из белого списка.

Безопасность origin-ноды

Как только вход спрятан за CDN, origin должен принимать трафик только от gateway, а не из всего интернета:

  • Файрвол на вход — разрешить подключение к порту XHTTP-инбаунда только с IP CDN-gateway, остальное дропать.
  • Секрет-заголовокX-Cdn-Auth (или аналог), который проставляет edge и проверяет origin; запросы без валидного секрета нода отклоняет. Это как раз тот случай, когда заголовок ставит edge, а не клиент, поэтому до origin он доходит.

Вместе эти две меры защищают ноду от прямого сканирования и обращений мимо CDN: по IP origin выглядит закрытым, а публичной точкой остаётся только CDN-поддомен. Без них спрятанный за CDN origin остаётся доступен напрямую и теряет смысл маскировки.

Экономика трафика и учёт в панели

CDN-слой добавляет стоимость. Прайс за гигабайт — только половина счёта. Вторая половина у части провайдеров это запросы, а XHTTP в режиме packet-up дробит аплинк на множество мелких обращений. На масштабе плата за запросы становится отдельной статьёй расхода, и считать её надо по своей выгрузке из биллинга, а не по прайсу. Отсюда практический вывод: чем крупнее POST-запросы в body, тем меньше их число и тем ниже кост — это ещё одна причина держать uplink в теле.

Учёт трафика — на стороне панели (Remnawave, 3x-ui, Marzban, Hiddify). Множитель потребления ноды и per-user лимиты — механизмы панели: множитель 0 на ноде означает, что трафик через неё не считается против лимита пользователя, при этом нода продолжает работать. Это удобно для fallback-ноды за CDN, которую не хочется тарифицировать наравне с основной.

Whitelisted-вход можно строить самому или брать как сервис. Clearway (clear-way.pro) даёт операторам готовый whitelisted CDN-edge (домены *.whitechannel-x1-cdn.ru) перед их нодами — без продажи серверов: ноды остаются у оператора, наружу торчит только «белый» поддомен.

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

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

Чаще всего uplink-данные отправляются в кастомном заголовке (например, X-Payload), а CDN-edge не доносит произвольные заголовки от клиента до origin. Переключите инбаунд на uplinkDataPlacement: "body", чтобы uplink шёл в теле запроса. Вторая частая причина — несовпадение path или extra-параметров на клиенте и на ноде.

Можно ли пустить через CDN Reality или Hysteria2 вместо XHTTP?

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

Как выбрать хостер для origin-ноды под whitelist?

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

Whitelist-CDN разблокирует Kinopoisk и другой российский стриминг?

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

Сколько стоит CDN-слой перед нодой?

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

Как не списывать трафик ноды за CDN с лимита пользователя?

В панели (например, Remnawave) у ноды есть множитель потребления. Поставьте множитель 0 — трафик через эту ноду перестанет засчитываться против per-user лимита, при этом сама нода продолжит работать. Это удобно для fallback-ноды за CDN, которую не нужно тарифицировать наравне с основной.

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

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

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