当前位置:
文章详情

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

2023-10-10 12:03:06 219点赞 2292收藏 317评论

对NAS用户来说,内网访问是基础功能,而能够玩转公网(外网)访问,才能使NAS真正成为个人专属家庭服务器。所以今天这篇文章,就跟大家聊聊如何实现安全,快速,便捷的家庭NAS公网访问。

想从外网(公网)访问家中的NAS,首先最好还是拥有公网IPv4。如果运营商实在不给公网IPv4的话,可以考虑IPv6,我之前已经做过详细教程,需要的小伙伴可以参考:

至于网上的各种内网穿透方案,我个人非常不推荐。因为部署复杂,稳定性差,很多时候还需要在访问端安装客户端软件,很不方便,纯属没办法的办法。所以这篇教程是基于有公网IP的情况下进行的。

不安全的外网访问方式——正向代理+HTTP

很多新手NAS玩家在获得公网IP之后,会使用http+正向代理,也就是在路由器中直接将NAS某项服务的内网端口映射到外网,然后通过"http://ip地址或域名+外网端口号"访问,就像下面这样:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

比如我想从公司(外网)访问家里NAS中的Home Assistant,只要输入http://域名:18123即可。虽然看起来貌似设置很简单,但是这种方式存在几个非常严重的问题,在当下糟糕的网络安全环境中,基本等同于裸奔,十分危险:

  • Http协议使用明文传输,完全没有保密性可言

  • 浏览器会报危险页面,比如Chrome会将所有HTTP协议网站自动标识为不安全网站

  • 无法验证身份,对服务器端(也就是NAS)缺乏保护

  • NAS中每一个服务都需要单独端口号,数量多了以后根本记不住,并且被扫描的概率太大

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

安全的外网访问方式——反向代理+HTTPS

而反向代理+Https则完全规避了以上所有缺点。既能保护NAS主机,又可以通过Https建立安全的加密访问通道。对于一般用户来说,没必要了解正反代理之间差异的技术性问题,只要知道反代+Https是目前相对比较安全的公网访问方案就可以了(网络安全没有绝对)。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

我把两种方案的区别做成表格放在下面:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

传统的反代+Https方案部署需要用到DDNS-GO和NPM(Nginx Proxy Manager),稍微有点复杂,所以很多新入坑NAS的小伙伴也就放弃了,宁可冒险使用HTTP裸奔。但今天,袋鼠叔叔给大家带来一款非常出色的国产开源软件Lucky,能够将整个部署过程完全傻瓜化,即便是小白也能跟着轻松完成。在此也特意感谢Lucky的作者GDY大神。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

这款软件支持包括Windows、Linux、Openwrt甚至小米路由器内安装。今天的教程将在Docker中部署,仍然使用绿联DX4600举例,其他品牌NAS部署方法基本一致。整个流程分为5步,分别是购买域名,安装Lucky,设置DDNS,设置SSL证书和设置HTTPS反向代理。接下来就正式开始~~

Step 1、域名购买

想通过外网访问,首先当然需要一个域名,可以在服务商处购买,这里我以阿里云为例,其他如腾讯云,华为云等域名购买和设置方法大同小异。成功购买域名并通过实名认证后,列表中就会出现域名,点击后面的“解析”。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

在解析设置页面中,点击“添加记录”,记录类型选择A,主机记录填入@,解析请求来源默认,记录值填写当前家里的公网IP地址,TTL默认10分钟即可。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

如果不知道家里公网IP地址,可以直接打开百度并搜索IP两个字母获取。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

接下来再重复一次上面的操作,只不过这次在主机记录中填入*(第一次是@),其他选项均保持不变。这样,我们就有了两条域名解析记录。第一条是专门解析主域名的,第二条则是解析二级域名的,以*来代替所有前缀。看到状态为“启用”就说明配置正确。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

接着点击右上角的头像,并在弹出菜单中点击Access Key管理。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

