部署Lucky 配置DDNS与反向代理 实现 IPV6 + HTTPS 外网访问家庭 NAS
对 NAS 用户来说,内网访问是基础功能,而能够玩转公网(外网)访问,才能使 NAS 真正成为个人专属家庭服务器。通过 Lucky 可以轻松实现公网 IPv6 转内网 IPv4 的功能,并有动态域名、端口转发、反向代理、证书管理(ACME)等等多种功能,通过一个工具完美实现 IPV6 + HTTPS 外网访问家庭 NAS OpenWrt...
Lucky 部署
Lucky 安装可以参考:OpenWrt 通过 IPK 软件包及 Docker 两种方式安装 Lucky 教程
内网环境下,输入 IP:16601 即可访问管理界面。默认的账户密码为 666/666
首次登录先在「设置」 - 「登录验证设置」修改默认账号及密码。
Lucky 配置
本次配置使用的 DNS 服务商为 Cloudflare ,提前把域名托管到 Cloudflare,如果你没有域名,可以使用之前我们推荐的免费域名。
Lucky 设置DDNS(动态域名解析)
进入动态域名设置,配置域名解析。在左侧找到「动态域名」选项卡,并点击「添加任务」。
这里我们使用 Cloudflare 的 DNS 做演示:
- 任务名称:自定义
- 操作模式:简易模式
- 托管服务商:选择 Cloudflare
- Token:填写 Cloudflare 申请的 API 令牌
启用 {ipv6Addr} ,获取公网IP方式这里有两种方式,如果你“通过接口获取(推荐)”无法获取到IPV6地址,可以使用“通过网卡获取”。
点击「添加同步记录」,添加域名。设置完成后点击底部「添加任务」。
- 备注:选填
- 记录名:填写域名
zoio.net:主域名*.zoio.net:为泛域名解析,即*号可以代表任何字符。
- 同步开关:开启
- 记录类型:AAAA(ipv6)
稍等片刻,看到同步结果为“同步成功”或“本地记录未变化”,就说明DDNS设置成功了。这里设置的DDNS其实和使用其他单独的DDNS应用(比如DDNS-GO)效果是一样的。
申请SSL证书
接下来我们需要为自己的域名申请SSL证书。转到「SSL/TLS证书」选项卡,并点击「添加证书」。
添加证书:
- 证书备注:随便填
- 添加方式:选择
ACME - 证书颁发机构:选择
Let's Encrypt - 验证方式:选择
Cloudflare - Token:填写 Cloudflare API 令牌
- 域名/IP列表:输入我们DDNS设置的的域名
如果你没有ipv4公网,在更多设置取消勾选使用ipv4通道申请证书
证书申请需要稍等一段时间,大概几分钟。成功后就会出现ACME信息,颁发时间和道到期时间。每张免费SSL证书的有效期为三个月,但Lucky在证书到期日会自动续签,不需要人工干预。
设置反向代理及HTTPS访问
在左边菜单栏选择「Web 服务」菜单,点击「添加 Web 规则」。
添加web服务规则:
规则基本设置:添加web服务规则的时候,名称可以随意写,操作模式选简易模式,监听类型我因为是ipv6,所以选的是tcp6,监听端口默认是16666(大家也可以换成自己喜欢的,只要没被占用就行,后期访问就是用域名和这个端口),防火墙要开启,TLS也得开启(因为https访问必须开启这个)。
- Web服务规则名称:名称随意,可留空
- 规则开关:启用
- 操作模式:简易模式
- 监听类型:选择
IPv6 - 监听端口:监听端口默认是
16666(大家也可以换成自己喜欢的,只要没被占用就行,后期访问就是用域名+这个端口) - 防火墙自动放行:开启
- TLS:开启(https访问必须开启)
添加子规则:
往下拉,在「子规则列表」点击「添加子规则」,这个所谓的“子规则”,就是你从外网访问的某项服务,比如 NAS,或者 OpenWrt 管理页面。
- 子规则名称:名称随意,例如 OpenWrt
- 子规则开关:启用
- 服务类型:反向代理
- 前端地址:
openwrt.zoio.net,前缀自定义,域名修改为自己的域名。 - 后端地址:内网IP+项目端口,例如
http://10.10.10.10:80 - 万事大吉:启用
- 忽略后端TLS证书验证:是
最后点击右下角的「添加Web服务规则」保存规则,如果还有其他服务需要外网访问的话,那么还是按照上面的方法,添加新的Web服务子规则,需要多少服务,开几条子规则即可,但是注意二级域名前缀不要冲突。
添加重定向规则:
如果不设置重定向,有些浏览器只输入网址,不输入前面的https,在某些浏览器中会自动被识别为http,造成无法访问,我们需要在仅输入域名时让浏览器也能够自动跳转到https
在Web服务中添加一条全新的Web服务规则(注意不是子规则)。名称随便,操作模式选定制模式,监听端口和前面的反代端口保持一致,TLS一定要禁用!然后点击“默认子规则”
- Web服务规则名称:名称随意,可留空
- 规则开关:启用
- 操作模式:定制模式
- 监听类型:选择
IPv6 - 监听端口:监听端口默认是
16666,和我们上一条规则的端口要一致。 - 防火墙自动放行:开启
- TLS:禁用
往下点击「默认规则」:
- 服务类型:重定向
- 默认目标地址:填写
https://{host}:{port} - 万事大吉:启用
- 其他所有选项全部保持默认
最后点击右下角的「添加Web服务规则」保存规则。这样一来,在外网访问时我们只需要输入xxx.zoio.net:16666 ,浏览器就会自动跳转到https协议https://xxx.zoio.net:16666,非常方便。
端口转发
如果你是在 NAS 或者 OpenWrt 旁路由上部署的Lucky,还需要在主路由把反向代理的端口通过路由器映射出去,才能够正常从外网访问。就只需要映射一个端口就行,像我这里就是16666,不用把每个服务单独的内网端口再映射出去,注意内网端口和外网端口号要保持一致。
iKuai 示例:
网络设置 - 端口映射
OpenWrt 示例:
网络 - 防火墙 - 端口转发
ROS 示例:
IP - Firewall - NAT