Skip to content

cloudflared — sing-box ​

Входящий cloudflared запускает встроенный коннектор Cloudflare Tunnel. Вместо прослушивания локального порта он сам подключается к периферии Cloudflare с токеном туннеля и передаёт каждое соединение, доставленное туннелем, — TCP, UDP и ICMP, — движку маршрутизации sing-box с тегом этого входящего.

Без локального слушателя

У cloudflared нет адреса прослушивания: поля прослушивания (listen, listen_port и т. д.), описанные на странице Входящие, не применяются. Всё приходит через исходящие соединения туннеля.

Параметры входящего ​

type: "cloudflared" в inbounds[]:

ПолеТипПо умолчаниюДопустимые значенияОписание
tokenstring(required)<base64 tunnel token>Токен туннеля из панели Cloudflare Zero Trust (Networks → Tunnels → Install connector). Без него запуск завершается ошибкой.
ha_connectionsint4<int>Число соединений высокой доступности с периферией Cloudflare. 0 или отсутствие значения означает 4; ограничено числом обнаруженных адресов периферии.
protocolstringautoauto | quic | http2 | h2muxТранспорт к периферии. auto (или пусто) начинает с QUIC и переключается на HTTP/2 после повторных сбоев или если QUIC выглядит заблокированным. h2mux принимается, но с предупреждением обрабатывается как http2.
post_quantumboolfalsetrue | falseИспользовать постквантовый обмен ключами. Только QUIC: транспорт фиксируется на QUIC (без отката на HTTP/2), а сочетание с protocol: http2 отклоняется.
edge_ip_versionint00 | 4 | 6Версия IP для подключения к периферии Cloudflare; 0 — автоматический выбор.
datagram_versionstring(remote)v2 | v3Версия протокола датаграмм для UDP поверх QUIC. Если не задана, следует удалённой настройке функций Cloudflare для аккаунта (начиная с v2). Имеет смысл только с QUIC.
grace_periodbadoption.Duration30s<duration>Окно корректного завершения для активных соединений с периферией.
regionstring(from token)<region>Выбор региона периферии Cloudflare. Отклоняется, если токен уже содержит конечную точку.
control_dialerDialerOptions(direct)Dial FieldsПоля набора для соединений с управляющей плоскостью Cloudflare. Имена хостов разрешаются через DNS-маршрутизатор sing-box.
tunnel_dialerDialerOptions(direct)Dial FieldsПоля набора для соединений с плоскостью данных периферии Cloudflare.

Исходный код: option/cloudflared.go:5-16 · зафиксировано на v1.14.2 (af6e64c)

Примеры ​

Принимать всё, что доставляет туннель, и отправлять напрямую:

json
{
  "inbounds": [
    {
      "type": "cloudflared",
      "tag": "cf-in",
      "token": "<tunnel token>"
    }
  ],
  "outbounds": [
    { "type": "direct", "tag": "direct" }
  ],
  "route": {
    "rules": [
      { "inbound": ["cf-in"], "outbound": "direct" }
    ]
  }
}

Примечания ​

  • Тип компилируется только с тегом сборки with_cloudflared; другие сборки завершаются ошибкой при запуске с подсказкой пересобрать.
  • Какие публичные имена хостов и частные сети обслуживает туннель, настраивается в панели Cloudflare, а не в sing-box. Адреса источников, на которые указывают эти правила ingress, становятся назначениями, которые маршрутизирует sing-box, поэтому правило с inbound: ["<tag>"] решает, какой исходящий к ним ведёт.
  • С protocol по умолчанию коннектор начинает с QUIC и переключается на HTTP/2 после пяти неудачных попыток (или сразу, если QUIC выглядит заблокированным). Чтобы зафиксировать транспорт, задайте quic или http2.
  • post_quantum работает только поверх QUIC; вместе с protocol: http2 входящий завершается ошибкой при запуске.
  • region конфликтует с токенами, в которые уже встроена конечная точка.
  • control_dialer и tunnel_dialer принимают обычные поля набора, так что сам туннель можно устанавливать через другой исходящий (detour) или привязать к интерфейсу.

Сравнение с другими ядрами ​

  • У Xray-core и mihomo нет встроенного коннектора Cloudflare Tunnel; с ними отдельный демон cloudflared запускают рядом с ядром.

Исходный код: option/cloudflared.go:5-16 · v1.14.2 (af6e64c)

Core Tutorial от Argsment