
cloudflared v2026.8.3
Cloudflare Tunnel 的客户端,通过零信任架构实现仅出站的安全连接到源站。无需更改防火墙即可支持 HTTP、WebSocket、SSH 和 RDP 流量,提供访问控制和身份验证。
Cloudflare Tunnel 客户端
包含 Cloudflare Tunnel 的命令行客户端,这是一个隧道守护进程,用于将流量从 Cloudflare 网络代理到你的源站。
该守护进程位于 Cloudflare 网络与你的源站(例如 Web 服务器)之间。Cloudflare 接收客户端请求,并通过该守护进程将其发送给你,
而无需你在防火墙上打洞——你的源站可以尽可能保持关闭状态。
详细文档可在 Cloudflare Docs 的 Cloudflare Tunnel 部分中找到。
所有与代理到源站相关的用法均可在 cloudflared tunnel help 下查看。
你还可以使用 cloudflared 在第 4 层(即非 HTTP/websocket)访问受 cloudflared tunnel 保护的 Tunnel 源站以传输 TCP 流量,
这适用于 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。
开发
要求
构建
要在本地构建 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。