Блог Clearway

3x-ui за CDN: настройка XHTTP-инбаунда для whitelisted-входа

Коротко

В текущем входе Clearway используйте GET/header на клиенте и auto на сервере. Сначала обновите сервер, затем клиентский Host и подписки. GET с телом отклоняется CDN с ошибкой 413; переход на header не гарантирует работу у всех операторов.

Когда 3x-ui нужен вход за CDN

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

Идея входа за CDN проста: спрятать вход VPN за whitelisted CDN-edge. Для оператора трафик выглядит как обращение к «белому» CDN, а edge проксирует его на вашу origin-ноду с 3x-ui. Отсюда и связка 3x-ui + CDN: панель держит транспорт, CDN даёт «белый» вход.

Два ограничения, которые нужно понимать заранее:

  • Whitelist привязан к подсетям (/24), а не к хостеру целиком. У одних провайдеров подсети попадают в белые списки, у других — нет, и статус меняется. Selectel часто оказывается whitelisted, cloud.ru / SberCloud — часто нет. Проверяйте каждую /24 отдельно и перепроверяйте актуально; гарантий по хостеру «вообще» не бывает.
  • Транспорт решает. Через CDN стабильно проходит XHTTP в режиме packet-up. Reality и Hysteria2 напрямую под троттлингом обычно не проходят — CDN-edge их не пропускает.
ТранспортЧерез whitelisted CDNНапрямую под троттлингом
XHTTP (packet-up)проходитзависит от /24
Realityedge не пропускаетчасто режется
Hysteria2 (UDP)edge не пропускаетчасто режется

Как устроен вход и особенность 3x-ui

Схема входа: клиент → CDN-edge (443/TLS) → origin-нода (3x-ui, XHTTP-инбаунд). TLS терминируется на edge; между edge и вашей нодой идёт уже расшифрованный XHTTP, поэтому на самом инбаунде TLS не нужен.

Здесь есть особенность 3x-ui, о которой стоит знать до настройки. В отличие от Remnawave, 3x-ui не разделяет «инбаунд на сервере» и «адрес, который получает клиент»: панель исходит из того, что клиент подключается туда же, где стоит сервер, — по его IP. Мы же подключаемся через CDN-домен, поэтому автогенерированная ссылка или QR из панели ведёт на IP ноды напрямую и для входа за CDN не годится. Клиентскую ссылку придётся собрать вручную — один раз на инбаунд, не на каждого клиента.

XHTTP-инбаунд на ноде

В 3x-ui: Inbounds → Add Inbound. Базовые поля — Protocol VLESS, Listening IP 0.0.0.0, Port (например 25454), Network xhttp, Security none.

У XHTTP-инбаунда за CDN есть нестандартные параметры (размещение uplink, ключи session/seq/padding), под которые в обычной форме панели полей нет. Не ищите их в GUI — переключите редактор инбаунда в режим JSON (иконка </>) и задайте streamSettings целиком. Опорные значения:

ПараметрЗначениеЗачем
networkxhttpтранспорт XHTTP
securitynoneTLS терминирует CDN-edge, не нода
modepacket-upрабочий режим через CDN
pathваш путь, напр. /api/v1/sync/должен совпасть с клиентом
portнапр. 25454слушает origin, куда ходит edge

security: none здесь корректно: снаружи клиент идёт по TLS до edge, а edge отдаёт трафик на ноду уже расшифрованным.

Актуальные настройки XHTTP через CDN

Для текущего XHTTP-входа Clearway клиент отправляет uplink в заголовках: uplinkHTTPMethod: "GET", uplinkDataPlacement: "header", uplinkChunkSize: 4096, scMaxEachPostBytes: 4096. Сначала на сервере задайте uplinkDataPlacement: "auto" и serverMaxHeaderBytes: 262144, затем обновите Host и подписки клиентов. Порт, путь, пользователей и остальные параметры сохраняйте. Серверный auto нельзя переносить в клиентскую ссылку.

