前言
2019年年底,RIPE NCC确认全球IPv4地址区块已经被全部分配,现在人人拥有多台需要联网的设备,有限的ipv4不能满足高速增长的设备数量,催生出了NAT技术。NAT技术的目的是将多台设备的流量从一台设备发出,这样就能让大量的设备共享一个公网ip出口,缓解ip不足的问题。
但是NAT的弊端也很明显,不在同一个局域网的其他设备不能直接准确地访问到躲在NAT后面的设备。
先了解一下什么是NAT
打个比方公网相当于小区,公网ip相当于楼号,NAT相当于每栋楼的快递中转站,端口相当于快递站的快递号码。内网设备tom访问A时,此时NAT建立了一个->51000的端口映射。也就是快递中转站记录了一下,以后收到51000号快递就送到设备tom 。A收到来自这栋楼51000号的请求,再把数据发回给51000号,快递站自然会把这个来自A的51000号的数据送给设备tom,所以tom可以正常上网。但是如果设备tom没有主动访问A,快递站就不会随便把数据送给设备tom,A无论如何都不能把快递发到tom手上 。这也就导致了从公网无法访问NAT后的设备。
zerotier的原理
NAT对于NAS的使用是致命的,只要离开了自己的路由器,在其他地方就无法访问。但是NAT也不一定断了我们通过直连访问家中NAS的路,只要我们可以“骗”快递站建立一个映射,比如把所有49999端口的数据全部发到我家,然后再让手机连接这个端口,就可以实现接近直连访问的速度。这就是zerotier的精髓——内网穿透。如果对穿透NAT感兴趣欢迎阅读我曾经写过的一篇有关WebRTC的科普向博客,里面详细介绍了打洞的过程。WebRTC入门
zerotier能做到什么
zerotier能让你随时随地连接上NAS。在手机和nas上同时开启zerotier并且加入到同一个虚拟网络中,手机在大部分地方都可以借助zerotier的内网穿透能力访问到NAS。在网络环境不允许穿透的地方,zerotier会通过一台中转服务器把流量中转给nas,虽然这非常慢但是也是可以用的。如果你愿意花一点钱 ,买一台国内的vps安装zerotier,然后将中转服务器设置为你的vps这样可以极大提高访问速度。
zerotier安装教程
1. 注册账号
首先登陆官网,点击右上角的注册。
注册完成并登录后会进入zerotier后台,此时没有创建网络。点击左上角的创建网络,就会发现在列表里多了一行,点进去。
在网络设置里有很多选项,先不要着急,从上到下一个个设置。
记下这个Network ID,其他设备加入网络需要用。
把Access Control设置为Private,这样每个新加入网络的设备都需要你登录后台进行允许,否则无法访问你的网络。
在Advanced中可以设置这个虚拟局域网的ip段,不需要修改就可以直接用。
再往下的设置也不需要调整
2. 安装客户端
为了方便下载,下面是从官方安装教程中复制的安装包下载链接,版本为1.6.2。
linux可以用以下命令一键安装:
curl -s https://install.zerotier.com | sudo bash
3. 加入网络
以windows,群晖为例展示如何加入网络并且在后台允许加入网络。
windows:右键托盘图标,点击Join Network
在输入框输入刚才的Network ID,然后join
浏览器进入后台管理页面,找到Members,可以看到一台新的设备加入了网络。
点击auth,稍等一下会出现一个自动分配的ip。只要是加入这个网络的设备,都可以通过这个ip访问到这台电脑。
群晖:
找到对应cpu型号的安装包下载。
下载完成后进入群晖套件中心,点击手动安装,选择刚才下载的安装包。
然后在右下角输入Network ID,然后join。
后面的操作就是进入后台,允许这台设备加入网络,与windows的操作是一样的。
安卓和ios的操作也类似,安装软件以后输入Network ID加入网络然后在后台允许。
成功组网
可以试试直接输入群晖zerotier的ip访问,看看速度怎么样。如果速度不理想,可能是宽带的NAT类型无法打洞,zerotier使用了位于国外的中转服务器,提高网速的办法只有自己购买国内VPS进行流量中转,但是这不是本文的内容 ,下一篇zerotier的文章会讲讲如何购买vps,搭建自己的zerotier中转服务器。欢迎多多点赞收藏加关注!