绿联 NAS 域名直连 DDNS-Go+IPv6 内网穿透并开启 HTTPS

绿联 NAS 域名直连 DDNS-Go+IPv6 内网穿透并开启 HTTPS

关键字:绿联 DX4600、域名直连、动态域名解析、内网穿透、光猫、nas、docker、ddns-go、ipv6、nginx proxy manager、ssl

前言

我是业余 nas 玩家,折腾了两天,此篇是我自己的笔记和总结(篇尾有彩蛋),希望能够为大家实现域名直连 nas 贡献个人智慧、提供个人方案,但更多的还是和大家沟通交流。还请大家切记,只有把笔记同个人具体实际相结合,才能探索出属于自己的解决方案

“但这一切值得吗”x1 ——《冰汽时代》

另外,我使用的是绿联 DX4600+(双十一新购),绿联 DX4600 系列都支持 docker,固件版本 3.0.0 开始支持 ipv6 / 域名直连登录,请确保固件版本最新

捋清思路

  1. 公网 ipv4 地址存量少、申请难,因此如果想要外网访问 nas,那就要使用 ipv6(数量多到可以为地球上的每一粒沙子都分配一个地址)
  2. 但是,ipv6 地址根本不是人能记住的,因此需要同域名绑定,域名记起来就简单多了
简单补充一下网络知识:访问域名时,会向 dns 服务器查询这个域名对应的 ip 地址(dns 服务器可以简单看作 域名 - ip 对照表),拿到 ip 地址后就知道了设备在网络中的位置(ip 地址可以比喻成你家门牌号),就可以向设备发起请求

3. 可是,运营商分配 ipv6 地址一般是动态变换的,也就是说可能三天两头就会变一次,因此需要动态更新域名绑定的 ipv6 地址,这就用到了 ddns(动态域名服务 dynamic dns),将变化的 ipv6 地址绑定到固定的域名上。ddns 的作用就是动态更新 dns 服务器上域名和 ip 地址的对应关系

4. 至此,外网访问 nas 还差最后一步,就是通过防火墙,因为防火墙会过滤 ipv6 流量,所以需要关闭光猫和路由器的防火墙,接着就能外网访问 nas 了

5. 补充:域名开启 https 会在后面介绍,关闭防火墙将使设备暴露在公网,有安全问题,后续会简单提及

前期准备

  1. 域名购入,推荐腾讯云或阿里云,我这里用的腾讯云,具体不再赘述

2. 进入控制台 - 云解析 DNS,开启域名解析(点击添加域名,按步骤来即可,如果遇到问题可以先查查腾讯云文档,有详细教程和步骤)

3. 检查电脑和绿联 nas 是否开启 ipv6

Windows:控制面板 - 网络和 Internet(查看网络状态和任务)- 更改适配器设置

检查无线和有线网络(右键 - 属性)中,ipv6 是否已安装

绿联 nas:设备管理 - 网络设置 - 有线网络 - ipv6 地址开启