Ошибка unexpected EOF сама по себе не определяет причину. В текущем входе Clearway GET с телом отклоняется CDN с ошибкой 413. Проверьте серверный auto и лимит заголовков, затем клиентский header; для других ошибок сопоставьте время и журналы клиента, CDN, gateway и origin. Ответ HTTP 200 и успешный TLS ещё не подтверждают передачу HTTPS через туннель. Для текущего XHTTP-входа Clearway клиент отправляет uplink в заголовках: uplinkHTTPMethod: "GET", uplinkDataPlacement: "header", uplinkChunkSize: 4096, scMaxEachPostBytes: 4096. Сначала на сервере задайте uplinkDataPlacement: "auto" и serverMaxHeaderBytes: 262144, затем обновите Host и подписки клиентов. Порт, путь, пользователей и остальные параметры сохраняйте. Серверный auto нельзя переносить в клиентскую ссылку.

Клиентская ссылка и совпадение параметров

Клиентская ссылка указывает на CDN, а не на IP ноды. В качестве Address, SNI и Host ставится поддомен whitelisted edge (у Clearway это *.whitechannel-x1-cdn.ru), на клиенте security = tls, type = xhttp, mode = packet-up.

Для текущего XHTTP-входа Clearway клиент отправляет uplink в заголовках: uplinkHTTPMethod: "GET", uplinkDataPlacement: "header", uplinkChunkSize: 4096, scMaxEachPostBytes: 4096. Сначала на сервере задайте uplinkDataPlacement: "auto" и serverMaxHeaderBytes: 262144, затем обновите Host и подписки клиентов. Порт, путь, пользователей и остальные параметры сохраняйте. Серверный auto нельзя переносить в клиентскую ссылку.

Напомним: автоссылку из самой 3x-ui использовать нельзя — она ведёт на сервер напрямую, мимо CDN.

Защита origin, учёт трафика и границы решения

Защита origin. Уникальный путь спасает от DPI-фингерпринтинга, но не от прямого обращения к ноде по IP мимо CDN. Закройте порт файрволом на вход — принимать соединения только с IP вашего gateway (именно он ходит на ноду). Дополнительно origin можно защитить секрет-заголовком (X-Cdn-Auth): edge добавляет его к запросам, нода отклоняет всё без него.

Размер uplink-пакета влияет на число HTTP-запросов и нагрузку. Для текущего входа используйте клиентские uplinkChunkSize: 4096 и scMaxEachPostBytes: 4096. Увеличение пакетов ради экономии требует отдельной проверки лимитов CDN и сервера; перенос GET в body сейчас приводит к ошибке 413.

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

Если не хотите поднимать и держать whitelisted edge сами, Clearway даёт такой «белый» вход как сервис: вы держите свою 3x-ui-ноду, а вход перед ней остаётся в белых списках операторов.

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

Чем настройка 3x-ui за CDN отличается от Remnawave?

3x-ui не разделяет серверный инбаунд и клиентский адрес — панель считает, что клиент идёт туда же, где стоит сервер, по его IP. Поэтому автоссылка из 3x-ui ведёт на ноду напрямую и для входа за CDN не годится: клиентскую ссылку с CDN-поддоменом собирают вручную, один раз на инбаунд. Сам XHTTP-инбаунд настраивается схоже.

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

Для текущего XHTTP-входа Clearway клиент отправляет uplink в заголовках: uplinkHTTPMethod: "GET", uplinkDataPlacement: "header", uplinkChunkSize: 4096, scMaxEachPostBytes: 4096. Сначала на сервере задайте uplinkDataPlacement: "auto" и serverMaxHeaderBytes: 262144, затем обновите Host и подписки клиентов. Порт, путь, пользователей и остальные параметры сохраняйте. Серверный auto нельзя переносить в клиентскую ссылку.

Можно ли пустить за CDN Reality или Hysteria2?

Практически нет: под троттлингом CDN-edge их не пропускает, и напрямую они тоже часто режутся. Рабочий транспорт через whitelisted CDN — XHTTP в режиме packet-up. Именно его и держит XHTTP-инбаунд на ноде 3x-ui.

Как выбрать хостер, чтобы нода 3x-ui была whitelisted?

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

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

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

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

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

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