创建AccessKey,一定要把自己的AccessKey复制到电脑的文档中保管,因为只能获取一次,后面不会再次提供。到这里为止,域名的部分就都搞好了,非常简单。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

Step 2、在Docker中安装Lucky

转到NAS端,在镜像管理中搜索gdy666/lucky并下载:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

下载完成后在本地镜像中找到,创建容器:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

取一个自己喜欢的名字,然后点击下一步:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

重启策略选择“容器退出时总是重启容器”,然后不要点击下一步,而是转到上方的网络选项卡。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

由于需要将Lucky作为反代服务器使用,因此网络模式必须选择host,不能使用常用的Bridge!

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

转到储存空间选项卡,将Lucky安装位置设置在Docker/goodluck,装载路径中填写/goodluck,并给予完全的读写权限:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

端口设置保持默认的16601即可,其他选项也保持默认。直接点击下一步并启动运行:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

打开电脑浏览器,在地址栏中输入IP+16601,进入Lucky管理后台:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

缺省用户名和密码均为666,填入后登录,并点击左侧的“设置”选项卡,重新设置一套新的管理账号和密码,确保安全:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

Step 3、设置DDNS(动态域名解析)

接下来在左侧找到“动态域名”选项卡,并点击“添加DDNS任务”。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

DDNS任务名称随便填自己喜欢的,操作模式选择“简易模式”,DNS服务商选择自己域名的服务商(我这里是阿里云),并将前面保存下来的AccessKey ID和 Secret填入,然后按照自己家的公网IP类型选择v4或v6,获取方式选择通过接口获取,最后域名列表填写两行,第一行是主域名,第二行是*.主域名,代表二级域名。其他全部默认,完毕后点击添加:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

稍等片刻,看到同步结果为“域名IP和公网IP一致”,就说明DDNS设置成功了。多说一句,这里设置的DDNS其实和使用其他单独的DDNS应用(比如DDNS-GO)效果是一样的。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

Step 4、申请SSL证书

接下来我们需要为自己的域名申请SSL证书。转到“安全管理”选项卡,并点击“添加证书”。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

备注随便填,添加方式选择ACME,证书颁发机构选择Let's Encrypt,DNS服务商选择自己的服务商。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

和刚才一样,填入AccessKey的ID,Secret,主域名和二级域名。电子邮箱可以使用系统提供的临时邮箱,或者自己的邮箱都可以。算法选择默认的RSA2048。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

如果你的公网IP是IPv4,就开启DNS查询强制IPv4,同时启用DNS查询仅使用TCP通道。其他所有选项全部保持默认,并点击添加完成。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

证书申请需要稍等一段时间,大概几分钟。成功后就会出现ACME信息,颁发时间和道到期时间。每张免费SSL证书的有效期为三个月,但Lucky在证书到期日会自动续签,不需要人工干预。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

Step 5、设置反向代理及HTTPS访问

转到Web服务菜单,点击“添加Web规则”。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

Web服务规则名称随便填,规则开关开启,操作模式选简易模式,监听类型按照你的公网IP类型选择。监听端口这里给出的默认是16666,如果不喜欢,可以自己随便改,只要和局域网中其他服务端口不冲突就行,防火墙自动放行开启。特别注意,这里一定要开启TLS,否则无法使用HTTPS。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

接下来先不要着急添加规则,而是点击“添加Web服务子规则”。实际上,这个所谓的“子规则”,就是你从外网访问的某项服务,比如Home Assistant,或者NAS管理页面。名称还是随便写,规则开关开启。Web服务类型选择“反向代理”。

前端域名/地址需要填写你想要从外网访问该服务的二级域名,比如我这个子规则是分配给NAS管理页面的,那我就写nas.xxx.xx或者ugreen.xxx.xx,前缀可以按照自己的喜好编写。

而后端地址则需要写你访问该服务的内网IP+端口号,前面不要忘记加http://,其他选项全部保持默认。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

