banner
约 2,100 字
7 分钟

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

飞牛 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。本文按真实界面走一遍。

飞牛 Cloudflare Tunnel 客户端首页:显示 Tunnel 进程状态、PID、运行时长与系统架构
飞牛 Cloudflare Tunnel 客户端首页:显示 Tunnel 进程状态、PID、运行时长与系统架构

一、先搞清楚原理,再动手

传统穿透是「外面的请求打进你家路由器的某个端口」,所以必须要有公网 IP,还要在防火墙和路由器上各开一次洞。

Tunnel 反过来:

纯文本
外部访问 nas.example.com

Cloudflare 边缘节点(自动 HTTPS)
        ↓  ← 这条隧道是 NAS 主动连出去的
你家 NAS 上的 cloudflared 进程

内网服务 http://127.0.0.1:8080

因为连接方向是「由内向外」,所以:不需要公网 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 这两块。

四、第二步:在飞牛应用市场安装

  1. 打开飞牛 OS 应用市场,搜索 Cloudflare Tunnel

  2. 点安装,等部署完成后打开应用

应用的页面结构(左侧导航)如下,后面每一步都会用到:

页面

干什么

首页

看当前配置、连接状态、基础运行信息,含 Tunnel 名称、连接状态(健康 / 警告 / 非活跃 / 错误)与最近日志摘要

系统配置

填 Account ID 与 API Token,并测试配置是否可用

Tunnel 列表

创建、连接、断开、删除 Tunnel

API 凭证

给脚本或自动化工具发访问凭证(App ID + App Key,App Key 只在创建时显示一次

运行日志

最近 200 条记录,用于定位连接与 DNS 问题(保存在内存中,应用重启即清空)

关于

应用说明与组件版本

五、第三步:填配置

  1. 进入 系统配置

  2. 依次填入:

  • Account ID:第三步拿到的账户 ID

  • API Token:第三步创建的那串 Token

  1. 点「测试配置」/「保存配置」,应用会向 Cloudflare 校验凭证并拉取你账号下的隧道列表

校验通过后,Tunnel 名称、连接状态就会出现在 首页 上。

六、第四步:创建 Tunnel

  1. 进入 Tunnel 列表 → 「新建隧道」

  2. 输入隧道名(如 fnnas-web)→ 确定

  3. 选中它,点「连接」(状态会变成「运行中 / Active」)

⚠️ 一次只能连接一条 Tunnel。想换一条,得先把当前这条断开。这是这个客户端的设计,不是 Bug——它内部只跑一个 cloudflared 进程。

七、第五步:把内网服务映射出去

  1. 在 Tunnel 列表点该隧道右侧的「配置」

  2. 添加一条「公共主机名」,四个字段:

字段

填什么

例子

子域名

想用的前缀

nas

域名

你托管在 Cloudflare 的域名

example.com

服务类型

协议

HTTP / HTTPS / TCP / SSH

目标 URL

内网服务地址

http://127.0.0.1:8080

  1. 保存,隧道会自动生效

一个 Tunnel 可以挂多个主机名,共用同一条通道,不需要为每个服务单独建隧道:

访问地址

指向

nas.example.com

NAS 面板 http://127.0.0.1:8080

ha.example.com

Home Assistant http://192.168.1.20:8123

ai.example.com

AI 控制台 http://127.0.0.1:3000

DNS 不用手动加——Cloudflare 会自动创建一条 CNAME 指向 [tunnel-id].cfargotunnel.com

八、第六步:验证

  1. 首页 的连接状态显示「运行中 / Active」,「已运行」在走秒

  2. 等 1–2 分钟让 DNS 生效

  3. 用手机 4G(不要连家里 Wi-Fi,否则测不出穿透是否真的通)访问 https://nas.example.com

  4. 看到 HTTPS 小锁说明证书已自动签发

第 3 步是关键:同一网络下访问成功不能证明穿透可用,一定要用外网。

九、安全建议:暴露出去只是第一步

Tunnel 让服务「能访问」了,但能访问 ≠ 该被所有人访问。三件事按顺序做:

  1. Tunnel 层收口:只映射真正需要的服务,数据库、管理后台这类不要穿出去

  2. 加 Zero Trust Access:在 Cloudflare Zero Trust 里给该主机名加访问策略,限定邮箱 / 身份提供方,未授权者连登录页都看不到

  3. 服务自身加固:SSH 一定要配密钥或证书,不要裸奔;服务本身的密码也要改掉默认值

顺手把 运行日志 页面留着,出问题时它是最快的定位入口。

十、常见问题排查

现象

可能原因

处理

保存配置提示「权限不足」

Token 权限不全

重新建 Token,四项权限一个都不能少

状态一直是「非活跃」

没点「连接」,或已有另一条隧道占着

断开其它隧道后重新连接

隧道状态「不健康」

内网服务没起,或目标 URL 写错

先在 NAS 本机用 curl 测 127.0.0.1:端口

域名打不开

DNS 还没生效 / 用内网测的

换手机流量再试,并等 5–10 分钟

应用连不上 Cloudflare

NAS 出网异常

检查 NAS 能否正常访问外网

日志页面空了

日志存在内存里

应用重启后会清空,属正常行为

想换隧道连不上

单隧道限制

先断开当前隧道

十一、这套方案适合谁

场景

是否合适

在外访问 NAS 面板、文件

✅ 非常合适

自建博客、Home Assistant

✅ 合适

长期跑大流量业务

⚠️ 需评估 Cloudflare 免费层条款与流量限制

需要给很多人开不同权限

✅ 配合 Zero Trust Access 使用

写在最后

Tunnel 真正改变的不是「能不能访问」,而是「不必再为了访问而把家里暴露成筛子」。你不再需要公网 IP、不再需要转发端口、不再需要担心路由器固件漏洞被扫到——因为从公网看过去,你家根本没有任何端口在监听。

至于飞牛那个可视化客户端,它的价值是把 cloudflared 的配置文件、DNS 记录、证书签发这三件手工活收进了几个下拉框里。代价是一次只能连一条隧道——对家庭场景够用,对多环境并存的需求就不够了。

配好之后建议做一件事:把 Token 记进密码管理器。它是这套体系里唯一的钥匙,丢了要重建,泄漏了要立刻吊销。

END