Cloudflare Tunnel 是 Cloudflare 网络与您的基础设施之间的安全链路,并在您的 Cloudflare 账户中拥有稳定身份。
隧道连接从您的网络内部发起,并保持通往 Cloudflare 的打开状态,因此其背后的资源不需要公共 IP 地址或开放的入站端口。流量可以通过隧道到达这些资源,而无需直接通过互联网连接它们。
出站连接到 Cloudflare,同时保持资源私有。
cloudflared 是建立并维持隧道到 Cloudflare 连接的守护程序。它从您的网络内部发起这些连接,使请求和响应可以双向传输,而无需源站暴露公共地址。
这是 Tunnel 的核心思路:Cloudflare 不会连接到您服务器上的公共地址。cloudflared 先连接到 Cloudflare,然后 Cloudflare 使用这些已有连接来访问您网络中的资源。
cloudflared 从私有网络向 Cloudflare 打开连接,使流量能够通过这些连接到达资源。在隧道存在之前发出的请求会在网络边界被拒绝,因为内部没有任何内容接受入站连接。
有关更多信息,请参阅配置。
将您配置的隧道与运行它的软件分开。
创建隧道时,Cloudflare 会为其分配一个唯一 ID,如下图中的 #123。路由和其他 Cloudflare 服务使用此 ID 来识别隧道。
每个正在运行的 cloudflared 实例称为连接器(connector),它会与 Cloudflare 保持多条网络连接。隧道可以扩展到单个连接器之外,而无需更改路由,因为每个连接器共享相同的隧道 ID。每个额外的连接器称为副本(replica),通常运行在单独的主机上。如果某个连接器不可用,Cloudflare 可以通过另一个连接器发送新流量。
两个 cloudflared 连接器共享一个稳定的隧道身份,因此在某个连接器停止时流量仍可继续。停止连接器 B 后,每条新请求都会通过连接器 A 发送,而隧道 ID 及其路由保持不变。
无需账户或配置即可访问本地服务。
上面的隧道是持久的:每个隧道都有稳定 ID,并会保留在您的账户中,直到您将其删除。快速隧道会跳过该身份。它通过一条命令运行:
cloudflared tunnel --url http://localhost:8080Cloudflare 会分配一个随机的 trycloudflare.com 地址,该地址通过隧道回传到您的服务。
连接仍然从您的网络内部开始,因此您的计算机保持私有。改变的是持久性:快速隧道仅在 cloudflared 运行期间存在,并且每次地址都不同。这使快速隧道适用于临时工作(例如共享开发预览或接收 webhook),但不适合生产流量或您打算保留的路由。
具名隧道将其身份作为记录保存在您的 Cloudflare 账户中,因此停止 cloudflared 后该记录仍然存在。快速隧道不会在账户中留下记录:其地址漂浮在 Cloudflare 网络中,仅由活动连接支撑,因此停止 cloudflared 会销毁它,下一次运行会生成一个不同的地址。
有关更多信息,请参阅快速隧道。
通过隧道将流量连接到资源。
仅连接隧道并不会使资源可访问。路由配置决定哪些流量使用该隧道,以及这些流量应到达哪个资源。
- 已发布的应用程序 将公共主机名(例如
app.example.com)连接到隧道背后的服务。 - 专用网络路由 将私有主机名、IP 地址或网段的流量导向隧道。
- Workers VPC 让 Workers 通过隧道访问私有服务。
一条隧道可以为多个资源承载流量,即使这些资源使用不同类型的路由。当流量匹配路由配置时,Cloudflare 会通过可用的隧道连接发送它。cloudflared 接收流量并将其转发到您网络中它可以到达的资源。
隧道提供连接。对每个资源的访问单独控制。
路由配置通过可用的隧道连接将流量发送到 cloudflared,再由其转发到可到达的资源。没有路由的请求会立即失败;已路由但没有隧道的请求会在 Cloudflare 边缘失败,因为路由和隧道缺一不可。
有关更多信息,请参阅路由、专用网络和 Workers VPC。
准备好构建后,选择您希望如何使用隧道。