4. 检查代理软件是否开启 ipv6(若没开代理软件,跳过这一步

以小蓝猫为例,如图所示,开启 ipv6

5. 检查光猫和路由器是否开启 ipv6

路由器比较简单,进入路由器后台管理界面开启 ipv6 即可

荣耀路由器

光猫比较棘手,但通常情况下已经开启 ipv6,先进行下一步 ipv6 连通性测试,如果通过就暂时不用管光猫,若不行,用超级管理员账号进入光猫后台(192.168.1.1)开启

下图为光猫常见的超管初始账密,如果进不去,可能要另辟蹊径了,这就是棘手的部分...

老光猫的 ip 协议版本是无法直接更改的,需要删除再新建配置

删除前一定要截图备份配置信息,删除前一定要截图备份配置信息,删除前一定要截图备份配置信息特别是 vlan id 和拨号账户密码。拨号账号密码忘记没事,但这个 vlan id 要有,新建配置时要填(若是真忘记了请找运营商客服)

6. 测试是否通过 ipv6 检测(test-ipv6.com/

DDNS-Go 动态更新域名解析

ddns-go 是一个很好用的 ddns 程序,可以自动添加并更新域名绑定的 ip 地址

  1. 启动 docker,在镜像仓库搜索 ddns-go 并下载(镜像管理 - 镜像仓库)
如果拉取速度过慢,试试更改镜像源(基本信息 - 镜像源设置)为网易云镜像,或者腾讯云镜像(在自定义那栏输入 ccr.ccs.tencentyun.com/

2. 下载完毕后,创建容器(镜像管理 - 本地镜像 - 找到 ddns-go - 创建容器)

3. 容器参数配置(注:我直接拿配置好的演示,界面略微不同)

容器重启策略改成 总是(always),如果 docker 设置了开机自启,容器 ddns-go 也会自动启动,除非手动停止(点击右边的问号可查看各策略的意思)

网络模式选择 host

设置配置存放位置,文件夹名称可以任意,但装载路径一定得填 root

容器端口保持 9876 就行。如果本地端口冲突,把网络改成 bridge 模式,本地端口不填(会自动设置)

启动容器,并打开 ddns-go 管理界面

4. ddns-go 参数配置

dns 服务商选择 DNSPod,然后点击“创建 DNSPod Token”,跳转到腾讯云 DNSPod 界面,不出意外的话已经自动登录了(注:DNSPod 已被腾讯收购,DNSPod 解析和腾讯的互通)

点击创建秘钥,秘钥 token 记得保存下来,只显示一次,然后把 id 和 token 填入 ddns-go(见上图)

ipv4,没有,不启用

ipv6,启用,域名部分填入二级域名(比如你的一级域名是 example.cn,可以填 nas.example.cn,方便记忆),之后 ddns-go 会帮我们自动创建并添加解析记录(这个后文会说明)。获取 ip 方式选择通过网卡获取

禁止公网访问 ddns-go 管理界面,勾选

配置完毕,点击保存,然后去 DNSPod 检查是否多了一条记录

5. 验证内网是否可以访问,两个办法:

① 测试内网能不能 ping 通域名,能 ping 通说明内网访问正常

② 打开绿联 web 端地址(你填入 ddns-go 的域名 + 端口号 9999,9999 是绿联默认端口号,例如 nas.example.cn:9999),能打开说明内网访问正常

“至此已经成功了一半”

打通外网访问

  1. 验证外网是否可以访问,还是两个办法:

① 测试公网能不能 ping 通域名,能 ping 通说明公网访问正常

打开 ipw.cn/ipv6ping/ 进行 ipv6 ping 测试,多 ping 几次(因为有可能是 ping 服务器本身的问题),如果能 ping 通会显示 ip 地址和响应时间,如果 ping 不通,则显示 ping failed

ping 通的结果,all green

手机流量下打开绿联 web 端(这个方法最简单),能打开说明外网访问正常

以下是手机流量下(外网)访问成功的界面(可以看到绿联没做移动端适配...不好意思,老职业病了)

注:手机 edge 浏览器有缓存机制,如果你之前连接 wifi 时访问过绿联 web 端,先关闭这个页面,并重启手机 edge 浏览器,然后再重新访问

2. 如果外网无法访问,则需要关闭光猫和路由器防火墙,放行 ipv6 流量

先放一张示意图,辅助理解(非网络从业者,图示内容目的只是辅助理解

关闭路由器防火墙

荣耀路由器

关闭光猫防火墙(ipv6 session 防火墙)。前期准备中提到“要检查光猫是否开启了 ipv6”,因为一般都是开启,所以可以暂时不管光猫,但这一步是必须的(该来的还是要来的)

使用超级管理员账号进入光猫后台(192.168.1.1),如果使用 前期准备 中列出的超管账号进不去光猫,那你得求助万能的搜索引擎或者运营商客服了...

这里以移动老光猫为例,关闭 ipv6 session 防火墙,然后等待一会即可


3. 再次验证外网是否可以访问,同样采用步骤 1 的两个方法

开启 HTTPS

  1. 申请 ssl 证书(依然是用腾讯云)

进入控制台 - SSL 证书 - 我的证书 - 申请免费证书(免费证书的额度不是一次性的,证书吊销或正常到期后额度会释放,证书有效期一年,到期后需要续期)

证书申请一般几分钟就能审核通过

然后下载证书文件,后面要用到

2. 部署 nginx proxy manager(nginx 反向代理我懂得不多,所以后续我会少说点话

为什么选择 npm(注:后文将 nginx proxy manager 简称为 npm,此 npm 非 node package manager,本文不涉及 node.js)
因为它界面好看(连理由都是那么的优雅!优雅至极!)

和部署 ddns-go 那会一样,在 docker 镜像仓库搜索 nginx-proxy-manager(注意横杆是必须的,不然搜不到)

因为这个镜像很大(800+MB),如果多次拉取失败,请尝试将镜像源改成 docker 官方源(慢是慢了点,但不容易出错)

下载完毕后创建容器,配置容器参数(同样,这里也是拿已经创建好的容器演示,界面会有略微不同)

重启策略选择 总是(always),作用不再赘述

网络选择 bridge

文件夹一个存放数据,一个存放证书,名字可以自己设定,但装载路径要和图示一致

更改容器本地端口,因为运营商会封锁 80、443 端口,所以端口改成了 11 开头,方便记忆

配置完毕,启动容器,打开 npm 管理页面,默认的账号密码是 admin@example.com 和 changeme

第一次进入管理页面会让你设置名字并修改账号密码

3. 配置 nginx proxy manager

添加 ssl 证书

上传 key 和 crt 两个文件即可,然后点保存

设置代理服务

按图所示配置

如果忘记了绿联 ip 地址,可以从 设备管理 - 网络设置 中查看(前文提到的开启绿联 ipv6 地址的地方)

添加 ssl 证书,选择刚才创建好的 ssl 证书,最后点击保存

4. 打开浏览器,访问绿联 web 端,端口号改成 11443,如 nas.example.cn:11443,不出意外,已经能够 https 访问了

域名直连 nas

  1. 绿联 nas 开启本地登录(网络服务 - 本地账号)

2. 域名直连登录 nas

"至此,结束"

安全问题

由于防火墙不能像云服务那样设置安全组来放行端口,因此需要整个关闭,这样会使内网设备暴露在外,引发安全问题,但是得益于 ipv6 地址的动态变化和巨大存量,遇到安全问题的概率几乎为 0

对于一些路由器,比如荣耀或华为的,除了互联网防火墙之外还设了一道局域网防火墙,能够检测黑客攻击网络,控制智能家居设备的行为,这使得安全性又得以进一步提高

结语

就现阶段来看,自己弄域名直连和内网穿透有点多次一举,因为绿联 nas 内置内网穿透服务,可以外网访问 nas,就算绿联服务器挂了,也可以局域网本地连接登录,此时若想外网登录,域名直连才能发挥作用。而自己设置的 域名 + ipv6 的登录方式,需要关闭防火墙,进而引发安全问题(虽然概率极低)

局域网本地登录
“但这一切值得吗”x2 ——《冰汽时代》

参考

编辑于 2024-01-08 11:40・IP 属地浙江