一次搞定NAS反代、端口转发、内网服务加密访问!超强神器DDNS+NPM上手教程!
引言
近年来NAS市场可谓百花齐放,相信有不少朋友已经使用上了NAS,NAS除了提供日常数据集中管理、相册备份、文件分享等基础功能外,还可以借助NAS部署各种虚拟机、docker容器等等三方应用、服务。

那么势必会使用到DDNS远程访问、反向代理、端口转发、远程加密访问等功能,所以本期就结合DDNS+Nginx Proxy Manager来演示一下如何一次使用NAS实现以上功能,一劳永逸解决远程访问和相关远程安全问题!话不多说,本篇有点长,以下是大纲,请按需跳转查阅~
部署效果演示
出场设备一览
NPM部署演示
DDNS部署演示
NPM基础优化
反代、加密设置
端口转发
结尾
看完本篇可以实现什么效果
通过本期演示,你可以使用NAS实现以下功能和玩法~
1、借助家宽的公网IPV4、IPV6+域名实现远程访问家中NAS、各内网设备;
2、通过域名+NPM实现反代内网中的各种设备、NAS中的三方服务;
3、通过NPM给远程访问套上SSL证书实现https加密访问,让远程更加安全、可控;
4、借助NPM的端口转发隐藏内部服务、实现各种进阶玩法。
出场设备一览
本次出场的主要演示设备是来自绿联私有云DXP4800,如果你是其它支持docker的设备也可以使用通用docker命令进行部署,来简单介绍一下这台性价比极高的绿联DXP4800~

一台NAS要想使用体验好,最基础的就是硬件配置了,绿联DXP4800搭载英特尔四核N100处理器、标配8G DDR5内存,当然内存是可扩展的,最大可以扩展到16G满足各种虚拟机和docker需求,并且它的做工在所有NAS中可以说是没得挑的,一体式铝合金机身、彰显设计美感的造型、精致丝滑的硬盘仓、明亮但不刺眼的可调节亮度的指示灯,细节非常到位!

盘位方面提供了4个3.5寸+双M.2共6盘位设计,接口方面提供了高速USB-C、USB-A等接口若干、还有双2.5G网口加持,完美就是主流旗舰NAS的配置,对于摄影或视频玩家最友好的是还提供了SD卡槽,方便接入存储卡拷贝素材,在众多NAS中好像就绿联DXP系列NAS有提供,你可以不用,但它不能没有!

在最重要的系统方面,绿联DXP系列搭载的是全新的UGOS Pro系统,目前也已经开放了针对老机型升级新系统的通道,强烈建议喜欢折腾的玩家升级,因为全新UGOS Pro系统经过几个月的大版本更新,目前已经非常稳定和好用了!

比如说docker支持compose了,部署容器、项目更加方便;影视中心支持原盘播放;虚拟机新增对macvlan网络支持,支持桥接网络,宿主机和虚拟机可以通信了;还有相册AI模型升级,识别能力更上一层楼等等,毕竟UGOS Pro基于全新Debian底层,系统更加好用也只是时间问题。

感兴趣的小伙伴可以申请官方体验账号一试,试过就知道所说不虚,话不多说,咱们进入本篇正题~
Nginx Proxy Manager部署
Nginx Proxy Manager(下文简称NPM)除了原作者版本外,还有其它许多基于原版修改而来的,比如有汉化版、使用非80、443端口的非标版,因为家宽的80、443端口基本是不能用的,所以非标版比较适合部署在NAS上,所以本期我们使用jlesage/nginx-proxy-manager版本的NPM来演示!

常规通用docker部署
首先是常规的docker部署命令,请确认当前NAS主机的8080、8181、4343和3000端口未被占用,~/data和~/letsencrypt请填写真实映射主机目录即可,然后打开SSH粘贴修改好的命令运行即可部署成功。
docker run -d
--name=nginx-proxy-manager
-v /docker/appdata/nginx-proxy-manager:/config:rw
-network=host
jlesage/nginx-proxy-manager
Docker-Compose部署
但是是dcoker run命令对于新手来说还是有点难了,咱们就使用compose来部署吧,请确认当前NAS主机的8080、8181、4343和3000端口未被占用,以下是docker-compose部署命令,可以不用改,直接使用以下完整命令即可。
version: '1'
services:
nginx-proxy-manager:
image: jlesage/nginx-proxy-manager
volumes:
- ./docker/appdata/nginx-proxy-manager:/config:rw'
network_mode: "host"
在诸多新势力NAS品牌中,绿联UGOS Pro系统是最先支持compose编排的,走在前列!

