使用 HTTPS 加密的不同子域名安全访问 NAS 上的不同服务

前置条件
- 家庭宽带有 IPv6 公网 IP(我只有 v6,没有 v4 的公网 IP)
- 飞牛 OS 系统(以飞牛 OS 为例,其他系统理论上同理)
- 有托管在 Cloudflare 的域名(以 Cloudflare 为例,其他域名托管商和 DNS 服务商理论上同理),例如 abc.com,分配一个子域名供公网访问 NAS 之用,例如 nas.abc.com
需求
- NAS 有多个服务需要通过公网访问,希望通过不同的三级域名访问 NAS 上的不同服务,例如:
- 通过 fn.nas.abc.com 访问飞牛 OS 桌面
- 通过 qb.nas.abc.com 访问 qBittorrent Web UI 等
- 上述所有访问均为 HTTPS,保证安全
折腾记录
飞牛 OS 的系统设置中已经集成了 DDNS 的相关功能,并且也支持 Cloudflare 作为服务商,不过在这里由于涉及后续的证书申请的反向代理设置,我们选择统一使用 lucky 来进行所有的相关设置,包括 DDNS,不使用飞牛 OS 自带的 DDNS 设置。
准备工作
- 通过飞牛 OS 的应用中心或 Docker 安装部署 lucky(https://lucky666.cn/)
- 首次登录 lucky 后(默认用户名与密码均为 666),进入「设置」菜单,进行登录验证等安全设置,确保可以正常通过局域网访问到 lucky 的管理后台
前往 Cloudflare 创建 API 令牌
- Cloudflare Dashboard->管理账户->账户 API 令牌->创建令牌,选择「API 令牌模板」中的「编辑区域 DNS」
- 更改「区域资源」为「包括-特定区域-自己的域名」,例如 abc.com,其余选项默认,点击「继续以显示摘要」按钮
- 获得 Cloudflare API Token,注意 Token 只会显示一次,自行保存好这个 Token
在 Cloudflare 添加必要的 DNS 解析
- 为 NAS 预定使用的二级域名添加 A 记录,名称自定义,例如 nas,IPv4 地址填写「1.1.1.1」,代理状态选为不代理(仅 DNS)
- 为所有三级域名添加 CNAME 记录,名称为「*.nas」,目标填写「nas.abc.com」,代理状态为不代理(仅 DNS)
在 lucky 中设置 DDNS
- 进入「动态域名」菜单,点击「添加任务」
- 保持默认的「简易模式」,托管服务商选择 Cloudflare,填入刚才 API 令牌创建后得到的 Token,类型选择 IPv6,获取公网 IP 方式可以选择默认,域名列表填入「nas.abc.com」,之后添加任务
- 成功添加后,等待数秒,确认已经获取到公网 IP
- 此时你应该已经可以通过 nas.abc.com 访问到你的 NAS Web 管理桌面了,会被自动重定向到飞牛 OS 的默认访问端口 5666
申请证书
- 前往 lucky 的「安全管理」,在「SSL 证书」中点击「添加证书」
- 添加方式选择「ACME」,颁发机构保持默认,验证方式选择「Cloudflare」,填入之前获得的 Token
- 域名列表填写两行,分别为「nas.abc.com」和「*.nas.abc.com」
- 填入电子邮箱,算法可以保持默认,之后点击「添加」
- 等待数分钟后,确认证书已经申请成功,可以看到证书有效期
- lucky 会在证书到期时帮我们自动续签证书,无需人工干预
设置反向代理
- 终于到了关键步骤,在 lucky 中前往「Web 服务」,选择「添加 Web 服务规则」
- 监听类型根据实际情况选择,例如我只有 IPv6 地址,那么我只选 tcp6 即可
- 监听端口自由设置,例如设置为 56666
- 打开 TLS,之后点击下方「添加 Web 服务规则」
- 主体规则创建好后,点击其中的「添加子规则」按钮:
- 服务类型确认选择为「反向代理」
- 前端地址填写你希望用来访问服务的地址,例如「fn.nas.abc.com」,用于访问飞牛 OS 桌面
- 后端地址填写服务在局域网内的实际地址,由于 lucky 服务和要访问的服务都运行于 NAS 之上,可以填入「http://127.0.0.1:5666」(填写你实际要访问的服务的地址,此处为飞牛 OS 桌面),注意必须有「http://」前缀
- 设置完成后点击添加即可生效,如果有多个服务,就重复添加多个子规则,例如前端地址「qb.nas.abc.com」和后端地址「http://127.0.0.1: 8085」
- 此时访问「fn.nas.abc.com:56666」(不要忘了端口号),会自动重定向到 HTTPS,并且正确访问到了飞牛 OS 桌面服务,其余服务同理
收尾安全处理
为了安全,可以通过防火墙关闭 80、5666 以及其他自建服务的默认端口(防止通过 HTTP 直接访问),统一通过三级域名和统一的监听端口形式访问。
- 本文标题:使用 HTTPS 加密的不同子域名安全访问 NAS 上的不同服务
- 本文作者:拾与拾柒
- 创建时间:2025-05-07 22:09:15
- 本文链接:https://blog.iifatree.com/2025/05/07/fnOS-HTTPS-different-services/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论