飞牛 OS Cloudflare Tunnel 可视化配置:无公网 IP 安全穿透内网服务

摘要
飞牛 OS 应用市场的 Cloudflare Tunnel 客户端实操:填 Account ID 与 API Token 即可穿透内网服务,含 Token 权限、主机名映射与单隧道限制。
飞牛 OS Cloudflare Tunnel 可视化配置:无公网 IP 安全穿透内网服务
家里 NAS 服务一大堆,可运营商不给公网 IP,端口映射又等于把门敞开。Cloudflare Tunnel 是反向的——由 NAS 主动向 Cloudflare 建一条加密隧道,外面的人访问域名,请求顺着隧道回到你家里,全程一个端口都不用开。
飞牛 OS 的应用市场里有一个可视化的 Tunnel 客户端,不用碰命令行、不用写 config.yml。本文按真实界面走一遍。

一、先搞清楚原理,再动手
传统穿透是「外面的请求打进你家路由器的某个端口」,所以必须要有公网 IP,还要在防火墙和路由器上各开一次洞。
Tunnel 反过来:
因为连接方向是「由内向外」,所以:不需要公网 IP、不需要端口转发、路由器防火墙不用改、DNS 记录由 Cloudflare 自动建。
二、前置准备
项目 | 要求 |
|---|---|
飞牛 OS 设备 | 已正常运行,能访问应用市场 |
Cloudflare 账号 | 已注册并登录 |
托管域名 | 至少一个域名已托管在 Cloudflare(Tunnel 必须挂在你的域名下) |
内网服务 | 想暴露的那个服务已在 NAS 上跑起来(知道端口) |
三、第一步:创建一对凭证
打开 Cloudflare 控制台,拿两个值。
1. Account ID
进入任意域名的概览页,右侧「账户」区域点「账户 ID」复制
或者直接看地址栏:
https://dash.cloudflare.com/[Account ID]/[你的域名],中间那段就是
2. API Token(权限必须严格匹配)
右上角头像 → 我的个人资料 → API 令牌 → 创建令牌,用「自定义创建」,权限勾这四项:
资源类型 | 权限 | 操作 |
|---|---|---|
账户 | Cloudflare Tunnel | 编辑 |
账户 | Cloudflare Tunnel | 读取 |
区域 | DNS | 编辑 |
区域 | DNS | 读取 |
有效期建议选「永久」或足够长的时间。创建后立刻复制保存——Token 只显示一次。
🔒 别用 Global API Key。Token 按最小权限授予,泄漏了也只影响 Tunnel 和 DNS 这两块。
四、第二步:在飞牛应用市场安装
打开飞牛 OS 应用市场,搜索 Cloudflare Tunnel
点安装,等部署完成后打开应用
应用的页面结构(左侧导航)如下,后面每一步都会用到:
页面 | 干什么 |
|---|---|
首页 | 看当前配置、连接状态、基础运行信息,含 Tunnel 名称、连接状态(健康 / 警告 / 非活跃 / 错误)与最近日志摘要 |
系统配置 | 填 Account ID 与 API Token,并测试配置是否可用 |
Tunnel 列表 | 创建、连接、断开、删除 Tunnel |
API 凭证 | 给脚本或自动化工具发访问凭证(App ID + App Key,App Key 只在创建时显示一次) |
运行日志 | 最近 200 条记录,用于定位连接与 DNS 问题(保存在内存中,应用重启即清空) |
关于 | 应用说明与组件版本 |
五、第三步:填配置
进入 系统配置
依次填入:
Account ID:第三步拿到的账户 ID
API Token:第三步创建的那串 Token
点「测试配置」/「保存配置」,应用会向 Cloudflare 校验凭证并拉取你账号下的隧道列表
校验通过后,Tunnel 名称、连接状态就会出现在 首页 上。
六、第四步:创建 Tunnel
进入 Tunnel 列表 → 「新建隧道」
输入隧道名(如
fnnas-web)→ 确定选中它,点「连接」(状态会变成「运行中 / Active」)
⚠️ 一次只能连接一条 Tunnel。想换一条,得先把当前这条断开。这是这个客户端的设计,不是 Bug——它内部只跑一个
cloudflared进程。
七、第五步:把内网服务映射出去
在 Tunnel 列表点该隧道右侧的「配置」
添加一条「公共主机名」,四个字段:
字段 | 填什么 | 例子 |
|---|---|---|
子域名 | 想用的前缀 |
|
域名 | 你托管在 Cloudflare 的域名 |
|
服务类型 | 协议 | HTTP / HTTPS / TCP / SSH |
目标 URL | 内网服务地址 |
|
保存,隧道会自动生效
一个 Tunnel 可以挂多个主机名,共用同一条通道,不需要为每个服务单独建隧道:
访问地址 | 指向 |
|---|---|
| NAS 面板 |
| Home Assistant |
| AI 控制台 |
DNS 不用手动加——Cloudflare 会自动创建一条 CNAME 指向 [tunnel-id].cfargotunnel.com。
八、第六步:验证
首页 的连接状态显示「运行中 / Active」,「已运行」在走秒
等 1–2 分钟让 DNS 生效
用手机 4G(不要连家里 Wi-Fi,否则测不出穿透是否真的通)访问
https://nas.example.com看到 HTTPS 小锁说明证书已自动签发
第 3 步是关键:同一网络下访问成功不能证明穿透可用,一定要用外网。
九、安全建议:暴露出去只是第一步
Tunnel 让服务「能访问」了,但能访问 ≠ 该被所有人访问。三件事按顺序做:
Tunnel 层收口:只映射真正需要的服务,数据库、管理后台这类不要穿出去
加 Zero Trust Access:在 Cloudflare Zero Trust 里给该主机名加访问策略,限定邮箱 / 身份提供方,未授权者连登录页都看不到
服务自身加固:SSH 一定要配密钥或证书,不要裸奔;服务本身的密码也要改掉默认值
顺手把 运行日志 页面留着,出问题时它是最快的定位入口。
十、常见问题排查
现象 | 可能原因 | 处理 |
|---|---|---|
保存配置提示「权限不足」 | Token 权限不全 | 重新建 Token,四项权限一个都不能少 |
状态一直是「非活跃」 | 没点「连接」,或已有另一条隧道占着 | 断开其它隧道后重新连接 |
隧道状态「不健康」 | 内网服务没起,或目标 URL 写错 | 先在 NAS 本机用 curl 测 |
域名打不开 | DNS 还没生效 / 用内网测的 | 换手机流量再试,并等 5–10 分钟 |
应用连不上 Cloudflare | NAS 出网异常 | 检查 NAS 能否正常访问外网 |
日志页面空了 | 日志存在内存里 | 应用重启后会清空,属正常行为 |
想换隧道连不上 | 单隧道限制 | 先断开当前隧道 |
十一、这套方案适合谁
场景 | 是否合适 |
|---|---|
在外访问 NAS 面板、文件 | ✅ 非常合适 |
自建博客、Home Assistant | ✅ 合适 |
长期跑大流量业务 | ⚠️ 需评估 Cloudflare 免费层条款与流量限制 |
需要给很多人开不同权限 | ✅ 配合 Zero Trust Access 使用 |
写在最后
Tunnel 真正改变的不是「能不能访问」,而是「不必再为了访问而把家里暴露成筛子」。你不再需要公网 IP、不再需要转发端口、不再需要担心路由器固件漏洞被扫到——因为从公网看过去,你家根本没有任何端口在监听。
至于飞牛那个可视化客户端,它的价值是把 cloudflared 的配置文件、DNS 记录、证书签发这三件手工活收进了几个下拉框里。代价是一次只能连一条隧道——对家庭场景够用,对多环境并存的需求就不够了。
配好之后建议做一件事:把 Token 记进密码管理器。它是这套体系里唯一的钥匙,丢了要重建,泄漏了要立刻吊销。
