Skip to content

Cloudflare Tunnel 内网穿透教程(Windows) ​

Cloudflare Tunnel 可以在不开放服务器入站端口、不需要公网 IP 的情况下,把本地运行的 Web 服务、远程桌面等安全地暴露到互联网上。所有流量经由 Cloudflare 边缘网络转发,自带 CDN、DDoS 防护和访问控制能力。

本教程使用 云端管理(Token 模式),全程在 Cloudflare Dashboard 完成隧道创建和路由配置,适合 Windows 环境快速上手。

前提条件 ​

  • 一个托管在 Cloudflare 的域名(NS 已指向 Cloudflare)。
  • Windows 10 / 11 或 Windows Server 2016 及以上版本。
  • 管理员权限的命令提示符(CMD)或 PowerShell。

为什么需要域名

Cloudflare Tunnel 通过一个公有主机名(如 app.yourdomain.com)来对外暴露本地服务。这个主机名必须是你的 Cloudflare 域名下的子域名,Cloudflare 会自动创建对应的 DNS 记录指向隧道。

第一步:创建隧道并获取 Token ​

  1. 登录 Cloudflare Zero Trust Dashboard。
  2. 在左侧导航栏进入 网络 → Tunnels,点击 创建隧道。
  3. 选择 Cloudflared 连接器,输入隧道名称(例如 xzyapp),点击保存。
  4. 在“安装并运行”页面,操作系统选择 Windows,架构选择 64-bit。
  5. 页面会显示一条类似下面的命令,这就是你的 Token:

创建隧道并获取 Token

txt
cloudflared.exe service install eyJhIjoi**************bSJ9

安全提示

这条 Token 授予了对 Cloudflare 账户下该隧道的访问权限。不要公开分享,截图时务必打码。一旦泄露,可以在隧道详情页点击 刷新令牌 使旧 Token 立即失效。

复制这串完整的 Token 后,点击取消或关闭页面,进入下一步。

第二步:在 Windows 上安装并启动服务 ​

2.1 下载 cloudflared ​

从 Cloudflare 官方下载最新的 Windows 可执行文件:

cloudflared-windows-amd64.msi

下载后直接运行 .msi 安装程序,按默认选项完成安装即可。

2.2 以管理员身份安装服务 ​

安装完成后,以管理员身份打开命令提示符(在开始菜单搜索“CMD”,右键选择“以管理员身份运行”),执行:

bash
cloudflared.exe service install 你的TOKEN

将 你的TOKEN 替换为上一步复制的完整字符串。

执行成功后,cloudflared 会注册为 Windows 系统服务,并随系统启动自动运行。

2.3 验证连接状态 ​

回到 Cloudflare Dashboard 的 Tunnels 列表页面。等待片刻,你刚创建的隧道(如 xzyapp)状态应该会从“非活动/离线”变为健康/已连接。

Tunnels 列表状态

你也可以在 Windows 服务列表(services.msc)中看到名为 Cloudflared agent 的服务,确认其状态为“正在运行”。

后续管理服务

如需手动启动、停止或重启 cloudflared 服务,可在管理员 CMD 中执行:

bash
# 停止
sc stop cloudflared

# 启动
sc start cloudflared

# 重启
sc stop cloudflared && sc start cloudflared

第三步:添加路由,发布应用程序 ​

隧道连接成功后,需要告诉 Cloudflare 哪个公网域名对应本地的哪个服务。这就是“已发布应用程序”路由。

  1. 在 Tunnels 列表中点击你刚创建的隧道名称(如 xzyapp),进入详情页。
  2. 切换到 路由 标签页。

进入隧道路由标签页

  1. 点击 添加路由。
  2. 在路由类型选择弹窗中,选择 已发布应用程序。这一选项对应“公有主机名”路由,用于将本地 HTTP/HTTPS 服务暴露到互联网。

选择已发布应用程序

  1. 填写路由信息:
字段填写内容示例
子域你希望使用的二级域名前缀app
域下拉选择你的 Cloudflare 域名yourdomain.com
路径留空即可(除非需要按路径分流)—
服务 → 类型本地服务协议HTTP
服务 → URL本地服务的地址和端口http://localhost:8080
  1. 点击 添加路由 保存。

添加完成后,Cloudflare 会自动在 DNS 中创建一条 CNAME 记录,将 app.yourdomain.com 指向该隧道的 cfargotunnel.com 子域,无需手动配置 DNS。

现在,在浏览器中访问 https://app.yourdomain.com,请求就会经由 Cloudflare 网络,通过隧道转发到你本机的 localhost:8080。

进阶:同时发布多个本地服务 ​

一个隧道可以承载多个独立的应用程序。重复第三步,为每个本地服务添加一条“已发布应用程序”路由即可:

公网主机名本地服务
app.yourdomain.comhttp://localhost:8080
nas.yourdomain.comhttp://localhost:5000
api.yourdomain.comhttp://localhost:3000

每条路由都会生成独立的 DNS 记录,互不干扰。在 Tunnel 列表页的 路由 列中,可以直观地看到每个隧道关联的应用数量。

常见问题排查 ​

访问域名返回 502 / 1033 错误 通常表示 cloudflared 没有正确连接到 Cloudflare,或者本地服务未启动。先确认 Windows 服务 Cloudflared agent 正在运行,再检查本地服务是否监听在配置的端口上。

修改配置后不生效 通过 Dashboard 修改路由后,cloudflared 通常会自动拉取新配置。如果长时间未同步,在管理员 CMD 中重启服务即可:sc stop cloudflared && sc start cloudflared。

如何更换 Token 如果 Token 泄露或需要轮换,进入隧道详情页,在右侧点击 刷新令牌,旧 Token 会立即失效。随后用新 Token 重新执行 cloudflared.exe service install 新TOKEN,并重启服务。

小结 ​

本教程的完整流程可以概括为:

Dashboard 创建隧道 → 复制 Token → Windows 管理员 CMD 安装服务 → 添加“已发布应用程序”路由 → 通过公网域名访问

整个过程中,本地不需要开放任何入站端口,也不需要公网 IP。所有对外暴露的服务都经过 Cloudflare 的安全层,后续还可以在此基础上叠加 Access 访问策略、WAF 规则等进一步收紧权限。

VitePress Vue.js 3.5+ Node.js 24.04 LTS pnpm Nginx Released under the MIT License.