一、背景介绍
之前一直计划在家里放个NAS用来储存各种数据资料、同步手机数据之类的,过完年回来网上偶然得知在年前某播酷云就“矿难”了,于是赶紧入了一台。播酷云是万由代工的一款NAS,本来是计划上黑裙的系统,但是想到实际上并不需要那么多功能,只想尽量少折腾,干脆就装上了万由自家的U-NAS OS。
UNAS系统界面
我这边的使用场景是把NAS放在家里的内网,然后除了家里还会在其他地方对它进行操作,所以接下来要考虑的就是内网穿透的问题。
二、内网穿透方案
目前网络上常见的内网穿透方案基本上是这两种:
1. 采用公网设备作为中转代理,实现内外网设备连接,数据流量走中转通道。例如:FRP、ngrok、QC等等(我感觉万由家官方的U-Anywhere也是这种模式)
2. 采用公网设备作为握手代理,内外网设备连接代理服务器完成握手后,实现设备之间直连,数据流量直接走点对点通道,不经过代理服务器。例如:ZeroTier、N2N。
由于我自己的廉价VPS速度和流量也堪忧,所以搭建第一种方案是不可靠的,所以后续还是选定了使用ZeroTier作为内网穿透的方案。
ZeroTier的连接模式
我理解中ZeroTier实现数据连接的模式大概是这样的:
1. A 想要将数据包发送到 B,但由于它没有直接路径,因此将其向上发送到 C
2. 如果 C 有直接链接到 B,它会转发数据包给 B,否则它会继续向上游发送数据包,直到达到根节点 Z
3. 根节点 Z 知道所有节点,所以如果 B 在线,最终数据包将到达 B
4. C 还向 A 发送一个握手的消息,包含有关它如何到达 B 的提示。同时,将握手消息发给 B,通知 B 它如何到达 A
5. A 和 B 获取握手消息并尝试相互发送测试消息,可能会对 NAT 或防火墙进行穿透,如果这样可以建立直接链路,则不再需要中继,如果无法建立直接路径,则通信可以继续中继(速度慢)。
这里面的根节点 Z 是由ZeroTier官方提供的,用户也可以自己搭建类根节点 Moon,来依托 Z 节点提高数据交换速度。
三、安装流程
1、注册ZeroTier账号
如上文所说,ZeroTier 的根节点是由官方提供的,即便是自己搭建 Moon 节点也要依托官方的根节点来被发现,所以要使用 ZeroTier 还是得先注册ZeroTier的账号。免费账号可以建立一个虚拟局域网,允许同时最多100个设备连接到这个虚拟局域网中。
注册过程比较简单,就不细说了。注册登陆后,建立完一个虚拟局域网,会得到一个网络ID(不可修改)和一个局域网段(可以自定义)。
ZeroTier建立虚拟局域网
最重要的其中的网络ID,那是作为后续其他设备接入的唯一凭证。
2、在U-NAS上安装ZeroTier
U-NAS OS 本质上是基于 Debian 的一个 NAS 系统,所以安装流程就跟在 Debian 下面差不多。
1.开启 SSH服务
由于 U-NAS OS 默认没有安装 openssh,所以先在“APP管理器”中找到“SSH服务”安装上,并在相关设置中配置好端口。
开启SSH服务
2.用SSH登录U-NAS
一般可以采用Putty、MobaXterm等工具连接NAS的SSH端口即可,我这里懒得安装,直接在命令行下登录了。
- <p>ssh U-NAS地址 -l admin -p SSH端口</p>
复制代码
登录之后需要用`su root`来切换到 root 用户,默认密码为`yutech` ,如果之前那步勾上了“允许Root登录”的话可以省略admin用户登录再切换的流程。
SSH登录U-NAS
3.安装ZeroTier
由于 U-NAS 本质上是 Debian 系统,所以安装过程只需要一条命令就足够了。(由于此前已经切换到 root 用户,所以此处运行 bash 不需要加 sudo 了)。
- curl -s https://install.zerotier.com/ | bash
复制代码
正常情况下出现 Successful 就说明安装好了。
3、使用ZeroTier
安装完成后 ZeroTier 自动加入启动服务中,不需要手动启动。此时只要使用 join 命令加入之前创建的那个网络的 ID 即可将 U-NAS 加入到虚拟局域网中。
- zerotier-cli join (NetWork ID)
复制代码
如果出现`200 join OK`字样就说明成功连上虚拟局域网了。但此时它还并不能被访问,需要登录 ZeroTier 的控制中心。
发现U-NAS设备
看到已经发现了 U-NAS,这时候点击左边的勾勾来通过验证,就正式将 U-NAS 连接到 ZeroTier 的虚拟局域网中了。后面的 Managed IP 就是它在虚拟局域网中的IP地址。
认证U-NAS设备
这样连上了之后就能被其他加入这个虚拟局域网的设备发现,并与其进行点对点的数据传输了。
此时在 U-NAS 上输入`zerotier-cli listpeers`还能看到整个网络中的其他节点。
四、使用效果
整体弄好之后试试效果,我这里的环境是这样:U-NAS 放在家里,在家庭内网中,办公室的电脑在公司的内网环境下。
Ping
在办公室的终端上分别 Ping 一下它在 U-Anywhere 的地址和虚拟局域网中的内网地址,可以发现是成功打通了直连通道的。
复制文件的速度也已经很不错了,基本上能够跑满公司内网限制的网速了,也说明与之之间是实现了 P2P 直连而非走中转通道。
五、后续
后来还尝试了在 VPS 上面搭建 ZeroTier 的 Moon 节点服务器,也成功了,不过我的廉价 VPS 访问速度并不比 ZeroTier 自己的根节点快多少,所以也不知道具体效果如何。如果以后在国内的 VPS 上部署 Moon 节点的话,应该对国内的 ZeroTier 终端访问会有加快握手速度的作用。
|
|