Cloudflared 隧道配置
这页讲什么
这页只讲 Cloudflared 场景下最容易让人卡住的部分:
- fknock 后台里到底要填什么
- Cloudflare Dashboard 里要怎么建 Tunnel
- 公网端的服务协议为什么会分成
HTTP localhost:7999和HTTPS localhost:7999 - 启用了 HTTPS 回源后,什么时候还要处理证书校验
先明确:fknock 后台只保存什么
fknock 在后台里只要求你保存:
Tunnel Token
也就是说,Cloudflare Tunnel 的“公网域名”“回源协议”“Public Hostname”这些细节,不是在 fknock 后台里完成,而是在 Cloudflare Dashboard 里完成。
第 1 步:准备 Cloudflared 资源
路径:系统设置 → Cloudflared
先确保:
- 资源已经下载完成
- 状态显示已就绪
然后再回到:
内网穿透 → Cloudflared
第 2 步:在 Cloudflare Dashboard 创建 Tunnel
推荐路径:
- 登录 Cloudflare Zero Trust Dashboard
- 进入
Networks → Tunnels - 新建一个
Cloudflared类型的 Tunnel - 进入安装 / 连接页面
- 复制命令里的
--token后面的长字符串
你甚至可以把整段安装命令直接粘贴到 fknock 页面,系统会尽量自动提取出 Token。
第 3 步:把 Token 填回 fknock
路径:内网穿透 → Cloudflared
操作顺序:
- 粘贴 Token
- 点击保存
- 点击启动
- 观察运行状态和日志
如果启动成功,说明:
- 本机的
cloudflared进程已经和 Cloudflare Tunnel 建立连接
第 4 步:在 Cloudflare 侧配置 Public Hostname
这一步才决定“公网域名访问后,最终回源到本机的什么地址”。
最常见的两种配置是:
情况一:fknock 已启用证书
如果你的 fknock 7999 已经启用了 HTTPS,推荐把服务配置成:
HTTPSlocalhost:7999
也就是:
https://localhost:7999
情况二:fknock 还没有启用证书
如果你的 fknock 7999 目前还只是明文 HTTP,那就配置成:
HTTPlocalhost:7999
也就是:
http://localhost:7999
这也是为什么在教程里会强调:
Cloudflared 公网端的服务协议,取决于 fknock 本机
7999当前到底跑的是 HTTP 还是 HTTPS。
如果我给 fknock 配的是自签证书,会怎样
这是 Cloudflared 场景里最常见的坑之一。
如果你把服务配置成:
https://localhost:7999
但 fknock 提供的是:
- 自签证书
- 或证书域名和
localhost不匹配
那么 cloudflared 可能会因为无法验证 origin 证书而回源失败。
遇到这种情况,你通常有 3 种思路:
- 在 Cloudflare 的 Origin Request 里关闭 TLS 校验
- 指定正确的
Origin Server Name - 直接改回
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 个:
- 你把回源地址写成了
https://localhost:7999,但证书实际上签给了别的域名 - 你启用了 HTTPS 回源,但没有为 cloudflared 指定正确的
Origin Server Name - 证书本身就是自签或不被当前链路信任
遇到这种日志时,优先按下面顺序判断:
- 我当前到底是想让 cloudflared 校验
localhost,还是某个真实域名 - 证书里的主机名是否真的覆盖了它
- 如果只是想先跑通链路,是否应该暂时改回
http://localhost:7999
Public Hostname 应该怎么规划
建议每个 Tunnel 公网域名只承担“把请求送到 fknock”的职责。
真正的服务拆分继续交给 fknock 的路径映射完成,例如:
https://home.example.com/alisthttps://home.example.com/photoshttps://home.example.com/nav
不要在 Cloudflare 侧再重复做一套和 fknock 冲突的路径转发逻辑。
常见排错
已启动,但公网域名打不开
优先检查:
- Tunnel 是否真的在线
- Public Hostname 是否绑定到了正确域名
- 服务地址是不是写成了正确的
localhost:7999 - fknock 本机
7999是否已经可用
走 https://localhost:7999 时总报 TLS 错误
优先检查:
- 证书是否能被 cloudflared 信任
- 证书域名是否和回源主机名匹配
- 日志里
not xxx的这个主机名到底是不是你真正想校验的目标 - 是否需要启用
No TLS Verify
登录页能开,但子路径服务打不开
这通常不是 Cloudflared 本身的问题,而更可能是:
- 映射没配好
- 默认服务被误改,不再是飞牛 OS
- 某条映射需要
去除前缀、重写 HTML或根目录模式
