万事大吉!使用Lucky+免费qzz.io域名+Cloudflare实现域名访问飞牛NAS多端口服务
万事大吉!使用Lucky+免费qzz.io域名+Cloudflare实现域名访问飞牛NAS多端口服务
JonyLee大家在使用飞牛的Connect外网访问的时候,可能会遇到一个非常典型的问题:FN Connect 默认配置限制了直接访问 NAS 上除主服务外的其他端口服务(如 Jellyfin、Emby 等)。
这主要是因为 FN Connect 的访问机制集中在主域名上,未预留自定义端口的支持方式。FN Connect 默认提供的是 https://5ddd.com/xxxxxx
或 https://[FN_ID].5ddd.com
这类格式的访问地址,它主要指向 NAS 的 Web 管理页面(如 443 端口),无法通过该地址直接附加端口号访问其他服务(如 :8096
)。
不过,借助 Lucky,可以绕过这一限制,实现安全、便捷的外部访问。
什么是Lucky?
Lucky最初是作为一个开源小工具,由开发者为自己的个人使用而开发,用于替代socat,在小米路由AX6000官方系统上实现公网IPv6转内网IPv4的功能。随着版本更新和网友反馈,Lucky不断迭代改进,拥有更多实用的功能和更好的性能。Lucky目前已经实现/集成的主要功能模块有:
- 端口转发
- 动态域名(DDNS)
- Web服务
- Stun内网穿透
- 网络唤醒
- 计划任务
- ACME自动证书
- 网络存储
有了它,你可以实现DDNS动态域名(替代DDNSGO),反向代理及重定向,甚至部署静态网站,内网穿透,SSL证书自动化实现https访问等一系列玩NAS过程中必备的网络功能。对小白用户也非常友好,配置简洁,真的是强大又方便的NAS伴侣。
刚好最近免费qzz.io二级域名可以托管在Cloudflare上了
。
今天Jony就来测试一下用托管在Cloudflare上的qzz.io免费域名,加上飞牛的Lucky,配置反向代理,实现用域名访问不同端口服务。
如何申请免费qzz.io域名见文章:为了玩NAS,你真的打算申请一个免费域名吗?
如何托管到Cloudflare见文章:免费域名来一个?qzz.io可以托管到Cloudflare了!
这里提前说一下,因为飞牛默认已经占用了80和443端口,所以如果不改变飞牛系统配置,最终实现的结果,是使用不同子域名+单一固定端口的方式访问不同的服务。
不能完全免端口访问还是略有些不完美,但好在只需要带一个固定的端口号,不用记那么多的端口号。如果80和443端口没有被占用,用这个完全不需要带端口了,就很方便了。
下面是具体的操作步骤。
使用 Lucky 配置反向代理
1. 安装Lucky
飞牛应用商店有上架Lucky,所以安装也非常方便,找到Lucky,直接安装就行:
2. 配置动态域名解析
需要先配置动态域名解析(DDNS ),使其指向你的公网 IP(IPv4/IPv6),这一步需要配合申请Cloudflare区域令牌,用于自动更新动态公网IP。
2.1 在Cloudflare中创建区域DNS令牌
此步可在点击添加动态域名时再做,也可提前打开Cloudflare申请好备用。
点击Cloudflare后台页面右上角用户图标,选【配置文件】点左侧【API令牌】栏。或在添加动态域名任务时点击创建令牌蓝色链接文字,跳转到Cloudflare创建令牌页面,点击创建令牌。
选择使用【编辑区域DNS】模板。
在【区域资源】处选择你托管的免费二级域名,然后点底部蓝色按钮继续。
点击【创建令牌】
记得复制保存好创建的令牌,因为该令牌只会显示一次,以后不会再显示了,忘记了得重新申请。
2.2 检查添加自定义二级域名后缀
因为我们使用的是免费的二级域名,所以需要先进入Lucky的【动态域名】栏,点击【设置】,查看你申请的二级域名后缀是否在列表里,如果不在,需要自己添加以下,我这里申请的qzz.io
后缀域名是最近才开放注册的,所以列表中没有,手动添加如下图:
2.3 配置动态域名
点击【动态域名】栏目顶部的【添加任务】弹出配置窗口。配置信息如下:
- 任务名称可自定义,也可不写随意。
- 操作模式默认选简易模式;
- 托管服务商选择Cloudflare;点蓝色文字跳转到Cloudflare创建区域DNS令牌,或在Token栏填入已经提前创建好的令牌。
- 类型 选择 IPv4 或 IPv6(根据你的公网环境选择,有公网IPv4的首选IPv4,没有的用公网IPv6,不会设置公网IPv6的可以看我前面的文章:公网直连家庭NAS才是真Nice!家庭网络IPv6配置指南);
- 域名列表 填写托管在Cloudflare上的免费二级域名和泛域名(如
xx.qzz.io
和*.xx.qzz.io
)。
注:上图截图是我已经创建好了,新添加最下面6处应该是【添加任务】。
3. 申请 SSL 证书(实现 HTTPS 访问)
Lucky可以使用ACME自动申请证书,配置https访问更安全。进入 【安全管理】栏目,点【添加证书】,弹出配置添加证书窗口页面。配置如下:
- 备注:可自己填写,便于后续有更多的证书任务时区分即可;
- 添加方式:选
ACME
(自动申请 Let’s Encrypt 证书); - 颁发机构:选
Let's Encrypt
; - 验证方式:选
Cloudflare
,Token填上一步创建的区域令牌即可; - 域名列表:与 DDNS 配置一致(建议填写
*.xx.qzz.io
,申请通配符证书,这样一个证书可以适配所有的子域名,不用每个都单独申请)。
其他默认即可,配置好后点底部【添加】完成配置,等待证书申请成功,一般几分钟就好了。
但是这里因为是使用的免费二级域名,可能申请使用的人比较多,一直没有成功申请到,查询日志发现确实是超额了,要过一定时间再试,而我测试我自己购买的顶级域名申请很快就成功了。
4. 配置反向代理规则
接下来配置反向代理,这是实现域名访问多端口的核心步骤。进入【Web服务】栏目,点击顶部【添加web服务规则】,弹出配置窗口,配置如下:
- 规则名称:可以自定义或不填均可;
- 监听类型:根据公网类型选
IPv4
或IPv6
; - 监听端口:使用默认的
16666
或者自定义(避开飞牛使用的或者被运营商封锁的 80/443); - TLS:如果开启 HTTPS 访问,则需要打开这个按钮。(前面如果已经成功申请到了证书,则建议开启HTTPS访问)
点击底部【添加Web服务子规则】按钮,展开子规则配置窗口。配置如下:
- 规则名称:自定义服务名称标识便于区分;
- 服务类型:
反向代理
; - 前端域名:子域名(如
lucky.xx.qzz.io
); - 后端地址:NAS 内网地址 + 端口(如
http://127.0.0.1:16601)
。 - BasicAuth认证:打开的话,在使用域名访问服务页面的时候,会增加一个密码登录,对于没有密码登录的服务可以设置一下,像Lucky这种本身就带登录密码的服务,可以不用开启。
5. 外网访问示例
配置完成后,通过 https://lucky.xx.qzz.io:16666
格式访问Lucky服务页面如下图,其他服务依上图添加子规则,设置不同的前端三级域名地址,对应不同服务的后端地址端口即可。
上图中我的免费二级域名暂未申请到SSL证书,所以暂时只能使用http裸奔访问了。可以看到浏览器有提示不安全。SSL申请成功之后,还是要使用HTTPS访问的,需要在Lucky里再增加一个重定向规则配置,或者直接在Cloudflare里设置重定向规则。
最后一个提醒:安装好Lucky之后要记得及时修改用户名密码,不然的话看上图登录页面,默认账号密码都直接给你亮出来了!