欢迎访问易策 · ZeroToOne,从0到1的成长与探索!

Cloudflare Tunnel 配置完整步骤

Cloudflare Tunnel 可以帮助你将本地或局域网服务安全地暴露到公网,而无需直接开放服务器端口。本文整理了 Dashboard 图形化配置与命令行配置两种完整步骤,并补充常用排查命令和注意事项,方便你快速上手与后续维护。

前置条件

  • 域名已托管在 Cloudflare(NS 已指向 Cloudflare)
  • 局域网内的 VPS 可访问外网
  • 本地服务已跑起来(例如 http://localhost:8080

方式一:Dashboard 图形化配置

推荐初次使用者优先选择这种方式,配置流程直观,操作也更简单。

1. 进入 Zero Trust 控制台

登录 Cloudflare 后,依次进入左侧 Zero TrustNetworksTunnels

2. 创建 Tunnel

  • 点击 Create a tunnel
  • 选择连接器类型:Cloudflared
  • 输入 Tunnel 名称(如 home-vps)后点击 Save

3. 安装 cloudflared 到你的 VPS

页面会根据你的系统提供安装命令,常见的 Debian/Ubuntu 安装方式如下:

curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb

安装完成后,页面会提供一条带 token 的命令。直接复制执行即可安装并启动服务:

sudo cloudflared service install eyJhIjoi...(你的 token)

执行后回到 Dashboard,正常情况下可以看到 Connector 状态变为 Connected(绿色)。

4. 配置 Public Hostname(公网访问入口)

进入 Tunnel 详情页,打开 Public Hostname 标签,点击 Add a public hostname

字段填写示例SubdomainappDomainyourdomain.com(下拉选择你的域名)Path留空Service TypeHTTPURLlocalhost:8080 保存后,Cloudflare 会自动创建一条 CNAME 记录。等待几秒后,访问 https://app.yourdomain.com 即可将请求转发到 VPS 上的服务。

方式二:命令行配置

这种方式更适合脚本化部署、多服务转发或需要精细管理配置文件的场景。

1. 安装 cloudflared

安装方式与上文相同,这里不再重复。

2. 登录授权

cloudflared tunnel login

执行后浏览器会弹出授权页面,选择要授权的域名。授权完成后,证书会保存到 ~/.cloudflared/cert.pem

3. 创建 Tunnel

cloudflared tunnel create home-vps

执行后会输出 Tunnel UUID,凭证文件会保存在 ~/.cloudflared/.json

4. 编写配置文件

编辑 ~/.cloudflared/config.yml

tunnel:
credentials-file: /root/.cloudflared/.json
ingress:
  - hostname: app.yourdomain.com
    service: http://localhost:8080
  - hostname: api.yourdomain.com
    service: http://localhost:3000
  # 兜底规则,必须放最后
  - service: http_status:404

5. 绑定 DNS 记录

cloudflared tunnel route dns home-vps app.yourdomain.com
cloudflared tunnel route dns home-vps api.yourdomain.com

6. 注册为系统服务并启动

sudo cloudflared service install
sudo systemctl start cloudflared
sudo systemctl enable cloudflared

7. 验证状态

sudo systemctl status cloudflared
cloudflared tunnel list
cloudflared tunnel info home-vps

常用排查命令

# 查看实时日志
sudo journalctl -u cloudflared -f

# 测试配置文件语法
cloudflared tunnel ingress validate

# 测试某个 URL 路由到哪个 service
cloudflared tunnel ingress rule https://app.yourdomain.com

注意事项

  1. 凭证文件 .json 是核心密钥,务必妥善备份;一旦泄露,等于放行整个 tunnel。
  2. service 字段应填写内网地址,例如 http://localhost:porthttp://192.168.x.x:port
  3. HTTPS 后端 可写为 https://localhost:443;如果使用自签证书,可加 originRequest: { noTLSVerify: true }
  4. TCP/SSH 等非 HTTP 服务 可写为 service: ssh://localhost:22,客户端再通过 cloudflared access 连接。
  5. 修改 config.yml 后,需要执行 sudo systemctl restart cloudflared 才会生效。

总体来看,Cloudflare Tunnel 既适合通过 Dashboard 快速完成基础配置,也适合用命令行方式管理多服务和自动化部署。只要按步骤完成授权、Tunnel 创建、DNS 绑定和服务启动,就可以稳定地将本地服务安全地对外提供访问。

评论