Cloudflare Tunnel 是一个仅出站的守护程序服务,几乎可以在任何主机上运行,并在从 Cloudflare 网络验证后代理本地流量。从 Cloudflare One Client 发起的用户流量接入到 Cloudflare,穿过你的 Cloudflare Tunnel 连接,并在你的本地网络中自动终止。到达内部应用程序或服务的流量将携带运行 cloudflared 守护进程的主机的本地源 IP 地址。
要连接你的私有网络:
-
登录 Cloudflare 仪表板,转到 Networking(网络) > Tunnels(隧道)。
Go to Tunnels ↗ -
选择 Create a tunnel(创建隧道)。
-
为您的隧道输入名称。我们建议选择能够反映您希望通过此隧道连接的资源类型的名称(例如,
enterprise-VPC-01)。 -
选择 Create Tunnel(创建隧道)。
-
选择您的操作系统,然后复制安装命令并在您的源服务器的终端上运行。
-
等待隧道连接。连接建立后,选择 Continue(继续)。
-
在 CIDR 选项卡中,输入你的私有网络的 CIDR(例如
10.0.0.0/8)。 -
选择 Save tunnel(保存隧道)。
-
为你的
cloudflare_api_token↗ 添加以下权限:Cloudflare Tunnel Write
-
使用
cloudflare_zero_trust_tunnel_cloudflare↗ 资源创建隧道:resource "cloudflare_zero_trust_tunnel_cloudflared" "example_tunnel" { account_id = var.cloudflare_account_id name = "Example tunnel" config_src = "cloudflare" } -
使用
cloudflare_zero_trust_tunnel_cloudflared_route↗ 资源将私有网络的 CIDR 路由穿过隧道:resource "cloudflare_zero_trust_tunnel_cloudflared_route" "example_tunnel_route" { account_id = var.cloudflare_account_id tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.example_tunnel.id network = "10.0.0.0/8" comment = "Example tunnel route" } -
获取用于运行隧道的 token:
data "cloudflare_zero_trust_tunnel_cloudflared_token" "tunnel_token" { account_id = var.cloudflare_account_id tunnel_id = cloudflare_zero_trust_tunnel_cloudflared.example_tunnel.id }如果您的主机不是在 Terraform 中管理的,或者您想手动安装该隧道,您可以将令牌值输出到 CLI。
示例:输出到 CLI
- 将隧道令牌输出到 Terraform 状态文件:
output "tunnel_token" { value = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token sensitive = true } - 应用该配置:
terraform apply - 读取隧道令牌:
terraform output -raw tunnel_tokeneyJhIj...
或者,直接将
data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token传递到您主机的 Terraform 配置中,或将该令牌存储在您的机密管理工具中。示例:存储在 HashiCorp Vault 中
resource "vault_generic_secret" "tunnel_token" { path = "kv/cloudflare/tunnel_token" data_json = jsonencode({ "TUNNEL_TOKEN" = data.cloudflare_zero_trust_tunnel_cloudflared_token.tunnel_token.token }) } - 将隧道令牌输出到 Terraform 状态文件:
-
在私有网络的主机上安装
cloudflared并运行隧道:-
下载并安装 ↗
cloudflared。 -
运行以下命令:
sudo cloudflared service install <TUNNEL_TOKEN>
-
下载并安装
cloudflared。 -
以管理员身份打开命令提示符。
-
运行以下命令:
cloudflared.exe service install <TUNNEL_TOKEN>
-
下载并安装
cloudflared。 -
打开终端窗口并运行以下命令:
sudo cloudflared service install <TUNNEL_TOKEN>
-
打开终端窗口。
-
运行以下命令:
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>
-
该 IP 范围内的所有内部应用程序和服务现在都已连接到 Cloudflare。
- 在不同的 Cloudflare 隧道之间隔离生产与预发布流量。
- 在另一台主机上添加
cloudflared副本 (Replica),以获得额外的可用性节点。 - 将关键服务(例如私有 DNS、Active Directory 和其他关键系统)的访问分散在不同的隧道上,以便在服务器侧发生故障时减小爆炸半径。
- 在 Cloudflare 仪表板中启用通知以监控隧道健康状况。
- 监控性能指标以识别潜在瓶颈。
- 定期更新
cloudflared。