NAS支持Docker Compose编排的作用在于简化多个容器的管理和部署,使用Compose,你可以通过一个配置文件轻松定义和运行多个服务,自动化环境设置,减少手动操作的复杂性,相比于普通docker run命令和UI界面手动部署容器的方式真的方便太多了!

在绿联docker中新建项目,在Compose配置这里直接粘贴前面提供的命令,在项目名称这里随意命名,我写的是jle_npm,然后存放路径会自动生成一个路径,咱们不用管,它会在绿联默认的docker文件夹下进行存放,非常方便,这个自动生成免去新手的疑问,很人性化,而且你可以发现vloumes部署的路径写的是./docker这种开头,它会默认按命令在存放路径下生成这个映射路径,真的舒服,因为不用你自己去找绝对路径,这种相对路径的方法极大降低了部署难度。
好了,现在你直接点击立即部署,没错,就搞定了!
PS:请配置好docker加速或代理,不然拉取不成功~

然后它会出现一个部署日志,等它自动拉取镜像,最终出现Created提示就说明部署成功,点击完成。

在绿联docker的项目这里就可以看到npm正常运行了,双击可以进入容器详情进行管理。

而且绿联的compose还支持重新编辑,在Compose配置一栏可以看到之前咱们粘贴的命令,如果你想要更改端口或镜像版本,直接在此处手动修改,重新部署就可以,即改即生效,也不用担心原有配置会失效,有时发布了新容器版本,直接在这重新部署一次就行了,真的方便。

打开你的浏览器,输入NAS的IP地址加8181端口号即可进入npm后台管理界面,邮箱默认是admin@example.com,密码默认是changme,点击登录。

登录后会提示你输入一下邮箱,输入你真实邮箱地址,点击保存,再按提示修改一下密码即可,修改密码处填写默认密码changme,新密码和确认密码就填写你自定义的密码,请使用复杂密码,不然会提示无法更改。

更改完默认密码后就可以来到后台主页了,主要功能如下图所示,提供了反代、重定向、端口转发和错误页面功能,下面咱们结合实际案例来演示一下这些功能具体怎么用吧!

DDNS部署
要想完美使用NPM的以上功能,你还需要一个使用一个域名来解析当前NAS的公网IP,不管是公网IPV4或公网IPV6都可以使用,首先部署DDNS-GO进行动态域名解析吧,因为DDNS-GO完美支持IPV4和IPV6。
首先是常规docker部署ddns-go的命令,其中/opt/ddns-go部分请替换为真实NAS主机上的目录,然后通过SSH粘贴运行即可部署。
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
但compose部署是最简单的,compose命令如下,如果是绿联UGOS Pro的小伙伴,不用做任何更改,复制它就行。
version: '1'
services:
ddns-go:
image: jeessy/ddns-go
volumes:
- ./opt/ddns-go:/root'
restart: always
container_name: ddns-go
network_mode: "host"
然后在绿联的项目中新建,粘贴前面命令到配置框中,项目名称随意命名,点击立即部署,等它自动部署完毕。

部署完成后,在ddns-go项目的日志中就可以看到有提示了,很明显是通过9876端口进行后台管理。

在浏览器中输入NAS的内网IP加9876端口号,访问,初次访问直接点击登录,它是没有账密的。

进入后台,往下拉,在『其他』部署取消勾选『禁止公网访问』这个按钮,并自定义用户名和密码,下次就通过个这账密进行ddns-go后台登录。

接着去阿里云或腾讯云申请一个十块左右那种一年的域名,随意都行,我这里就以阿里万网为例,随意申请一个,输入要的域名字符,找那种最便宜的就行,按提示购买,非常简单的流水式操作,按提示就行,非常简单,我就不演示了。

