POST

Cloudflare Tunnel 应用版:飞牛应用商店装上之后,怎么把它用明白

飞牛商店里的 Cloudflare Tunnel 把 cloudflared 包了一层图形界面。这篇从拿 token 讲到多服务映射、访问策略和踩坑,装完照着做就行。

家里没有公网 IP,又想让 NAS 上的东西在外面能打开——这个需求一直在,解法也一直有几个:内网穿透、DDNS 打洞、frp 自建中转。Cloudflare Tunnel 是其中门槛最低的一个,因为中转节点不用你自己买。

飞牛商店里那个 Cloudflare Tunnel,本质是把官方的 cloudflared 包了一层。装完不用碰命令行,但它不会替你去 Cloudflare 后台点那几下——那几步还是得你自己来,这也是大多数人卡住的地方。

它到底怎么工作的

一句话:你的 NAS 主动连出去,不用开任何入站端口。

访客 → Cloudflare 边缘节点 → 隧道 → 你家的 cloudflared → 本地服务

注意方向。传统的端口映射是"外面能敲你家的门",隧道是"你家先打电话给 Cloudflare,然后一直挂着"。所以路由器上不用配端口转发,公网 IP 变了也无所谓,光猫后面套两层 NAT 照样能用。

代价是:所有流量都从 Cloudflare 走一遍。它看得见你的域名、路径、请求头。

动手之前,两件事必须成立

一、域名得托管在 Cloudflare

不是"在 Cloudflare 买",是"把 NS 改到 Cloudflare"。域名在哪注册都行,在 Cloudflare 后台加站点,然后去注册商那里把两个 NS 记录换成它给的。生效通常几分钟到几小时。

没这一步,后面绑不上域名——隧道本身能连上,但没有可以访问的地址。

二、账号要能进 Zero Trust

Cloudflare 后台左边有个 Zero Trust(新版叫 Cloudflare One)。第一次进会让你起个团队名,免费版最多 50 个用户,够用。

有个坑先说了:某些地区/账号在这一步会被要求绑定支付方式。如果卡在这儿,还有一条路是命令行本地管理隧道,不经过这个面板,后面单独讲。

装

飞牛应用商店 → 搜 Cloudflare Tunnel → 安装。装完在应用列表里能打开一个设置界面。

界面通常就一个输入框:Token。这个 Token 得去 Cloudflare 后台拿。

拿 Token 的四步

  1. Cloudflare 后台 → Zero Trust / Cloudflare One → Networks → Tunnels;
  2. Create a tunnel → 选 Cloudflared 这个连接器类型;
  3. 起个名字,比如 fnos,保存;
  4. 下一页会给你一段安装命令,长这样:
cloudflared service install eyJhIjoi...很长一坨...

service install 后面那串就是 Token。 复制它,别复制整行命令。

这串东西等于你家隧道的钥匙。谁拿到,谁就能把他自己的服务挂到你的域名下。别截图、别贴群里。

把 Token 填进去

回到飞牛的 Cloudflare Tunnel 界面,粘进去,保存,启动。

几秒后回 Cloudflare 那边看:Tunnels 列表里 fnos 那条应该从 Inactive 变成 Healthy,下面还会列出连接所在的机器。

到这一步,隧道通了,但还没有任何服务被发布出去——隧道是管道,你得告诉它哪根管子通向哪。

加第一个服务

在隧道详情页找 Public Hostname → Add a public hostname:

字段填什么
Subdomainnas(或者你想要的任何前缀)
Domain选你的域名
Path留空
TypeHTTP
URLlocalhost:5666

保存。Cloudflare 会自动给你加一条 DNS 记录(CNAME 指向隧道),不用手动去 DNS 页面加。

浏览器打开 https://nas.你的域名.com,应该能看到飞牛的登录页。证书也是自动的,不用申请。

这里有个安全提醒:把 5666 直接开到公网,等于把 NAS 后台的门敞开。任何人访问那个域名都会看到登录框,然后开始试密码。正确做法是先加一层 Cloudflare Access(下一节),或者只发布具体的应用,别发布管理后台。

一条隧道,挂多个服务

不用为每个应用单独建隧道。继续在同一个隧道里 Add a public hostname,加第二条、第三条:

