绿联NAS配置公网访问


最近趁618,入手了绿联的成品NAS玩玩。玩了几周发现,成品NAS是真的香。常规服务开箱即用,不用自己搭。公网访问如果要求不高的话,系统自带的UGreenLink远程访问服务也能满足需求。

不过还是有一点让我感觉不太很方便,我平时习惯用Obsidian记录文档,多设备间使用Remotely Save插件通过webdav同步到NAS里。当需要外出的时候,UGreenLink只提供了访问门户页的远程访问,并没有提供webdav服务的远程访问(至少我没找到,如果有的话麻烦赐教)。

所幸绿联的系统自带DDNS支持,主流的DDNS服务商也都支持,省去部署三方DDNS服务,这一点还是需要点个赞的。下面记录一下我的配置过程。

DDNS配置

DDNS配置需要有一个自己的域名,我的域名是在阿里云买的。这里主要介绍阿里云域名的DDNS配置,其他服务商的配置也是类似的。首先在控制面板上找到设备连接-远程访问,勾选启用DDNS支持:

新增编辑DDNS,服务商选择阿里云,域名建议使用二级域名,我这里用的通配符*.nas.xxx.com,因为后面要用nginx做反代。下面的AKSK需要在阿里云的控制台配置,注意不要泄漏,IPv4和IPv6都选自动。这里要提一下,虽然IPv4是没用的(因为没有公网IPv4),但还是要加上去,否则可能会导致域名无法访问。 配置完成后点击连接测试,没问题点击应用就算配置完成了。

反向代理

现在我们的NAS可以公网访问了,但是公网直接走http无异于大街上裸奔。理想的做法是开启ipv6防火墙,只开放特定端口的https的方向代理。 要使用https就必须用到证书,虽然绿联的系统也支持自签名证书。但需要手动导入,且不支持自动更新。希望官方尽早优化,需求做一半等于没有做。没办法,还是得祭出反向代理神器nginx proxy manager(后面简称npm)。 npm通过docker安装,我们先在NAS里安装好docker。之后在镜像中搜索并下载:jc21/nginx-proxy-manager 如果下载不了就需要配置加速器,可以查看官方提供的教程:Docker 镜像加速地址推荐。下载完成后配置容器。其他配置都可以不用动,容器目录需要把**/etc/letsencrypt**目录给映射上,否则服务会无法启动,映射的目录可以自己指定: 端口映射我改成了几个比较好记的端口号,注意避免和NAS已有的端口冲突:

配置完成后,就可以正常启动了。回到容器页面,可以看到系统很贴心的提供了快速访问,点击就可以通过UGreenLink直达服务web管理页。这里不得不吐槽,既然产品都有能力为三方服务提供远程访问,为什么不把smb、webdav这些系统服务的远程访问也支持上呢?(也有可能已经支持了,但是藏的太深?)总之,还是希望产品经理早点听到用户的声音吧。 言归正传,npm启动成功后,进入管理页配置证书。Domain Names这里使用和DDNS设置一样的通配符二级域名,DNS Provider这里选Aliyun,下面的Credentials File Content需要注意输入正确AKSK,之后点击保存,等待一段时间后就完成了。之后npm会自动更新证书,这一点非常方便。

接下来,我们要配置反向代理,来到Proxy Hosts页面,新增webdav域名路径,配置可以参考我的webdav.nas.xxx.com,转发IP填写172.17.0.1,端口选择5005: 证书选择我们之前申请的通配符证书,开启SSL和HTTP/2: 到此,反向代理就配置完成了。打开浏览器,输入https://webdav.nas.xxx.com:8000,如果能跳转到webdav页,就算成功了。

防火墙设置

最后,别忘了还要把防火墙打开。防火墙规则可以在家里的路由器上设置,也可以在NAS上设置。建议最好在路由器上设,这样可以保护局域网中的其他设备。这里提供NAS上的配置参考:

8000端口是开放给公网访问npm反代用的,5005端口开放给docker容器访问(172.17.0.1是docker默认的bridge网关),内网开放所有端口。其他服务可以按需配置。最下面选择拒绝访问,白名单就设置好了。

总算折腾完了,休息一会儿吧。

Category