购买完域名后,返回ddns-go后台,点击阿里云(如果你是其它域名商,请按需选择,以下列表的都支持),点击创建AccessKey,跳转后按提示创建,将创建好的两串密钥粘贴到ddns中的两个框中。

我这里以公网IPV6为演示,如果你没公网V4,把公网IPV4的启用开关取消勾选就行了,如果有,和IPV6的操作是一样的,记得公网V4的话请去路由器后台设置一下端口转发。
在Domains这里输入你前面购买的域名,建议加一个二级域名,也就是图中的dxpnas部分+我的域名,就组成了二级域名,dxpnas这几个你可以自定义任意字眼,还有就是打开你NAS的IPV6开关,当『获取IP方式』这里出现240x开头的V6地址说明就成功了,为了保证可远程访问NAS,请把路由器防火墙关闭,不然可能无法让公网流量入站,然后拉到最底,保存就完成了域名配置。

点击ddns-go后台的右上角日志功能,会发现新增域名解析的提示,那么这串域名就是实现了DDNS解析了,后续不管NAS的IPV6地址如何变动,DDNS-GO都会自动把最新地址和这串域名绑定起来,你仅需记住这串域名就能远程访问这台NAS,这就是DDNS的方便之处,毕竟记住一个域名经记住一串IP地址简单多了。

在浏览器或手机中使用数据流量访问这串地址,成功了,当然要加上端口号,以绿联UGOS Pro的后台为例,默认端口是9999,那么域名加9999端口就可以成功访问了。

如果你使用解析好的域名加8181端口号,也可以成功远程访问前面搭建好的NPM后台,是不是很方便,就实现了公网远程访问,有了这个解析好的域名,咱们就可以借助这个域名和NPM进行搭配使用了,请继续往下看!

NPM基础优化
首先点击SSL Certificates来申请证书,点击右上的Add SSL Certificate,选择Let Encrypt。

在Domian Names这里输入你解析好的域名,将Use a DNS Challenge打开,选择你的域名服务商,并根据提示获取相关key填入,同意后点击申请。

大概几分钟后,看到证书前面有绿色小点就代表申请成功~

或者使用第二种方式申请证书,去域名服务商处下载对应的Nginx证书,以阿里为例,免费提供的,下载解压。

然后返回NPM后台,证书这里选择Custom。

分别把key和pem格式的证书上传到对应位置,选择Save也能完成证书设置,建议优先使用第一种方式,证书完毕后,下面来演示一下NPM如何使用。

反向代理、加密
首先来演示一下它最强的反代功能,如果你在docker上通过bridge或host网络部署了许多容器,那么可能有部分容器你直接使用解析的域名+端口访问是不成功的,这个时候我们可以借助NPM的反代来实现通过域名访问。

又或者一些NAS上的内部服务或三方容器只有常规http形式访问,暴露在公网上会有不安全因素,咱们可以在反代前给它加上SSL证书实现https加密访问,可以避免中间人攻击。
反向代理是一种服务器配置,它接收用户的请求并将其转发给后端的服务器,然后将后端服务器的响应返回给用户。

操作也很简单,点击Dashboard,点击右上角的Add Proxy Host,在Domain Name处填写你在DDNS-GO中设置的域名,但这个NPM好像在诸多NAS上成功反代的话需要加两种格式的域名,即填写一个不加任意端口的域名和一个加4443端口的域名即可,大家照抄就行了,因为只有这个版本的NPM才使用了非80、443端口且能以host形式部署,所以这个小bug倒影响不大,每次新增不同域名时就统一添加不带端口和带4443端口的域名就行了。
在Scheme处选择http,一般内网服务都是这个协议,Forward Hostname这里填写你想反代的内网服务,我的Jellyfin内网IP是192.160.10.188:8096,所以就对应填写它的IP和Forward Port端口就行,如下图所示。
开启Block Common Expilits和Websockets Support这两个开关。

然后开启一下https公网访问吧,更加安全,点击SSL,在SSL Certificate选择你前面申请好的SSL证书,下面的所有开关都打开,开启强制加密访问,点击Save即可生效。

添加成功后,点击其中带4443端口的链接即可。