SubdomainTypeURL
nasHTTPlocalhost:5666
photoHTTPlocalhost:8080
tvHTTPlocalhost:8096
filesHTTPlocalhost:5244

端口换成你实际应用的端口。回头在路由器上什么都不用改。

加一层访问控制

这是 Cloudflare 比 frp 强的地方——它自带身份验证。

Zero Trust → Access → Applications → Add an application → Self-hosted:

  1. 填你要保护的域名,比如 nas.你的域名.com;
  2. 建一条策略(Policy):Action 选 Allow,条件选 Emails 等于你自己的邮箱;
  3. 保存。

之后访问这个域名,会先跳到一个 Cloudflare 的登录页,输邮箱收验证码,通过了才进得去。免费版就能用,最多 50 人。

我建议至少给管理后台类的服务加这个。影视、相册这种要给家人看的,可以只加一个 PIN 策略,或者干脆不加。

命令行那条路(进阶)

不想用面板、或者卡在绑定支付那步,可以完全在 NAS 上用命令行管:

# 1. 登录,会给你一个链接,浏览器打开授权
cloudflared tunnel login

# 2. 建隧道,名字随便起
cloudflared tunnel create fnos

# 3. 把域名指过来
cloudflared tunnel route dns fnos nas.example.com

然后写 ~/.cloudflared/config.yml:

tunnel: fnos
credentials-file: /root/.cloudflared/<隧道ID>.json

ingress:
  - hostname: nas.example.com
    service: http://localhost:5666
  - hostname: photo.example.com
    service: http://localhost:8080
  - service: http_status:404

最后一条 http_status:404 别删,它是兜底,没有它启动会报错。

跑起来:

cloudflared tunnel run fnos

# 装成服务,开机自启
cloudflared service install

本地管理的好处是配置就在一个 YAML 里,改完重启即可,也不用担心面板改版找不到菜单。

用起来的真实感受

速度。免费隧道走的是 Cloudflare 的公共边缘,国内访问常常绕到境外节点再回来。打开网页、看文档没问题;拿它当影视外网播放的主力会很痛苦,缓冲、拖动都慢。

顺带提一句条款:Cloudflare 免费版对视频和大文件的流量是有意见的(服务条款 2.8 那一条),偶尔看一次没事,把它当成家里的流媒体 CDN 就不合适了。

稳定性。免费版没有 SLA,偶尔抖一下。重要服务建议同时留一条备用通道(比如飞牛自带的远程访问)。

WebSocket 支持。这点比很多穿透方案好,隧道原生支持长连接,所以一些实时界面不会动不动掉线。

常见问题

Tunnels 里一直是 Inactive Token 没填对,或者容器没起来。看应用日志,正常会打印 Registered tunnel connection。

域名打不开,但隧道是 Healthy 检查 Public Hostname 里的端口对不对。localhost 在你容器里指的可能是容器自己,不是宿主机——这种情况换成宿主机的内网 IP,比如 192.168.1.10:5666。

登录页能开,点登录就报错 多半是应用里配的访问地址还是局域网 IP。要么改应用的域名配置,要么在 Cloudflare 上加一条规则改 Host 头。

想要固定 IP 白名单 Access 策略里可以按 IP 限制,但它拿到的是 Cloudflare 的 IP,不是访客真实 IP。要看真实 IP,得读 CF-Connecting-IP 这个请求头。

什么时候别用它

  • 你要跑大流量(影视、备份同步)——带宽和条款都不合适;
  • 你只需要自己偶尔访问——飞牛自带的远程访问更省事;
  • 你对"流量经过第三方"这件事本身不接受——那就走自建 frp,代价是自己维护一台服务器。

最后

Cloudflare Tunnel 的价值不在于"免费",在于它把三件事一次解决了:不用公网 IP、不用开端口、自带 HTTPS 和身份验证。你只需要一个域名。

商店里那个应用省掉了装命令行、写 YAML 的步骤,但 Cloudflare 后台那几步还是绕不过去。第一次配会花二十分钟,之后加服务就是点几下的事。

配的过程中卡在哪儿,留言,我补进这篇。

👁 - 次浏览

留言

← 返回首页