这套文档怎么读

这份文档面向三类人,按需取用:

你是从哪开始不要错过
运维 / 使用者安装 → 快速上手运维与排障 里的日志字典
配置作者凭据、多隧道、真实客户端 IP指令总览 与 限制
改代码 / 评审架构总览、不变量测试套件 与 交付物与指纹

文档的分区 ​

  • 指南(本区):按「装 → 配 → 跑 → 排障」的顺序讲怎么用,每一步都给可直接粘的配置。
  • 参考:42 条指令的完整表格、日志消息字典、常量与上限、以及与 cloudflared 的逐条差异。
  • 架构:协议层、注入层、不变量与安全边界 —— 解释「为什么这样」而不是「怎么配」。
  • 验证:18 支测试套件各钉住什么、交付物指纹怎么复核。

三条贯穿全站的约定 ​

  1. 对齐 cloudflared 是硬要求,不是口号。 任何「看起来不一样也没问题」的改动都不接受; 真有意偏离的地方,本文档逐条写明偏离点、理由,以及 cloudflared 侧的行为证据。
  2. 不猜。 说不支持就是不支持(例如 token 里的 e 区域、unix: service),宁可配置期报错 或传输层丢弃,也不静默改路由。
  3. 没跑过的不写成跑过。 本文档里所有数字(断言条数、体积、指纹)都来自可复现的脚本, 出处见 交付物与指纹。

名词表 ​

名词含义
边缘 / edgeCloudflare 的隧道接入点,默认 region1.v2.argotunnel.com:7844(TLS SNI 恒为 h2.cftunnel.com)
控制流h2 上那条跑 Cap’n Proto RPC 的流(注册、心跳、远程配置、注入回流都在它上面)
注入 / inject把边缘送来的一条 h2 流变成 nginx 的一条虚拟连接 + 一个原生 HTTP 请求
虚拟连接用 ngx_get_connection() 真连接槽 + socketpair 真 fd 搭起来的 ngx_connection_t:本地地址借自监听器,数据由模块经 c->recv/c->send 喂,fd 只作身份载体
注入目标这条隧道的请求送进哪个 listen(inject_listen,ip:port 或只写端口)
快速隧道启动时向 api.trycloudflare.com 申请一条临时隧道(随机域名,重启即变)
裸 TCP 隧道流流头带 Cf-Cloudflared-Proxy-Src 的流:ssh / rdp / tcp 这类非 HTTP 服务,模块直接丢弃

模块文档 · 对齐依据是 cloudflared 的源码与实测行为