这里有一个需要注意的地方就是BasicAuth认证,也就是基础加密功能。在开启之后,从外网访问时,需要先输入账号和密码,等于是多加了一道保险。对于本身就有密码登录界面的服务来说,是否开启可以根据个人需求。但对于本身没有密码登录界面的服务,比如YACD小猫咪,开启BasicAuth认证还是有必要的。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

如果还有其他服务需要外网访问的话,那么还是按照上面的方法,添加新的Web服务子规则,需要多少服务,开几条子规则即可,但是注意二级域名前缀不要冲突。比如我这里就开启了5条:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

全部设置好以后,我们还需要把反向代理的端口通过路由器映射出去,才能够正常从外网访问。和正向代理不同,现在我们只需要映射一个反代端口就可以,不用把每个服务单独的内网端口再映射出去,注意内网端口和外网端口号要保持一致。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

端口放出去之后,如果所有设置都正常,就已经可以从外网访问了。比如我现在输入https://nas.xxx.xx:8888,就可以访问到NAS的设置页面。而且可以看到,域名的前面是有一把锁的,也就是说已经开启了SSL安全访问。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

不过这里还有个小问题,就是在输入网址的时候,还是需要带上Https://,否则在某些浏览器中会自动被识别为http,造成无法访问。为了解决这个问题,我们需要在仅输入域名时让浏览器也能够自动跳转到https。

回到Lucky,在Web服务中添加一条全新的Web服务规则(注意不是子规则)。名称随便,操作模式选定制模式,监听端口和前面的反代端口保持一致,TLS一定要禁用!然后点击“默认子规则”

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

打开默认子规则界面后,Web服务类型选择重定向,然后在默认目标地址中输入:

https://{host}:{port}

并打开万事大吉开关(自动添加请求头),其他所有选项全部保持默认,添加完成。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

这样一来,在外网访问时我们只需要输入xxx.xx.xxx:端口号,浏览器就会自动跳转到https协议,非常方便。

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

到此为止,我们就可以从外网使用反向代理+HTTPS方式访问家里的NAS服务器了,这已经是目前最完美的方式。不过有些小伙伴可能还会问,为什么不把最后的反代端口号也去掉,直接输入二级域名访问,岂不是更加优雅?

实际上,HTTPS协议默认的端口为443。当我们输入https://xxx.xx.xx时,就等同于访问https://xxx.xx.xx:443,只不过由于通用标准的缘故,443端口在输入时可以省略。

遗憾的是,目前绝大多数家庭宽带80和443端口都是被运营商封闭的,因此只能退而求其次,选择其他端口使用。如果你家宽带是万里挑一的幸运儿,没有被封闭443端口,那么就可以使用443端口作反代,并直接使用域名访问。

443端口是否开放,可以通过站长之家查询,输入域名或者IP和端口号即可:

https://tool.chinaz.com/port

比如我这里443端口就是关闭状态:

网络千万条,安全第一条——使用Lucky轻松实现反向代理+Https外网访问家庭NAS

今天的教程就到这里,只要按照以上步骤正确操作,就可以从外网轻松,愉快,安全,优雅的访问家中NAS任意服务,绝对是NAS进阶玩家必备。