打开手机流量让电脑连接,模拟远程访问,可以发现成功通过域名访问我的Jellyfin后台,而且注意它是https加密访问形式的,显示连接是安全的即代表加密成功,这种方式很安全,你看,通过NPM的反代功能就能把内网服务实现公网访问,并且还套了一层加密,这个功能也是它的优势了,强烈建议有内网服务需要暴露在公网的都这么操作一次。

如果想通过不同的二级域名来访问不同的内网服务,在DDNS-GO后台的域名列表继续添加不同的二级域名就行了。

然后按前面操作申请好SSL证书,或申请泛域名证书,再添加反代,如下图所示,我直接给绿联的后台套了反代和加密。

成功实现远程加密访问绿联后台,这个红色https是因为此时证书还在申请中,没生效,等它生效了就显示连接安全了。

怎么样,NPM的反代和加密访问是不是就值回票价了,而且现在基本都有公网IPV6了,使用公网访问内网速度真的快,再配合NPM加密、反代,相得益彰,推荐有此类需求的朋友使用起来!
端口转发
除了前面的反代、加密外,NPM的端口转发也是它的优势功能之一了!在Dashboard点击Streams即可进入端口转发设置,虽然这些界面都是全英文的,但基本操作一次后就知道它是干嘛的了。

端口转发是一种网络配置,它将来自特定端口的请求转发到内部网络中指定的设备或服务,通常用于允许外部访问内部网络中的服务,例如将外部请求的80端口(HTTP)转发到内部服务器的8080端口。这样,用户可以通过公共IP访问内部资源,而无需直接暴露内部网络的结构。
比如说我希望访问域名:6008端口时能直接访问到内网中的Jellyfin后台,那么操作也很简单,点击Add Stream,在Incoming Port这里填写6008端口,在Forward Host和Forward Port处填写要转发的内网服务的IP地址和端口,点击Save保存。

现在直接通过域名加6008端口即可直接远程访问Jellyfin后台了,怎么样,是不是很方便,不过和反代相比,端口转发不能设置缓存、加密、路径之类的,适合轻量且不要求加密的场景。

其它想要转发的话同理,就不再一一演示了,因为真的很简单,就是指定入站端口和转发目标及转发端口就可以了。
NAS玩法推荐
如果是使用绿联的小伙伴,可参考下往期使用绿联搭建家用All in One、部署影音自动化的教程~UGOS Pro系统的玩法也非常丰富了~
如果想以NAS为基础,挂载各大主流公有网盘到本地使用,可参考往期~
结尾
通过前面演示,相信各位新手朋友也能玩上NPM了,其实Lucky和它有异曲同工之妙,都可以实现以上提到的功能,如果感兴趣的朋友可以看看我往期关于Lucky的部署和上手教程,喜欢哪个就用哪个!
通过NPM和Lucky之类的容器可以让NAS实现完美远程访问,并且还能给这些服务套上一层SSL加密,如果你平常喜欢折腾各种三方容器和服务,建议使用起来,让你的NAS使用更加得心应手。

那么本篇教程就到此结束,希望对于各位刚接触NAS有小伙伴有所参考价值,请关注、点赞,有其它问题请评论区交流,各位下期见!

我是阿皮啊-
校验提示文案
zyling
校验提示文案
值友4398378665
校验提示文案
普通女孩日常分享
校验提示文案
值友4398378665
校验提示文案
90后程序猿
校验提示文案
星的AB
校验提示文案
老实和尚说不得
校验提示文案
yihonggz
校验提示文案
大米饭s
校验提示文案
两个字
校验提示文案
笔点酷玩
校验提示文案
笔点酷玩
校验提示文案
浮生轻鸿
校验提示文案
浮生轻鸿
校验提示文案
姬小雪
校验提示文案
姬小雪
校验提示文案
浮生轻鸿
校验提示文案
浮生轻鸿
校验提示文案
笔点酷玩
校验提示文案
笔点酷玩
校验提示文案
两个字
校验提示文案
zyling
校验提示文案
大米饭s
校验提示文案
星的AB
校验提示文案
yihonggz
校验提示文案
90后程序猿
校验提示文案
老实和尚说不得
校验提示文案
普通女孩日常分享
校验提示文案
值友4398378665
校验提示文案
值友4398378665
校验提示文案
我是阿皮啊-
校验提示文案