# 极空间无公网IP环境搭建Cloudflared-腾讯云免费隧道穿透教程
折腾NAS最让人头疼的不是扩容,而是“外网访问”。
上个月家里宽带师傅上门,测速显示下行500M,上行却只有30M。更绝望的是,运营商死活不给公网IP,光猫背后全是内网地址。我想用极空间(Zspace)存家庭照片,结果发现在外地根本连不上。VNC、RDP、甚至自带的远程访问都得通过内网穿透,要么收费,要么被墙,要么速度慢得令人发指。
最后我放弃了传统的内网穿透逻辑,改用Cloudflare Tunnel(简称CFT)。这玩意儿不需要公网IP,只要极空间能连上云,就能反向打穿。而且配合腾讯云免费试用,我甚至省去了购买Cloudflare套餐的麻烦,全程零成本,且速度能跑满我那条30M的上行带宽。
以下是我踩坑后的完整流程,专为无公网IP的极空间用户整理。
一、 为什么选 Cloudflare Tunnel?
传统frp、ngrok这类工具,往往需要你有一个有公网IP的中间服务器。对于我这种纯内网用户,这就是死局。
Cloudflare Tunnel的核心逻辑是“反向WebSocket”。简单来说,极空间里的cloudflared客户端主动连接到Cloudflare的云端服务器,建立一条长连接。你在外网访问xxx.trycloudflare.com时,Cloudflare边缘节点识别到这个请求,然后通过这条已建立的隧道,把数据“扔”进你的极空间。
好处是极致的:
- 零配置端口映射:路由器不需要开任何端口,光猫保持默认桥接或路由模式即可。
- 自带HTTPS证书:不用自己搞域名SSL配置,免去认证报错。
- 隐藏NAS真实地址:外部网络只能看到Cloudflare的IP,你的极空间内网IP和端口完全隐藏,安全性比裸露在公网高得多。
二、 前期准备:域名与服务器
1. 腾讯云免费域名
我不建议你直接注册云flare的域名,虽然Cloudflare原生支持,但在国内,注册.com和.net往往能省下一笔钱。
我使用了腾讯云的免费企业邮箱/子域名服务(或者直接用他们每年几块钱的域名活动)。这里我用了mydomain.com作为主域名。
注意:如果为了极致省钱,可以去Cloudflare注册一个免费域名,但解析记录需要手动操作。下文以已有域名为例。
2. 极简空间初始化
确保你的极空间能正常连接互联网。进入极空间App -> 设置 -> 网络设置,确认状态正常。
三、 核心步骤:部署 Cloudflared
极空间原生并不支持直接运行Linux容器(除非你开启了K8s或Docker模式,且版本较新)。我是通过极空间的Kubernetes应用中心部署的。
1. 获取 Token
这是最关键的一步。你需要在极空间生成一个专用的Cloudflared Token。
- 登录 Cloudflare Dashboard。
- 左侧菜单 -> Network -> Tunnels -> Create a Tunnel。
- 填写名称,比如
jisu-josuan。 - 创建后,系统会让你选择创建方式。选Cloudflared,然后复制那串以
ey开头的长字符串。这就是你的Tunnel Token。
警告: 这个Token等同于密码,谁拿到都能控制你的NAS,务必保管好,不要发群里。
2. 在极空间部署容器
- 打开极空间K8s集群管理界面。
- 新建Deployment(部署)。
- 镜像选择:
cloudflare/cloudflared。 - 环境变量(关键):
- 名称:
TUNNEL_TOKEN - 值:粘贴刚才复制的那串
eyJ...
- 名称:
- 端口映射:无需映射端口到宿主机,CFT是出站连接。
- 资源限制:建议给200m CPU和256m内存,足够了。
点击部署。几秒后,容器状态变成Running。
四、 配置入口(Ingress)
容器跑起来了,但还没告诉它“把流量转给谁”。
回到Cloudflare Dashboard -> Tunnels -> 点击你刚创建的隧道 -> Public Hostnames(公共主机名)。
- 添加服务:
- Public Hostname:
nas.mydomain.com(你可以自定义前缀)。 - Service: 选择 Local Port。
- URL:
http://192.168.x.x:xxxx- 这里填极空间的内网IP和Web管理端口的号。例如:
http://192.168.1.10:5000
- 这里填极空间的内网IP和Web管理端口的号。例如:
- 点击保存。
- Public Hostname:
五、 验证与踩坑实录
配置完成后,别急着欢呼。我一开始在外网访问nas.mydomain.com,一直显示502 Bad Gateway。
排查过程:
- 检查极空间容器日志:
kubectl logs cloudflared-xxxxx。 - 日志里有一行关键的错误:
Unable to connect to service。 - 我回头一看,极空间内部防火墙禁用了来自本地网络的访问请求(因为我之前设了IP白名单)。
- 修复:在极空间 -> 网络设置 -> 防火墙中,临时关闭,或者确保K8s的Pod IP在可信列表里。
再次访问,页面加载了。
速度测试:
我用Speedtest测了一下外网上传速度,稳定在28M/s。下载因为受限于Cloudflare边缘节点到国内的线路,大约是40M/s。对比之前用阿里云ECS做frp中转时那种卡顿流媒体、缓冲转圈的状态,这次看4K电影几乎无感。
六、 几个实用建议
- DNS 记录:确保你的域名在Cloudflare解析中,
nas这条A记录指向的是198.41.0.4等Cloudflare IP(实际上CFT是自动配置的,不需要手动改A记录,只要把域名托管到Cloudflare即可)。 - 极空间重启:CFT容器设置为重启策略
Always,极空间断网重连后,隧道会自动恢复,不需要人工干预。 - 多机扩展:如果你有多个极空间,或者想暴露WebDAV、Jellyfin等服务,可以在同一个Cloudflare Tunnel下添加多个Public Hostname,指向不同的本地端口。比如
jellyfin.mydomain.com指向http://192.168.1.10:8096。
这套方案最大的爽点在于“无感维护”。你不需要买服务器,不需要担心IP被封,甚至不需要懂复杂的网络原理。只要你的极空间通电、联网,外网随时待命。
对于像我这样家里没有公网IP、又不想每个月多花几十块钱订阅费的用户,这基本是目前的最优解。
共 0 条评论