我是袋鼠叔叔,一个拥有100+智能设备的全屋智能家居博主。关注我,了解更多关于智能家居/家电的那些事儿。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
317评论

  • 精彩
  • 最新
  • 我是v6公网,已经ddns动态解析到域名了,手机或者电脑热点的话都可以流畅访问了
    对于没有v6的 办公机 采用的Lucky的STUN穿透,但是有个问题 内网穿透基本 2 3天就要换一次地址 目前是通过webhook通知到微信 但是效率差而且繁琐,有没有办法吧穿透的地址绑定到域名上,或者只需要穿透一个地址 在里面可以访问其他的路径也可以。

    校验提示文案

    提交
    v6地址也支持ddns的

    校验提示文案

    提交
    我是openwrt配置了ddns,后面就是端口转发了。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 请问我用lucky反向代理了openclash的yacd控制台,目前能正常跳转了,但是yacd需要输入的url是什么呢?局域网ip和公网域名都试过了

    校验提示文案

    提交
    127.0.0.1?

    校验提示文案

    提交
    收起所有回复
  • 博主你好,我按教程做完了。域名+端口在局域网内其他电脑可以访问nas, 手机外网就访问不了。确认是ipv6公网。 lucky部署在旁路由。

    校验提示文案

    提交
    我也是同样问题,你解决了吗?

    校验提示文案

    提交
    我也是一样的问题,有人告诉我是光猫和路由器防火墙的锅,需要找运营商要光猫的超级管理员密码,路由器要选择可以关闭防火墙的,我觉得太麻烦 [皱眉]

    校验提示文案

    提交
    还有6条回复
    收起所有回复
  • 需要用手机televiz APP播放软路由docker容器的iptv,地址192.168.1.100:5188/iptv.m3u该如何设置lucky?

    校验提示文案

    提交
    我也遇到同样的问题,目前docker上lucky已经安装,阿里云的域名也有了,也托管到cloudflare了,下一步不知道怎么办了。还是没有系统的学习的锅,只知道照着做,不会处理问题。

    校验提示文案

    提交
    收起所有回复
  • 本地WiFi可以访问,外网无法访问的情况,按F12进入开发者模式,选中元素“192.168.31.”后面的输入框,将“minvalue=2”改为“minvalue=1”,然后在该输入框中填入1,内部端口、外部端口都填入16666,名称随便填,最后保存。
    然后你就会惊喜的发现,外网可以访问了。
    如果你也成功了,麻烦点个赞 [得逞] [得逞]

    校验提示文案

    提交
    没找到这个minvalue啊

    校验提示文案

    提交
    能具体说下minvalue在哪里吗

    校验提示文案

    提交
    收起所有回复
  • 请教一下大佬端口转发那一步是用lucky的还是主路由器的,用lucky的监听端口和目标端口不能设置一样啊

    校验提示文案

    提交
    我没有路由器转发端口一样可以用。没搞懂为啥

    校验提示文案

    提交
    好像是可以用了 [尴尬]

    校验提示文案

    提交
    还有4条回复
    收起所有回复
  • 很好的文章,我是用了Cloudflare和lucy组合的,到最后一步,发现局域网可用,外网不行,最后找到了原因,是路由器的防火墙问题。
    我是AX3600,百度了说小米防火墙留了几个接口的,于是改了8300,顺利通过

    校验提示文案

    提交
    我也用的cloudflare和lucky,光猫桥接,主路由是红米ax6000拨号,旁路由玩客云istore,前面的都设置了,反向代理没有一个能成功的,现在只能远程访问istore登录界面,其他的服务都不行,比如lucky的16601,openlist的5244。试了你说的监听8300端口也不行,还有其他端口吗?

    校验提示文案

    提交
    收起所有回复
  • 首先感谢大佬教程,简单易学解决了很长时间以来的难题;另外,还有一个问题要请教,怎么解决反代后内网nas访问,比如需要群晖照片备份,怎样在内网和外网一样能实现同一域名访问,谢谢

    校验提示文案

    提交
    搞定了,如果是openwrt系统,编辑/etc/dnsmasq.conf文件将域名指向反代服务器,具体参见如下两个网页去看看以及去看看

    校验提示文案

    提交
    请问小米路由器可以设置吗,看了下没有这个配置文件

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 请教一下,目前家里有公网IP,设置了DDNS,群晖可以设置反向代理,但是比如群晖drive和webdav会有常用的端口,也是一样设置反向代理吗?在外网客户端添加webdav服务的时候应该怎么设置呢?是直接输入反向代理的网址吗?

    校验提示文案

    提交
  • 腾讯的域名 + Cloudflare 域名解析,按照教程指引成功,有个小坑就是如果 Cloudflare 域名解析那里如果开启了代理,会导致不生效,关掉代理选择“仅限DNS”就好了,不过看网上的教程开启会更安全,不知道大佬有没有方法设置这里开启代理,然后本文教程还能生效的方法?

    校验提示文案

    提交
    我也有一样的疑问,文章非常好,按照文章设置完后现在就是自己的IP被暴露了,我也用CF的,开了代理之后确实IP变成CF的CDN了,但是再也打不开二级域名的了,都加载好久后提示host无响应。。。不知道咋解决

    校验提示文案

    提交
    我也遇到了同样的问题,你有解决的办法吗

    校验提示文案

    提交
    还有10条回复
    收起所有回复
  • 专门登录进来要给楼主点个大大的赞,我为了用HTTPS加密访问NAS在网上搜索了各种方法,不是年代久远失效了,就是镜像无法下载没法进行下一步,还有一些软件纯英文难道我这种小白用户,看了楼主的教程,一步一步非常详细,成功实现加密访问NAS,非常感谢

    校验提示文案

    提交
  • 博主你好,我根据你的教程,全部都设置完成,唯一不同的地方是路由器端口转发,我用的是openwrt的软路由系统有线中继的硬路由作为wifi,所以硬路由没办法设置端口转发,转而用软路由系统中的端口转发,转发规则为:tcp协议,ipv4,外部端口:xxx,源区域wan口,目标区域:lan口,内部ip:xxx,内部端口:xxx。设置完成后依旧无法从外网访问,试了很多次,求帮忙!

    校验提示文案

    提交
  • [皱眉] 大大你好,在单位向日葵控制家里的电脑按你的教程操作了全套,目前的状况是可以通过域名直接连接到我的飞牛,打开qbittorrent也都是可以的,但是我目前还有两个没办法解决,一个是单位只有ipv4,没办法打开我的域名,只能连我的手机热点,这样的话那我要是播放音乐等还是有点过于耗流量了,有没有什么办法。第二个就是我我通过这种方法打开qbittorrent无法看到我已经下载过的记录,新添加种子下载也看不到,但是我通过向日葵查看实际是已经添加成功了。

    校验提示文案

    提交
  • 我这样搭配来用有大半年了,还不错

    校验提示文案

    提交
    [赞一个] [赞一个] [赞一个] [赞一个] [赞一个]

    校验提示文案

    提交
    收起所有回复
  • 再说说如果只有ipv6该怎么办

    校验提示文案

    提交
    看我之前的文章 [高兴]

    校验提示文案

    提交
    指个路

    校验提示文案

    提交
    收起所有回复
  • 国内运营商为什么都封80、443端口

    校验提示文案

    提交
    因为不能家宽用于商业用途

    校验提示文案

    提交
    主要还是不想让老百姓随便建站吧,毕竟不好管理

    校验提示文案

    提交
    收起所有回复
  • 你好,我想问下,我的服务都在二级路由下面,应该怎么设置,我现在都设置好了,就是没有办法访问

    校验提示文案

    提交
    你有公网ip吗?

    校验提示文案

    提交
    有公网ip,也有域名,就是前面都按照你的步骤设置完了,就是到使用的时候不行,我在想是不是由于在二级路由下面的问题

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 可以把域名托管到cf,开启小黄云,再通过origin rules规则达到不带端口直接访问。优点:纯ipv4、纯ipv6网络下都能访问;缺点:访问速度不佳,需要优选ip。

    校验提示文案

    提交
    我知道可以套cf做到不带端口访问 [高兴] 但是速度实在太感人了,有点捡了芝麻丢了西瓜的意思,所以干脆就不提这个方案

    校验提示文案

    提交
    所以才要优选 [观察] ,而且针对只有v6公网的还是有点用 [高兴]

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 单位宿舍是移动企业宽带,用的电猫拨号,连ipv6都没有 [喜极而泣]

    校验提示文案

    提交
    联系换个单位哈哈哈

    校验提示文案

    提交
    单位的大都没有ipv6

    校验提示文案

    提交
    收起所有回复
  • 证书为什么一直在申请中?

    校验提示文案

    提交
    可能是你的网络不给力 [高兴]

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

最新文章 热门文章
2.2K
扫一下,分享更方便,购买更轻松