本文包含联盟推广链接——如您点击购买,我们可能获得佣金,您无需支付额外费用。· 编辑政策
Cloudflare Tunnel 配置指南

Cloudflare · 安全 · VPS 指南

Cloudflare Tunnel 完全指南 2026:VPS 免费安全隧道,无需开放端口

作者:CloudPicked 评测团队 · 更新于 2026 年 9 月 · 阅读约 12 分钟

简要摘要:Cloudflare Tunnel(cloudflared)让您通过 Cloudflare 网络的仅出站连接安全暴露 VPS 或家庭服务器上的服务——无需开放入站端口,无需公网 IP,基本功能完全免费。

目录

  1. 什么是 Cloudflare Tunnel?
  2. 工作原理
  3. 主要优势
  4. 前提条件
  5. 在 Linux 上安装 cloudflared
  6. 逐步创建隧道
  7. 配置 config.yml
  8. 常见使用场景
  9. Cloudflare Tunnel 与 VPN 对比
  10. 需了解的限制
  11. 常见问题解答

什么是 Cloudflare Tunnel?

Cloudflare Tunnel(前身为 Argo Tunnel)是 Cloudflare 的一项服务,允许您通过 Cloudflare 的全球网络暴露服务器上运行的服务——Web 应用、SSH 服务器、远程桌面——而无需配置入站防火墙规则或拥有公网 IP 地址。

其核心是一个名为 cloudflared 的轻量级守护进程,安装在您的服务器上。它创建仅出站的加密连接到 Cloudflare 数据中心。Cloudflare 随后使用这些连接将流量代理到您的服务。最终实现通过单条出站连接进行双向流量传输。

这使 Cloudflare Tunnel 非常适合以下场景:

Cloudflare Tunnel 是 Cloudflare Zero Trust(原 Cloudflare for Teams)的组成部分,基本使用免费——数据截至 2026 年 9 月,请在 cloudflare.com 核实最新条款。

工作原理

1. cloudflared 守护进程

安装在服务器上的 cloudflared 守护进程使用 Anycast 路由创建持久的仅出站连接到 Cloudflare 全球网络——自动连接到最近的数据中心。这些连接经过加密,完全不需要入站防火墙规则。

2. 隧道 UUID

每个隧道都有唯一 UUID,作为源服务器与 Cloudflare 之间的逻辑链路。可在单个隧道中运行多个 cloudflared 进程(连接器)实现高可用性。

3. 流量路由

当请求到达您的域名(如 app.example.com)时,Cloudflare 接收请求,通过隧道路由到服务器上的 cloudflared 守护进程,后者将请求转发到本地服务(如 localhost:3000),响应沿相同路径返回。

安全说明:所有流量均通过 cloudflared 持有的隧道凭证进行身份验证,防止未经授权的连接进入隧道。

主要优势

优势详情
无需开放入站端口大幅减少攻击面——可关闭所有入站防火墙规则
无需公网 IP在 NAT、CGNAT 或不提供静态 IP 的 ISP 环境下均可使用
隐藏源 IP攻击者无法获知真实服务器 IP,内置 DDoS 防护
自动 TLSCloudflare 自动管理 SSL/TLS 证书,无需 Certbot
基本使用免费HTTP 隧道在 Cloudflare 免费计划下零成本可用
全球 Anycast 网络300+ 数据中心,覆盖全球,低延迟访问
零信任就绪可添加 Access 策略,在访问服务前强制身份验证

前提条件

无需准备:静态 IP、公网 IP、入站防火墙规则或 Let's Encrypt 证书。

在 Linux 上安装 cloudflared(Ubuntu/Debian)

方式一:通过 apt 仓库安装(推荐)

# 添加 Cloudflare GPG 密钥
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg > /dev/null

# 添加仓库
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list

# 更新并安装
sudo apt update && sudo apt install cloudflared -y

# 验证版本
cloudflared --version

方式二:直接下载二进制文件

# 适用于 Linux x86_64
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

RHEL/CentOS 系统

sudo yum install cloudflared

逐步创建隧道

第一步:向 Cloudflare 进行身份验证

cloudflared tunnel login

此命令将打开浏览器,提示您登录 Cloudflare 账户并选择要使用的域名。完成后,cloudflared 将凭证保存至 ~/.cloudflared/cert.pem

第二步:创建新隧道

cloudflared tunnel create my-tunnel

my-tunnel 替换为您偏好的名称。输出结果包含隧道 UUID(如 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)和凭证文件路径,请记录两者。

第三步:路由 DNS

cloudflared tunnel route dns my-tunnel app.example.com

此命令在 Cloudflare DNS 中自动创建 CNAME 记录,将 app.example.com 指向隧道端点(启用 Cloudflare 代理橙色云)。

