原标题:Windows 10 x64 配置 Cloudflare Tunnel 教程

前置条件

  • 已注册 Cloudflare 账号,且域名已托管在 Cloudflare(DNS 已切换到 Cloudflare)
  • Windows 10 x64 系统,具有管理员权限
  • 本地有一个需要暴露的服务(如某个 web 应用,监听在 localhost:端口)

一、在 Cloudflare 面板创建 Tunnel

  1. 登录 Cloudflare Zero Trust 控制台
  2. 左侧菜单进入 Networks → Tunnels
  3. 点击 Create a tunnel
  4. 选择 Cloudflared 连接器类型
  5. 给 Tunnel 起一个名字(如 my-win10-tunnel),点击 Save tunnel

二、下载并安装 cloudflared

  1. 在创建流程的下一步,Cloudflare 会展示针对不同系统的安装命令,选择 Windows

  2. 页面会提供 MSI 安装包下载链接,(流程中有下载地址)例如:

    <https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi>

    下载到本地。

  3. 双击安装,或以管理员身份打开 PowerShell 或 CMD,进入下载目录,执行安装:

    msiexec /i cloudflared-windows-amd64.msi
  4. 安装完成后,通过带管理员的终端配置带token的命令。页面通常会给出一条自动生成的、带 token 的命令,用来把 cloudflared 注册为 Windows 服务并连接到你的账号,格式类似:

    cloudflared service install <你的TOKEN>

    在管理员终端执行该命令。

  5. 执行成功后,可以用以下命令确认服务已安装并运行:

    sc query cloudflared

    状态应为 RUNNING。

  6. 回到 Cloudflare 面板的 Tunnel 页面,稍等片刻应显示该 Tunnel 状态为 Healthy / Connected。

三、配置 Public Hostname(应用程序映射)

  1. 在 Tunnel 详情页,切换到 Public Hostname 标签
  2. 点击 Add a public hostname
  3. 填写:
    • Subdomain:如 app
    • Domain:选择你的域名
    • Path(可选):留空表示根路径
    • Service Type:选择 HTTP 或 HTTPS(取决于本地服务)
    • URL:填 localhost:端口(如 localhost:8080)
  4. 点击 Save hostname

保存后,该子域名会自动在 Cloudflare DNS 中生成一条 CNAME 记录,指向你的 Tunnel。

四、配置 Access(邮箱验证)

  1. 在 Zero Trust 控制台,进入 Access → Applications
  2. 点击 Add an application,类型选择 Self-hosted
  3. 填写应用名称,Application domain 选择你刚配置的子域名(如 app.yourdomain.com)
  4. 进入 Policies 步骤,点击 Add a policy
    • Policy name:任意,如 email-allow
    • Action:Allow
    • Session duration:按需
    • 在 Include 规则中选择 Emails,填入允许访问的邮箱地址(可添加多个)
  5. 保存策略,完成应用创建

五、验证

  1. 在浏览器访问 https://app.yourdomain.com
  2. 应会先跳转到 Cloudflare Access 登录页,要求输入邮箱
  3. 输入邮箱后,Cloudflare 会发送一次性验证码(PIN)到该邮箱
  4. 输入验证码后,即可跳转到你本地服务的页面

注意

  • Token 泄露风险:cloudflared service install <TOKEN> 中的 token 具有连接权限,不要在日志、截图或公共仓库中泄露。
  • 本地服务暴露面:即使有 Access 邮箱验证,本地服务本身如果存在漏洞,仍可能被已授权账号滥用,建议本地服务也做好基础加固。
  • DNS 记录冲突:如果该子域名此前已有 A/CNAME 记录,添加 Public Hostname 时可能报错,需要先清理旧记录。
  • 服务权限:cloudflared 作为 Windows 服务运行时权限较高,建议定期检查 cloudflared 版本更新,避免使用过旧版本。
  • Access 策略遗漏:如果邮箱列表配置不当(如误开放为“允许所有人”),会导致未授权访问,建议保存后用无痕窗口测试一次。
  • 服务卸载:如需移除,执行 cloudflared service uninstall,并在面板中(或msi程序右键)删除对应 Tunnel 和 Public Hostname,避免残留 DNS 记录。