nas没有公网ipv4,也可以使用Lucky实现反向代理+Https外网访问家庭NAS
想从外网(公网)访问家中的NAS,首先最好还是拥有公网IPv4。不过考虑到现在宽带运营商基本上不给公网IPv4,而IPv6则相对比较容易获取,因此此篇以ipv6为例;
官网如下:https://www.lucky666.cn/docs/intro
相比于DDNS-GO,lucky支持端口转发、Web服务、Stun内网穿透、网络唤醒、ACME自动证书等等,本篇主要内容为“使用Lucky实现反向代理+Https外网访问家庭NAS”,其他暂不涉及
一、前提条件
1、有个域名
2、有台nas
3、有个脑子
二、docker安装
强烈推荐大家使用docker compose创建项目,省心省力
services:
lucky:
image: gdy666/lucky
container_name: lucky
volumes:
- NAS绝对路径:/goodluck
network_mode: host #在bridge模式下,Lucky不支持IPv6,而且IPv4也可能会出现端口无法访问的情况
ports:
- "16601:16601" #若有冲突可修改端口号,一般情况下无需修改
restart: always
三、应用配置
1、容器安装好之后,
默认登陆地址 : http://{IP地址}:16601
默认账号:666
默认密码:666
2、填入后登录,并点击左侧的“设置”选项卡,重新设置一套新的管理账号和密码,确保安全:
3、设置DDNS(动态域名解析)
操作模式选择“简易模式”,DNS服务商选择域名对应的服务商,并填入AccessKey ID和 Secret,
获取方式选择通过接口获取,最后域名列表填写两行,第一行是abc.com,第二行是*.abc.com,代表二级域名。其他默认,点击添加即可,
稍等几分钟,看到同步结果为“域名IP和公网IP一致”,就说明DDNS设置成功了
4、申请SSL
点击左侧“安全管理”选项卡,并点击“添加证书”;
添加方式选择ACME,证书颁发机构选择Let's Encrypt,DNS服务商选择自己的服务商;
AccessKey的ID,Secret,主域名和二级域名,下面的邮箱不动也行,换自己的也行,算法选择默认的RSA2048
「如果你的公网IP是IPv4,就开启DNS查询强制IPv4,同时启用DNS查询仅使用TCP通道。」
其他所有选项全部保持默认,并点击添加完成。
注意:证书申请需要时间较长,耐心等待。成功后就会出现ACME信息,起止时间。每张免费SSL证书的有效期为三个月,但Lucky在证书到期日会自动续签,不用管了。
四、反代设置
特别注意,一定要开启TLS,否则无法使用HTTPS。
接下来点击“添加Web服务子规则”。实际上,这个所谓的“子规则”,就是你从外网访问的某项服务,比如qb、mp等等,或者NAS管理页面。名称建议就用应用简称,规则开关开启。Web服务类型选择“反向代理”。
前端域名/地址需要填写你想要从外网访问该服务的二级域名,比如我这个子规则是分配给qb的,那我就写qb.abc.com。
而后端地址则需要写你访问该服务的内网IP和对应服务端口号,前面不要忘记加http://,其他选项全部保持默认。
举例如下:
然后在Web服务中添加一条全新的Web服务规则(注意不是子规则)。名称随便,操作模式选定制模式,监听端口和前面的反代端口保持一致,TLS一定要禁用!然后点击“默认子规则”
打开默认子规则界面后,Web服务类型选择重定向,然后在默认目标地址中输入:
https://{host}:{port}
并打开万事大吉开关(自动添加请求头),其他所有选项全部保持默认,添加完成
全部设置好以后,我们还需要把反向代理的端口通过路由器映射出去,这里我们只需要映射一个反代端口就可以,不用把每个服务单独的内网端口再映射出去,注意内网端口和外网端口号要保持一致
各家路由器界面不一,仅做举例
在外网访问时我们只需要输入xxx.abc.com:端口号,浏览器就会自动跳转到https协议,非常方便。
大功告成!