NAS如何实现远程访问(方法篇)

男人的三大玩具:软路由、充电头和NAS

PS:为步入中年提前做准备
但是当搭建了三大巨头之一的NAS之后,我们往往不会满足于现状,远程访问是我们会遇到的第一个大问题。这篇文章就来讨论一下,NAS应该如何远程访问,以及每种方法的优劣。
注意,本文只是进行技术探讨,给出一个NAS远程访问的方法论,并不手把手展示全部技术细节,因为具体实现的方法多种多样,NAS的品牌也很多,没有一个统一的方法,网上也有很多教程,但是我会在关键地方给出必要的技术细节。
如果有机会,后期我会考虑出几篇具体的技术实现教程。
方案一 使用官方提供的远程访问服务
对于一些成品NAS,官方是提供了自带的远程访问服务,数据通过官方的服务器进行传送。这种方案优点是快速、便捷且相对安全,适合新手用户和嫌折腾的用户。
各家成品NAS的官方远程访问服务:
-
群晖:QuikConnect
-
飞牛:FN Connect
-
威联通:myQNAPcloud
-
铁威马:TNAS.online
-
极空间:zconnect
-
绿联:UGOS云服务
但是,往往这些服务给的带宽很低,并且有可能收费。而且对于NAS DIY用户来说,这些服务更是无法使用到了。
那么就止步于此了吗?对于拥有三大爱好的男人来说:

方案二 家用宽带DDNS
家中每年交着成百上千的宽带费用,怎么能够不利用起来!但是运营商分配的公网IP地址通常是动态变化的,我们无法得知下一次会被分配到什么地址。怎么办呢?

我们可以使用DDNS服务(动态域名解析,Dynamic Domain Name Server),将域名动态地指向公网IP地址,当IP发生变化时,会即时调整域名解析到的地址。
这种方案的前提:
-
拥有公网IPv4地址,或者拥有IPv6地址
-
拥有一个域名
-
路由器或者NAS支持DDNS
第一步 准备一个公网IP地址
如果前期已经找运营商开通了公网IPv4地址,那就可以直接使用IPv4地址。如果没有也没关系,可以看下面的IPv6,也不建议去开通IPv4,现在运营商的公网IPv4地址已经不太好开通了,并且开通了会对家庭宽带的安全性造成威胁,所以不是很推荐使用IPv4。
因为IPv4地址池较小(IPv4只有32位),可以很容易被穷举出来,互联网上有大量的扫描器在24h不间断探测暴露在公网上的服务,即便有的运营商给的公网IP是动态变化的,但也可以很快被黑客们扫描到,进而发起攻击。
那么如何查看是否支持公网IPv4地址呢?
百度搜索IP:

然后进入路由器,查看WAN口上的IP。如果两者一致,则证明本地获取到的运营商IP和出口IP一致,也就是拥有公网IP。
在IPv6普及的今天,一般来说家用宽带都已经开通了IPv6服务,可以通过下面这个网址检测是否支持IPv6:
支持IPv6的界面显示如下:

如果发现没有开通,可以找装宽带的小哥或者运营商咨询,有可能是光猫、路由器设置没打开或者不支持,也有可能是因为没给你开通IPv6,这里就不啰嗦了,网上也有很多开通教程。
IPv6我是支持开通的,因为它对于网络环境的提升是有帮助的,而且IPv6地址池很大(IPv6有128位),很难被穷举出来,即便穷举出来了,IPv6会因为租期到了更换为下一个IPv6地址,并且大部分路由器的防火墙默认会对IPv6进栈流量进行拦截(iKuai路由器除外,默认全通)。
第二步:配置DDNS
首先在域名服务商处创建API密钥或者token。
DDNS功能的可用途径:
-
路由器自带的
-
NAS自带的
-
脚本
如果你是WinNas,可以尝试我开发的这款基于腾讯云的DDNS脚本:https://github.com/vastroc/Win-DDNS
注意:这种方案整体不推荐
这种方案整体不推荐!无论是IPv4还是IPv6,只要暴露公网,都会对家庭网络造成很大威胁,虽然IPv6很难被穷举探测,但是使用DDNS服务后,就相当于直接告诉了别人自己的IPv6地址,具有极大的安全隐患。
安全建议:
-
防火墙设置仅允许特定地址和端口被远程访问
-
修改NAS的默认端口号,尽量改到高端口,降低被扫描的风险
-
开启双因子验证,防止账号被爆破
-
开启爆破封锁策略
方案缺点:
-
将NAS直接暴露到公网对数据的威胁风险极高。
-
家用宽带运营商会封锁80、443等常见端口。但是也不推荐使用这些端口,会增加被扫描的风险。
-
如果使用IPv6进行映射,那么只能在支持IPv6的网络中实现远程访问。经测试,手机流量一般都是支持IPv6的。
方案三:DDNS + VXN
我们可以通过在直接暴露公网的基础上对NAS传输信道加密——套一层微批恩。好处是只需要暴露微批恩的端口,NAS的所有服务端口都在内网。
该方案同样可以借助路由器、NAS或者脚本实现。
可以使用的协议或服务:
-
L2TP/IPsec
-
WireGuard
-
OpenVXN
安全建议:
-
使用安全性高的微批恩协议
-
改用高端口
-
启用UDP
**方案缺点:**使用麻烦且还是直接暴露公网,综合体验不如方案四
方案四:异地组网
该方案是最推荐的,墙裂推荐!原因如下:
-
不需要公网IP(但有IPv6更好),无需担心公网IP被扫描和泄露问题
-
不需要将服务器直接暴露公网
-
不需要在防火墙中开启服务端口
-
不需要域名,没有额外开销
-
安装和使用简单,有多端app
-
可以将NAS作为出口节点,实现异地上网
-
可以将NAS作为子网路由,实现对局域网内其他设备的远程访问
常见异地组网方案:tailscale(推荐)、贝锐蒲公英、爱快SD-WAN、节点小宝、星空组网、飞鼠组网...
群晖上使用tailscale的具体方法:
- 登录tailscale官网,注册账号

-
下载tailscale群晖版安装包:https://pkgs.tailscale.com/stable/#spks,然后从群晖套件中心手动安装tailscale
-
进入SSH,启动tailscale:
tailscale up-
从群晖用户界面打开tailscale套件,然后登录账号,并在tailscale网页后台中允许群晖设备加入网络
-
在tailscale网页后台中设置密钥永不过期

- 群晖任务计划中,新增用户定义的脚本,设置自动更新:
tailscale update --yes

- (选)允许通过NAS访问局域网内其他设备:
tailscale up --advertise-routes 192.168.xxx.xxx/24 --accept-routes=true然后在tailscale网页后台中对NAS设备启用Subnet routes 192.168.xxx.xxx/24

- (选)开启出口节点:
tailscale up --advertise-exit-node然后在tailscale网页后台中对NAS设备启用Use as exit node选项

后记
以上所有方案本质都是在将NAS的数据通过公网进行传输,那么这个过程必然就存在着风险,只是暴露风险等级不同,所以有必要对NAS的安全基线进行加固,后面我会出一期NAS安全基线加固的基本方法。
我是其名为碰,欢迎关注!