WARP
Как выпустить трафик профиля через Cloudflare WARP, как получить аккаунт для ноды, что значит «закрыто при сбое» и как читать и чинить связь WARP.
На этой странице
По умолчанию трафик профиля выходит с ноды с её собственного адреса. С WARP он выходит через сеть Cloudflare: сайты видят адрес Cloudflare, а не хостера. У ноды может быть не больше одного аккаунта WARP, и через него идут все профили этой ноды с выходом через WARP. Пользоваться им могут и профили Hysteria2, и профили AmneziaWG.
Как это устроено#
- Выход — настройка профиля. Выход (в группе Продвинутое у Hysteria2, в группе Основное у AmneziaWG) — Напрямую или WARP.
- Аккаунт принадлежит ноде. Он настраивается в карточке WARP ноды: нода → Настройки, первая карточка. Туда же ведёт значок WARP в шапке ноды.
- Профилю с выходом через WARP нужен аккаунт на каждой ноде, где он стоит. Редактор перечисляет ноды профиля без рабочего WARP, каждая — ссылка на её карточку WARP.
Чтобы дать людям оба выхода, сделайте двойника профиля с другим выходом («Копия через WARP»): см. Профили.
Закрыто при сбое#
Профиль с выходом через WARP никогда не выходит напрямую. Если WARP нет, профиль не пропускает трафик — вместо того чтобы молча показывать трафик людей с собственного адреса ноды:
| Ситуация | Что происходит с профилями ноды с выходом через WARP |
|---|---|
| У ноды нет аккаунта WARP | Они не запускаются («Нет рабочего WARP на ноде»). |
| WARP на паузе | Они перестают пропускать трафик, пока его не возобновят. |
| Туннель лежит | Они перестают пропускать трафик, пока он не поднимется; если он только тормозит — работают медленно. |
Окно добавления профиля предупреждает до нажатия кнопки, если у ноды нет WARP, он на паузе или туннель лежит. Проверка доктора Выход через WARP и проверки глазами клиента показывают то же с другой стороны: если прямой профиль ноды работает, а профиль с WARP нет, открывается алерт, который прямо называет выход через WARP. См. Здоровье.
Как получить аккаунт#
В карточке ноды без аккаунта написано Не настроен и предложены два пути. Оба доступны только владельцу и требуют свежего подтверждения входа, и обоим нужен агент с поддержкой WARP; для старого агента будет ссылка на Обновления.
Включить WARP (регистрация)#
Включить WARP регистрирует новый аккаунт Cloudflare WARP для этой ноды и хранит его в зашифрованном виде. Окно объясняет, что делает кнопка:
- это анонимный аккаунт устройства: без почты и пароля;
- запрос уходит с адреса панели, не с ноды;
- от вашего имени принимаются условия Cloudflare WARP, для этого одного аккаунта. Окно даёт ссылку на условия, а Включить WARP недоступна, пока не отмечено «Я прочитал условия Cloudflare WARP и принимаю их для этого аккаунта».
Это занимает несколько секунд; потом нода поднимает туннель. Если Cloudflare отказывает в новых аккаунтах с адреса панели («Cloudflare сейчас отказывает в новых аккаунтах с адреса панели»), окно предложит Импортировать профиль wgcf.
Импорт профиля wgcf#
Нужен, когда регистрация с адреса панели не проходит. Сделайте файлы утилитой wgcf на компьютере, где она работает, и вставьте их или откройте кнопкой Открыть файл:
| Файл | Обязателен | Что даёт |
|---|---|---|
wgcf-profile.conf |
да | Приватный ключ и пир. Нужны [Interface] с PrivateKey и [Peer]. |
wgcf-account.toml |
нет | Токен доступа. Без него не работает Перечитать у Cloudflare, а Удалить аккаунт удаляет аккаунт только здесь, не у Cloudflare. |
Карточка WARP#
Рядом с заголовком карточки видно, откуда аккаунт (Зарегистрирован здесь или Импортирован), его тип (free или plus) и дата-центр Cloudflare по последней проверке.
Состояния#
| Состояние | Что значит |
|---|---|
| Не настроен | На ноде нет аккаунта. |
| Ждём ноду | Аккаунт есть, но нода ещё не отчиталась или не на связи. |
| Нет бэкенда | На хосте нет ни модуля ядра WireGuard, ни /dev/net/tun. |
| Запускается | Туннель поднимается. «Запуск: проверка не проходит», если проверки продолжают падать. |
| Работает | Рукопожатие и проверки проходят. «Работает: проверка не прошла», если не прошла последняя. |
| Не работает | Не проходят рукопожатие или проверки. |
| На паузе | Вы поставили его на паузу. |
Состояние связи#
- Рукопожатие — когда туннель последний раз завершил рукопожатие с Cloudflare.
- Эндпоинт — адрес и порт Cloudflare, которые сейчас используются.
- Трафик — байты внутрь и наружу через туннель.
- Cloudflare и Другой сайт — две проверки через туннель: одна до Cloudflare, другая до сайта вне его. Каждая показывает ок со временем ответа, медленно (дольше 2 секунд) или не ответил (ничего за 6 секунд).
- «Проверено: N с назад». Нода проверяет каждые 30 секунд, а пока туннель поднимается — каждые 5. Серия сбоев видна как «3 неудачные проверки подряд».
- Подробности — бэкенд WireGuard, флаг от самого Cloudflare (
warp=on,warp=plusилиwarp=off) и проставляются ли в пакеты reserved-байты аккаунта.
Когда проверка падает, карточка словами говорит, что случилось и что это значит: Cloudflare не ответил через WARP, трафик идёт не через WARP (warp=off), рукопожатия не было больше 3 минут, рукопожатия ещё не было, интерфейс не поднят, на хосте нет WireGuard.
Самовосстановление#
Пока туннель лежит, нода идёт по лестнице, по шагу на каждую неудачную проверку:
- заново настраивает маршруты, правила и устройство;
- пробует другие адреса и порты Cloudflare: порты 2408, 500, 1701 и 4500, сначала эндпоинт IPv4, потом IPv6, если он есть у аккаунта;
- просит панель заново прочитать аккаунт у Cloudflare (для этого нужен токен доступа; ничего не создаётся);
- сдаётся, и карточка пишет Нужно твоё внимание.
После последнего шага она 10 минут отдыхает, но после каждой неудачной проверки всё равно пробует следующий адрес, а потом начинает сначала. Карточка показывает, на каком шаге она сейчас («Пробую восстановить: сменил адрес и порт на …»).
Кнопки#
| Кнопка | Когда | Что делает |
|---|---|---|
| Перезапустить WARP | Туннель лежит | Пауза и возобновление одним действием: нода сносит туннель и поднимает его заново, лестница начинается сначала. Если нода не успела подтвердить паузу, возобновление всё равно уходит: «WARP снова включён, но нода не подтвердила паузу — загляни через минуту». |
| Зарегистрировать заново | Cloudflare больше не знает аккаунт (отозван) | Регистрирует новый аккаунт и одним шагом ставит его на место старого; старое устройство удаляется у Cloudflare. Окно с условиями то же, что у Включить WARP. |
| Перечитать у Cloudflare | У аккаунта есть токен доступа | Заново читает у Cloudflare эндпоинт, адреса и id клиента. Ничего не создаёт. |
| Пауза / Возобновить | Всегда | Пауза сносит туннель. Окно называет профили, которые остановятся, и сколько подключений идёт через них сейчас. Аккаунт на паузе возобновляют, а не перезапускают. |
| Удалить аккаунт | Всегда | Для подтверждения нужно ввести имя ноды и заново подтвердить вход. Нода теряет WARP, профили с выходом через WARP останавливаются. Если токен сохранён, устройство удаляется и у Cloudflare. Потом можно зарегистрировать или импортировать другой аккаунт. |
Некоторые проблемы решает не кнопка, а вы. Карточка их называет:
- таблицу маршрутов, которую занимает WARP (51820), держит другая программа, чаще всего
wg-quick: освободите таблицу или остановите другой туннель; - другая программа занимает приоритеты правил маршрутизации, нужные WARP (90 и 110);
- сетевой интерфейс с именем
mgwarpуже есть, и он не от WARP; - нода не смогла применить аккаунт: причина в событиях ноды.
IPv4 и IPv6#
- Эндпоинт Cloudflare хранится в аккаунте как IP-адреса, никогда как имя. Нода сначала пробует эндпоинт IPv4 на всех портах, потом IPv6, если он есть у аккаунта.
- У новых аккаунтов часто нет IPv6-адреса внутри туннеля. Тогда выход через WARP соединяется только по IPv4, и адреса, доступные только по IPv6, через WARP не открываются.
- Нода без IPv6 для WARP не помеха: доктор отметит, что WARP идёт через свой IPv4-адрес.
- Имена разрешаются резолверами из DNS для трафика пользователей ноды, так же как для прямого выхода. См. DNS.
Что нужно хосту#
Модуль ядра WireGuard или /dev/net/tun для userspace. Нода, установленная со старым юнитом службы, может прятать /dev/net/tun от агента; один раз выполните mistgate-node install текущим бинарником, чтобы юнит переписался.
Параметры регистрации#
Две вещи, связанные с регистрацией, есть не в админке, а только в API (WarpService.GetWarpRegistrationParams и UpdateWarpRegistrationParams, только для владельца):
- значения, из которых собирается запрос регистрации (версия API, user agent, версия клиента и отпечаток TLS). Cloudflare время от времени меняет то, что принимает. Пустое значение заменяется встроенным, а запрос чтения возвращает встроенные значения рядом с вашими;
- автоматическая перерегистрация, по умолчанию выключена. Если она включена и Cloudflare отзывает зарегистрированный аккаунт, панель сама регистрирует новый — не чаще раза в час на ноду. Включая её, вы принимаете условия Cloudflare и для этих будущих аккаунтов.
См. API.
каждая нода пользуется одним бесплатным потребительским аккаунтом WARP, и через него идёт трафик всех, кто на ней сидит. Cloudflare может ограничить или приостановить такой аккаунт; тогда профили с выходом через WARP будут лежать, пока вы не зарегистрируете или не импортируете другой. Не полагайтесь на WARP там, где сбой недопустим.