跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

隧道基础

最后更新 查看 MarkdownAgent 设置

Cloudflare Tunnel 是 Cloudflare 网络与您的基础设施之间的安全链路,并在您的 Cloudflare 账户中拥有稳定身份。

隧道连接从您的网络内部发起,并保持通往 Cloudflare 的打开状态,因此其背后的资源不需要公共 IP 地址或开放的入站端口。流量可以通过隧道到达这些资源,而无需直接通过互联网连接它们。

连接从 cloudflared 开始

出站连接到 Cloudflare,同时保持资源私有。

cloudflared 是建立并维持隧道到 Cloudflare 连接的守护程序。它从您的网络内部发起这些连接,使请求和响应可以双向传输,而无需源站暴露公共地址。

这是 Tunnel 的核心思路:Cloudflare 不会连接到您服务器上的公共地址。cloudflared 先连接到 Cloudflare,然后 Cloudflare 使用这些已有连接来访问您网络中的资源。

The private network has no inbound connections.

有关更多信息,请参阅配置。

隧道身份与连接器

将您配置的隧道与运行它的软件分开。

创建隧道时,Cloudflare 会为其分配一个唯一 ID,如下图中的 #123。路由和其他 Cloudflare 服务使用此 ID 来识别隧道。

每个正在运行的 cloudflared 实例称为连接器(connector),它会与 Cloudflare 保持多条网络连接。隧道可以扩展到单个连接器之外,而无需更改路由,因为每个连接器共享相同的隧道 ID。每个额外的连接器称为副本(replica),通常运行在单独的主机上。如果某个连接器不可用,Cloudflare 可以通过另一个连接器发送新流量。

Both connectors live
Requests alternate between connector A and connector B under one tunnel identity.

有关更多信息,请参阅副本与高可用性和负载平衡。

快速隧道

无需账户或配置即可访问本地服务。

上面的隧道是持久的:每个隧道都有稳定 ID,并会保留在您的账户中,直到您将其删除。快速隧道会跳过该身份。它通过一条命令运行:

cloudflared tunnel --url http://localhost:8080

Cloudflare 会分配一个随机的 trycloudflare.com 地址,该地址通过隧道回传到您的服务。

连接仍然从您的网络内部开始,因此您的计算机保持私有。改变的是持久性:快速隧道仅在 cloudflared 运行期间存在,并且每次地址都不同。这使快速隧道适用于临时工作(例如共享开发预览或接收 webhook),但不适合生产流量或您打算保留的路由。

Named · live
Tunnel #123 is a record in your account, bound to app.example.com. cloudflared holds the connection.

有关更多信息,请参阅快速隧道。

流量如何到达资源

通过隧道将流量连接到资源。

仅连接隧道并不会使资源可访问。路由配置决定哪些流量使用该隧道,以及这些流量应到达哪个资源。

  • 已发布的应用程序 将公共主机名(例如 app.example.com)连接到隧道背后的服务。
  • 专用网络路由 将私有主机名、IP 地址或网段的流量导向隧道。
  • Workers VPC 让 Workers 通过隧道访问私有服务。

一条隧道可以为多个资源承载流量,即使这些资源使用不同类型的路由。当流量匹配路由配置时,Cloudflare 会通过可用的隧道连接发送它。cloudflared 接收流量并将其转发到您网络中它可以到达的资源。

隧道提供连接。对每个资源的访问单独控制。

No route or tunnel exists yet.

有关更多信息,请参阅路由、专用网络和 Workers VPC。

开始构建

准备好构建后,选择您希望如何使用隧道。

相关资源

  • 配置:副本、防火墙规则和连接设置。
  • 路由:公共主机名、协议和负载平衡。
  • 可观测性:隧道状态、日志、指标和通知。
  • 故障排除:请求路径上的故障。

这篇文档对您有帮助吗?