跳到主要内容

Cloudflare 反向代理

1. 概述

Cloudflare Tunnel 可通过域名发布 PicoKVM 或兼容 PLC 的本地 Web 管理界面,不需要在本地路由器上开放入站端口。PicoKVM 和 PLC 内置 cloudflared;填入 Tunnel Token 后,设备上的服务会主动连接 Cloudflare 并建立隧道。

本文使用以下占位符:

项目示例
域名<DOMAIN>
公网访问域名device.<DOMAIN>
设备本地服务地址http://127.0.0.1:80
合规用途

仅使用本文方法发布本人或已获授权管理的设备界面,并在共享公网访问域名前配置访问控制。不要将该方法用于未授权访问、绕过网络管理、代理第三方公开服务或其他违法违规用途。

2. 准备域名

Cloudflare Tunnel 只要求域名由当前 Cloudflare 账号管理,对域名的注册平台没有额外限制。可以使用支持自定义 NS 服务器的免费域名,也可以在 Cloudflare RegistrarNameSilo 或其他域名注册商购买域名。

免费域名

使用免费域名时,需要确认自己拥有该域名的 DNS 管理权限,并且可以修改 NS 服务器。仅提供子域名但不允许修改 NS 服务器的免费服务,通常无法按本文方式添加到 Cloudflare。

如果域名不是在 Cloudflare 注册,按以下步骤将其托管到 Cloudflare DNS:

  1. 登录 Cloudflare 控制台

  2. 点击 "Add a domain",输入 <DOMAIN>

  3. 按向导添加域名和 DNS 记录。

  4. 回到域名提供商的控制台,将域名的 NS 服务器修改为 Cloudflare 分配的服务器。

  5. 等待 Cloudflare 中的域名状态变为可用。

3. 创建 Cloudflare Tunnel

  1. 打开 Cloudflare 控制台,进入 "Networking" > "Tunnels"。

  2. 点击 "Create a tunnel",输入隧道名称,例如 remote-device

  3. 在连接器设置页面选择 Debian 选项,使页面显示连接器命令。设备已经内置 cloudflared,不需要手动执行该命令。

  4. 复制命令中 --token 后面的字符串,将其粘贴到 PicoKVM 或 PLC 的 Cloudflare Tunnel Token 配置项中,然后启动设备内置的 cloudflared 服务。

  5. 连接器启动后,Cloudflare 控制台中应显示隧道已连接。

4. 添加公网域名

  1. 打开刚创建的 Tunnel,进入 "Routes"。

  2. 点击 "Add route",选择 "Published application"。

  3. 按下表填写:

    字段
    Subdomaindevice
    Domain<DOMAIN>
    TypeHTTP
    URL127.0.0.1:80

  4. 保存配置。

保存后,Cloudflare 会自动创建对应的代理 DNS 记录。外部访问地址为:

https://device.<DOMAIN>

5. 验证远程访问

  1. 在目标设备局域网外的设备上打开:

    https://device.<DOMAIN>
  2. 登录目标设备的 Web 管理界面。

如果无法打开页面,按以下项目检查:

  • PicoKVM 或 PLC 内置的 cloudflared 服务是否已经启动,以及 Tunnel Token 是否正确。
  • Cloudflare Tunnel 连接器是否在线。
  • Published application route 是否使用 HTTP,并指向 127.0.0.1:80
  • 设备本地的 Web 管理服务是否正在监听 80 端口。
  • Cloudflare 中域名状态是否已生效。

6. 参考资料