
cloudflared v2026.8.1
Cloudflare Tunnel 的客户端,通过零信任架构实现仅出站的安全连接到源站。无需更改防火墙即可支持 HTTP、WebSocket、SSH 和 RDP 流量,提供访问控制和身份验证。
Cloudflare Tunnel 客户端
包含 Cloudflare Tunnel 的命令行客户端,这是一个隧道守护进程,用于将来自 Cloudflare 网络的流量代理到你的源站。
该守护进程位于 Cloudflare 网络与你的源站(例如 Web 服务器)之间。Cloudflare 接收客户端请求,并通过该守护进程将其发送给你,
无需你在防火墙上开放端口 --- 你的源站可以尽可能保持关闭状态。
详细文档可在 Cloudflare 文档的 Cloudflare Tunnel 章节中找到。
所有与代理到源站相关的用法均可在 cloudflared tunnel help 下查看。
你还可以使用 cloudflared 访问 Tunnel 源站(这些源站受 cloudflared tunnel 保护),以处理第 4 层的 TCP 流量
(即非 HTTP/websocket),这适用于 SSH、RDP 等用例。
此类用法可在 cloudflared access help 下查看。
你也可以改用 WARP 客户端
访问 Tunnel 后面的私有源站以处理第 4 层流量,而无需在客户端侧使用 cloudflared access 命令。
开始之前
在使用 Cloudflare Tunnel 之前,你需要在 Cloudflare 仪表板中完成几个步骤:你需要向 Cloudflare 账户添加一个 网站。请注意,如今可以在没有网站的情况下使用 Tunnel(例如用于私有 路由),但出于历史原因,此要求仍然必要:
安装 cloudflared
下载内容以独立二进制文件、Docker 镜像以及 Debian、RPM 和 Homebrew 软件包的形式提供。你也可以在 cloudflared GitHub 仓库的此处找到发布版本。
- 你可以通过 Homebrew 或下载最新的 Darwin amd64 发布版在 macOS 上安装
- Linux 的二进制文件、Debian 和 RPM 软件包可在此处找到
cloudflared的 Docker 镜像可在 DockerHub 上获取- 你可以按照此处的步骤在 Windows 机器上安装
- 要从源代码构建,请安装下文开发章节中提到的所需 go 版本。然后你可以运行
make cloudflared。
Cloudflare Tunnel 的用户文档可在 https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/ 找到
创建 Tunnel 并路由流量
安装完成后,你可以将 cloudflared 认证到你的 Cloudflare 账户,并开始创建 Tunnel 以向你的源站提供流量服务。
- 按照这些说明创建 Tunnel
- 将流量路由到该 Tunnel:
- 通过 Cloudflare 中的公共 DNS 记录
- 或通过由 Cloudflare 负载均衡器引导的公共主机名
- 或来自 WARP 客户端私有流量
TryCloudflare
想在将网站添加到 Cloudflare 之前测试 Cloudflare Tunnel?你可以使用 TryCloudflare 来完成,相关文档见此处。
破坏性变更
移除 CLI 标志、环境变量、配置键或命令属于破坏性变更。此类移除必须在移除它们的版本发布之前,在 Cloudflare Tunnel 变更日志中公布。
已弃用的版本
Cloudflare 目前支持与最新发布版本相隔一年以内的 cloudflared 版本。可能会引入与功能可用性无关的破坏性变更,这些变更将影响一年以前发布的版本。你可以在我们的开发者文档中了解更多关于升级 cloudflared 的信息。
例如,截至 2023 年 1 月,Cloudflare 将支持 cloudflared 版本 2023.1.1 至 cloudflared 2022.1.1。
开发
要求
更新 Go
go.mod 中的 go 指令必须指定完整的 major.minor.patch 版本
(例如 go 1.27.3)。不要省略补丁版本,包括 .0 版本。
这是用于构建和测试 cloudflared 的确切 Go 版本:Makefile 会从中导出
GOTOOLCHAIN=go<version>,因此当已安装的 Go 版本较旧或较新时,make 会下载该工具链。
make 通过 go run pkg@version 运行的工具也会使用此工具链。go.mod 中的 toolchain 指令会被忽略;不要添加它。
要改用已安装的 Go,请运行 make <target> GOTOOLCHAIN=local。
升级 Go 时,请更新 go 指令以及 .gitlab-ci.yml、.ci/image/Dockerfile、.github/workflows/check.yaml 和
各 Dockerfile 中所有对应的版本引用。同时更新 .ci/linux.gitlab-ci.yml 中的 Linux CI 构建器镜像和摘要
以保持一致;其 golangVersion 用于选择主/次版本镜像系列。在 macOS 和
Windows 上,版本不匹配只会导致一次工具链下载。使用 GOTOOLCHAIN=local 的构建
如果其 Go 版本低于 go.mod 则会失败,如果高于则使用其自身的 Go。
构建
要在本地构建 cloudflared,请运行 make cloudflared
测试
要在本地运行测试,请运行 make test
代码检查
要格式化代码并保持良好的代码质量,请使用 make fmt 和 make lint
Mock
在修改接口后,你可能需要重新生成 mock,因此请运行 make mocks
Git 钩子
为避免 CI 错误,你可以安装 pre-push 钩子,在每次推送前运行代码检查和测试:
make install-hooks
这会将 git 配置为使用 .githooks/ 中的钩子,在每次推送前运行 make fmt-check lint test。