第四步:创建配置文件

mkdir -p ~/.cloudflared
nano ~/.cloudflared/config.yml

第五步:运行隧道

cloudflared tunnel run my-tunnel

配置 config.yml

单个 Web 应用(HTTP)

tunnel: <您的隧道-UUID>
credentials-file: /root/.cloudflared/<您的隧道-UUID>.json

ingress:
  - hostname: app.example.com
    service: http://localhost:3000
  - service: http_status:404

多个服务

tunnel: <您的隧道-UUID>
credentials-file: /root/.cloudflared/<您的隧道-UUID>.json

ingress:
  - hostname: app.example.com
    service: http://localhost:3000
  - hostname: api.example.com
    service: http://localhost:8080
  - hostname: dashboard.example.com
    service: http://localhost:8443
    originRequest:
      noTLSVerify: true
  - service: http_status:404

配置为 systemd 服务(开机自启)

# 安装 systemd 服务
sudo cloudflared service install

# 启动并设置开机自启
sudo systemctl start cloudflared
sudo systemctl enable cloudflared

# 查看状态
sudo systemctl status cloudflared

常见使用场景

1. 暴露 Web 应用或 API

最常见用例:在 localhost 运行任何 Web 服务器(Nginx、Apache、Node.js、Python Flask 等),通过 cloudflared 经您的域名暴露。

ingress:
  - hostname: myapp.example.com
    service: http://localhost:3000
  - service: http_status:404

2. 通过浏览器 SSH(无需开放 22 端口)

结合 Cloudflare Access,Cloudflare Tunnel 支持基于浏览器的 SSH 访问,完全无需向公网开放 22 端口。

ingress:
  - hostname: ssh.example.com
    service: ssh://localhost:22
  - service: http_status:404

用户通过 Cloudflare Access 身份验证后,使用以下命令连接:cloudflared access ssh --hostname ssh.example.com

3. 远程桌面(RDP)

ingress:
  - hostname: rdp.example.com
    service: rdp://localhost:3389
  - service: http_status:404

4. 私有网络(零信任)

启用 warp-routing,让 Cloudflare WARP 客户端访问私有网络:

tunnel: <UUID>
credentials-file: /root/.cloudflared/<UUID>.json
warp-routing:
  enabled: true

5. 快速暴露开发环境

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

无需配置文件,即时生成临时公网 URL,适合 webhook 测试或演示展示。

Cloudflare Tunnel 与传统 VPN 对比

特性Cloudflare TunnelVPN(WireGuard/OpenVPN)
需要公网 IP不需要需要(或 DDNS)
开放入站端口不需要需要(UDP 51820/TCP 1194)
SSL/TLS自动手动配置
费用免费(基本使用)VPS/服务器成本
DDoS 防护内置(Cloudflare)取决于提供商
零信任/Access内置支持需额外组件
延迟低(Anycast)取决于服务器位置
复杂度低(几条命令)较高(配置较多)
全网络路由支持(warp-routing)支持(分隧道)

需了解的限制

总结

Cloudflare Tunnel 是在 VPS 或家庭服务器上安全暴露服务的强大免费工具。通过几条命令即可获得自动 SSL、DDoS 防护和零防火墙配置。无论是开发者、系统管理员还是家庭服务器爱好者,都是极佳选择。

常见问题解答

Cloudflare Tunnel 是免费的吗?

基本使用免费,只需 Cloudflare 账户(免费计划)且域名使用 Cloudflare Nameserver。数据截至 2026 年 9 月,请以 cloudflare.com 最新信息为准。

与 VPN 有何不同?

Cloudflare Tunnel 使用仅出站连接——无需开放入站端口,无需公网 IP。传统 VPN 需要两者。

需要公网 IP 吗?

不需要。cloudflared 自动向外连接 Cloudflare 网络,非常适合 NAT 或 CGNAT 后面的服务器。

支持哪些协议?

支持 HTTP/HTTPS(Web 应用)、SSH、RDP(远程桌面)以及其他 TCP 协议。

支持哪些 Linux 发行版?

支持 Ubuntu、Debian、RHEL/CentOS、Arch Linux,以及 macOS(Homebrew)和 Windows。

cloudflared 崩溃会怎样?

隧道将中断。建议将其安装为带 Restart=always 配置的 systemd 服务以实现自动恢复。

可以与任意托管服务商配合使用吗?

可以。cloudflared 可在任何支持 SSH 访问和出站互联网连接的服务器或 VPS 上运行,不受托管服务商限制。

寻找可靠的泰国主机?

CloudPicked 编辑首选 AsiaGB.com——泰国本地主机,24 小时支持,DirectAdmin 面板,价格实惠。

访问 AsiaGB →