浅谈公网访问NAS的几种方式
需求
最开始玩NAS的时候我对于公网访问NAS的要求很低,只要能访问就行,再加上那时候家里有ipv4的公网IP所以这根本就不是问题,那时候就用的NAS厂家提供的二级域名和ddns服务来访问的,但玩的时间长了,NAS上建的服务多了,需求也变得多样。例如我在NAS上建了一个播客服务器,自己上传一些音频,自己听,但是我发现手机上的客户端pocketcast就无法添加带有端口号的url。
我想了一下,公网访问家里的方式主流大概有下面几种,不过最好有自己的域名,并且已经会使用ddns。
有公网IP
如果有公网IP,也没有特别需求直接使用ddns就行了,这种方法理论上速度是最快的,访问速度完全取决于你家里宽带的上行速度。
这种方式唯一要注意的是你的公网IP是ipv4的还是ipv6的,一般来说目前运营商是只给ipv6的,我听说某些地方的运营商是要每月花一笔钱才给ipv4的公网IP。ipv6也没问题,就是对设备支持不太好,有些公司如果网络比较老旧,可能不支持,这就会导致你在公司的时候访问不了家里的NAS。
缺点就是所有的服务后面都会带有端口号,如果纯自用问题不大,就包括我一开始说到的那种情况,大不了不使用pocketcast客户端就好。
内网穿透
1. frp
frp穿透比较简单,但是需要有台vps在公网,vps上安装服务器版frps,nas上安装客户端版frpc,写好配置文件就行了,穿透好可以在vps上做反向代理实现https访问。
这种方式的访问速度就不太理想了,取决于你的nas与vps之间的访问速度以及访问设备访问vps的速度。我的vps在新加坡,速度很不稳定凑合能用。另外最近我发现访问速度非常慢,传文件更是不可能,我猜测是因为腾讯云(我的vps服务商)对frp做了限制(仅猜测,毫无根据)。
使用这种方式的话每个nas的服务都可以用一个单独的二级域名,并且没有端口号。
2. cloudflare隧道
互联网大善人cloudflare免费的东西还是很多的,其中就有cloudflared隧道。这个我之前已经做过介绍,不详细说了。
好处是没有成本,不需要有vps,只要在cloudflare上建立好隧道即可,访问速度也不稳定,但因为是官方服务,所以肯定是能用的。
比frp略好一点的是,只要隧道建立成功,后续再添加什么服务的话直接在cloudflare上就能操作,不需要写配置文件,而且如果域名也是托管在cloudflare的话,服务添加好域名解析也就添加好了,不需要这个服务删除后域名解析也就删除了,而且也不用考虑证书问题。
组网
组网就是把所有设备组成一个局域网,设备之间的访问就像是在家里访问一样,输入设备的IP地址就行,要访问nas上的某个服务,就输入nas上的IP地址加服务端口号。
组网的服务也很多,我现在用的是tailscale,免费版对于个人用户已经足够了。
优点是没有成本,只要注册tailscale账号就行了。访问速度得看情况,如果两台设备间能做到直连,速度就非常块,如果无法直连就需要通过tailscale的中继服务器进行访问,速度就不好说了。
缺点是每个设备都需要安装客户端,而且无法使用自己的域名访问,访问nas里的服务也要带端口号。
如果采用这种方式还想用自己的域名访问的话,也不是不行,同样得有一台公网vps,在这台vps上安装tailscale跟其他设备一起组网,然后在vps上对需要访问的设备地址进行反向代理即可。
我的用法
其实只要你nas上装的东西够多,肯定都无法只使用一种方式来访问家里的nas的,我说说我的:
大部分服务都是采用公网IP加DDNS来访问,包括nas后台,网盘等,这些服务纯粹就是我个人使用,速度快是最重要的。
上面说过的podcast服务器,还有类似传文件的服务器,也就是我需要跟朋友分享的,我目前使用的是cloudflare隧道。
固定设备的访问,例如我家里的电脑和公司电脑,我用的就是tailscale组网,主要是可以直连速度快,另外就是组网后我可以在家直接用Windows自带的远程桌面访问公司电脑,当然这跟nas就没什么关系了。
结束
上面就是我使用过的一些公网访问nas的一些方式及心得,祝大家玩的开心♥