Skip to content

Cloudflared 隧道配置

这页讲什么

这页只讲 Cloudflared 场景下最容易让人卡住的部分:

  1. fknock 后台里到底要填什么
  2. Cloudflare Dashboard 里要怎么建 Tunnel
  3. 公网端的服务协议为什么会分成 HTTP localhost:7999HTTPS localhost:7999
  4. 启用了 HTTPS 回源后,什么时候还要处理证书校验

先明确:fknock 后台只保存什么

fknock 在后台里只要求你保存:

  • Tunnel Token

也就是说,Cloudflare Tunnel 的“公网域名”“回源协议”“Public Hostname”这些细节,不是在 fknock 后台里完成,而是在 Cloudflare Dashboard 里完成。

第 1 步:准备 Cloudflared 资源

路径:系统设置 → Cloudflared

先确保:

  1. 资源已经下载完成
  2. 状态显示已就绪

然后再回到:

  • 内网穿透 → Cloudflared

第 2 步:在 Cloudflare Dashboard 创建 Tunnel

推荐路径:

  1. 登录 Cloudflare Zero Trust Dashboard
  2. 进入 Networks → Tunnels
  3. 新建一个 Cloudflared 类型的 Tunnel
  4. 进入安装 / 连接页面
  5. 复制命令里的 --token 后面的长字符串

你甚至可以把整段安装命令直接粘贴到 fknock 页面,系统会尽量自动提取出 Token。

第 3 步:把 Token 填回 fknock

路径:内网穿透 → Cloudflared

操作顺序:

  1. 粘贴 Token
  2. 点击保存
  3. 点击启动
  4. 观察运行状态和日志

如果启动成功,说明:

  • 本机的 cloudflared 进程已经和 Cloudflare Tunnel 建立连接

第 4 步:在 Cloudflare 侧配置 Public Hostname

这一步才决定“公网域名访问后,最终回源到本机的什么地址”。

最常见的两种配置是:

情况一:fknock 已启用证书

如果你的 fknock 7999 已经启用了 HTTPS,推荐把服务配置成:

  • HTTPS
  • localhost:7999

也就是:

  • https://localhost:7999

情况二:fknock 还没有启用证书

如果你的 fknock 7999 目前还只是明文 HTTP,那就配置成:

  • HTTP
  • localhost:7999

也就是:

  • http://localhost:7999

这也是为什么在教程里会强调:

Cloudflared 公网端的服务协议,取决于 fknock 本机 7999 当前到底跑的是 HTTP 还是 HTTPS。

如果我给 fknock 配的是自签证书,会怎样

这是 Cloudflared 场景里最常见的坑之一。

如果你把服务配置成:

  • https://localhost:7999

但 fknock 提供的是:

  • 自签证书
  • 或证书域名和 localhost 不匹配

那么 cloudflared 可能会因为无法验证 origin 证书而回源失败。

遇到这种情况,你通常有 3 种思路:

  1. 在 Cloudflare 的 Origin Request 里关闭 TLS 校验
  2. 指定正确的 Origin Server Name
  3. 直接改回 http://localhost:7999

对普通用户来说,如果你只是先把链路跑通,最简单的决策通常是:

  • 有可信 HTTPS 回源能力:用 https://localhost:7999
  • 没准备好 HTTPS 回源细节:先用 http://localhost:7999

日志里出现 certificate is valid for ... not ... 应该怎么理解

这是最近更容易定位的一类问题。

如果日志里出现类似:

  • certificate is valid for a.example.com, not localhost

它真正表达的不是“Tunnel 启不来”,而是:

  • cloudflared 正在按某个主机名校验证书
  • 但源站证书里可用的主机名并不包含它

最常见的原因有 3 个:

  1. 你把回源地址写成了 https://localhost:7999,但证书实际上签给了别的域名
  2. 你启用了 HTTPS 回源,但没有为 cloudflared 指定正确的 Origin Server Name
  3. 证书本身就是自签或不被当前链路信任

遇到这种日志时,优先按下面顺序判断:

  1. 我当前到底是想让 cloudflared 校验 localhost,还是某个真实域名
  2. 证书里的主机名是否真的覆盖了它
  3. 如果只是想先跑通链路,是否应该暂时改回 http://localhost:7999

Public Hostname 应该怎么规划

建议每个 Tunnel 公网域名只承担“把请求送到 fknock”的职责。

真正的服务拆分继续交给 fknock 的路径映射完成,例如:

  • https://home.example.com/alist
  • https://home.example.com/photos
  • https://home.example.com/nav

不要在 Cloudflare 侧再重复做一套和 fknock 冲突的路径转发逻辑。

常见排错

已启动,但公网域名打不开

优先检查:

  1. Tunnel 是否真的在线
  2. Public Hostname 是否绑定到了正确域名
  3. 服务地址是不是写成了正确的 localhost:7999
  4. fknock 本机 7999 是否已经可用

https://localhost:7999 时总报 TLS 错误

优先检查:

  1. 证书是否能被 cloudflared 信任
  2. 证书域名是否和回源主机名匹配
  3. 日志里 not xxx 的这个主机名到底是不是你真正想校验的目标
  4. 是否需要启用 No TLS Verify

登录页能开,但子路径服务打不开

这通常不是 Cloudflared 本身的问题,而更可能是:

  1. 映射没配好
  2. 默认服务被误改,不再是飞牛 OS
  3. 某条映射需要 去除前缀重写 HTML根目录模式

相关阅读

QQ群:1081609274