Skip to content

cloudflared — sing-box ​

cloudflared 入站运行一个内置的 Cloudflare Tunnel 连接器。它不监听本地端口,而是使用隧道令牌主动连接 Cloudflare 边缘,并把隧道送来的每个连接——TCP、UDP 与 ICMP——交给 sing-box 的路由引擎,标记为该入站。

没有本地监听器

cloudflared 没有监听地址:入站 页面中介绍的监听字段(listen、listen_port 等)不适用。所有流量都经由主动建立的隧道连接到达。

入站选项 ​

inbounds[] 中的 type: "cloudflared":

字段类型默认值允许值描述
tokenstring(required)<base64 tunnel token>来自 Cloudflare Zero Trust 控制台的隧道令牌(Networks → Tunnels → Install connector)。缺少时启动失败。
ha_connectionsint4<int>到 Cloudflare 边缘的高可用连接数。0 或未设置表示 4;上限为发现到的边缘地址数量。
protocolstringautoauto | quic | http2 | h2mux边缘传输协议。auto(或留空)先使用 QUIC,在多次失败或 QUIC 疑似被阻断时回退到 HTTP/2。h2mux 仍被接受,但会按 http2 处理并给出警告。
post_quantumboolfalsetrue | false使用后量子密钥交换。仅限 QUIC:会把传输固定为 QUIC(不回退到 HTTP/2),与 protocol: http2 同时设置会被拒绝。
edge_ip_versionint00 | 4 | 6连接 Cloudflare 边缘所用的 IP 版本;0 表示自动选择。
datagram_versionstring(remote)v2 | v3UDP over QUIC 所用的数据报协议版本。未设置时跟随该账户在 Cloudflare 端的远程特性设置(初始为 v2)。仅在使用 QUIC 时有意义。
grace_periodbadoption.Duration30s<duration>正在进行的边缘连接的优雅关闭时限。
regionstring(from token)<region>Cloudflare 边缘区域选择器。若令牌中已内嵌端点,则设置它会被拒绝。
control_dialerDialerOptions(direct)Dial Fields连接 Cloudflare 控制平面所用的拨号字段。主机名经由 sing-box 的 DNS 路由解析。
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,在失败五次后(或 QUIC 疑似被阻断时立即)回退到 HTTP/2。设为 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)

由 Argsment 出品的 Core Tutorial