查看: 16568|回复: 17

[教程说明] 在U-NAS下配置Zerotier进行内网穿透

[复制链接]
发表于 2019-2-27 18:33:30 | 显示全部楼层 |阅读模式
本帖最后由 candura 于 2020-3-5 14:17 编辑

一、背景介绍
  之前一直计划在家里放个NAS用来储存各种数据资料、同步手机数据之类的,过完年回来网上偶然得知在年前某播酷云就“矿难”了,于是赶紧入了一台。播酷云是万由代工的一款NAS,本来是计划上黑裙的系统,但是想到实际上并不需要那么多功能,只想尽量少折腾,干脆就装上了万由自家的U-NAS OS。

U-NAS系统界面

U-NAS系统界面

  我这边的使用场景是把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建立虚拟局域网

ZeroTier建立虚拟局域网

  最重要的其中的网络ID,那是作为后续其他设备接入的唯一凭证。

2、在U-NAS上安装ZeroTier
  U-NAS OS 本质上是基于 Debian 的一个 NAS 系统,所以安装流程就跟在 Debian 下面差不多。

  1.开启 SSH服务
  由于 U-NAS OS 默认没有安装 openssh,所以先在“APP管理器”中找到“SSH服务”安装上,并在相关设置中配置好端口。

开启SSH服务

开启SSH服务

  2.用SSH登录U-NAS
  一般可以采用Putty、MobaXterm等工具连接NAS的SSH端口即可,我这里懒得安装,直接在命令行下登录了。

  1. <p>ssh U-NAS地址 -l admin -p SSH端口</p>
复制代码


  登录之后需要用`su root`来切换到 root 用户,默认密码为`yutech` ,如果之前那步勾上了“允许Root登录”的话可以省略admin用户登录再切换的流程。

SSH登录U-NAS

SSH登录U-NAS

  3.安装ZeroTier
  由于 U-NAS 本质上是 Debian 系统,所以安装过程只需要一条命令就足够了。(由于此前已经切换到 root 用户,所以此处运行 bash 不需要加 sudo 了)。
  1. curl -s https://install.zerotier.com/ | bash
复制代码

  正常情况下出现 Successful 就说明安装好了。
  3.1(补充更新说明)
  由于 U-NAS 默认似乎没有安装 curl 命令,会出现这个提示“bash: curl: command not found”

curl

curl

  这时候需要使用“apt install curl”命令来先安装一下 curl 工具。

3、使用ZeroTier
  安装完成后 ZeroTier 自动加入启动服务中,不需要手动启动。此时只要使用 join 命令加入之前创建的那个网络的 ID 即可将 U-NAS 加入到虚拟局域网中。
  1. zerotier-cli join (NetWork ID)
复制代码

  如果出现`200 join OK`字样就说明成功连上虚拟局域网了。但此时它还并不能被访问,需要登录 ZeroTier 的控制中心。

发现U-NAS设备

发现U-NAS设备

  看到已经发现了 U-NAS,这时候点击左边的勾勾来通过验证,就正式将 U-NAS 连接到 ZeroTier 的虚拟局域网中了。后面的 Managed IP 就是它在虚拟局域网中的IP地址。

认证U-NAS设备

认证U-NAS设备

  这样连上了之后就能被其他加入这个虚拟局域网的设备发现,并与其进行点对点的数据传输了。
  此时在 U-NAS 上输入`zerotier-cli listpeers`还能看到整个网络中的其他节点。

listpeers

listpeers


四、使用效果
  整体弄好之后试试效果,我这里的环境是这样:U-NAS 放在家里,在家庭内网中,办公室的电脑在公司的内网环境下。

Ping

Ping

  在办公室的终端上分别 Ping 一下它在 U-Anywhere 的地址和虚拟局域网中的内网地址,可以发现是成功打通了直连通道的。

复制测试

复制测试

  复制文件的速度也已经很不错了,基本上能够跑满公司内网限制的网速了,也说明与之之间是实现了 P2P 直连而非走中转通道。

五、后续
  后来还尝试了在 VPS 上面搭建 ZeroTier 的 Moon 节点服务器,也成功了,不过我的廉价 VPS 访问速度并不比 ZeroTier 自己的根节点快多少,所以也不知道具体效果如何。如果以后在国内的 VPS 上部署 Moon 节点的话,应该对国内的 ZeroTier 终端访问会有加快握手速度的作用。


回复

使用道具 举报

发表于 2019-2-28 12:52:14 | 显示全部楼层
本帖最后由 czysj 于 2019-2-28 15:35 编辑

提示200 join OK 但zerotier 上没有,请教可能是什么问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-2-28 14:14:20 | 显示全部楼层
czysj 发表于 2019-2-28 12:52
提示 bash: curl: command not found

那这样的话需要在Root用户下面先安装 curl
  1. apt install curl
复制代码

试试?
回复 支持 反对

使用道具 举报

发表于 2019-4-2 10:28:03 | 显示全部楼层
candura 发表于 2019-2-28 14:14
那这样的话需要在Root用户下面先安装 curl

试试?

  感谢 这个正确  试了下可以  万由上安装成功了
回复 支持 反对

使用道具 举报

发表于 2019-4-2 10:31:24 | 显示全部楼层
candura 发表于 2019-2-28 14:14
那这样的话需要在Root用户下面先安装 curl

试试?

老哥 还有个问题求教    手机端APP连接不正常   电信4G网络 app里连接后 手机浏览器打开万由的管理页面开始能显示登陆界面然后就登陆不上了 不知道你们的会不会这样  万由的ufile添加服务器连上去也看不到任何文件 万由上有开FTP NFS这些 检查了下文件共享的都没看出啥问题
回复 支持 反对

使用道具 举报

发表于 2019-4-5 22:52:09 | 显示全部楼层
sshot-1.png
请问我是安装成功了吧,这个我输入

[backcolor=rgba(249, 249, 249, 0.5)]zerotier-cli join ([backcolor=rgba(249, 249, 249, 0.5)]NetWork[backcolor=rgba(249, 249, 249, 0.5)] ID)
[backcolor=rgba(249, 249, 249, 0.5)]之后出现的不是200 join OK,
ZeroTier Central.png

点评

看着是安装成功了,但是加入网络那里不用输入括号。  详情 回复 发表于 2020-2-12 15:28
回复 支持 反对

使用道具 举报

发表于 2019-7-22 00:35:43 | 显示全部楼层
大佬这篇文章很是详细,试了一下,顺利安装,但是可能是墙的原因吧,速度不满意。。。想卸载掉,才发现不会。。。。。大佬可否指点一下怎么卸载这个?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-5 09:14:55 | 显示全部楼层
philander 发表于 2019-7-22 00:35
大佬这篇文章很是详细,试了一下,顺利安装,但是可能是墙的原因吧,速度不满意。。。想卸载掉,才发现不会 ...

直接用APT的卸载命令卸载即可。
  1. apt-get autoremove zerotier-one
复制代码


通过分析官方的安装脚本,发现这个安装脚本本质上是先根据不同的操作系统增加不同的源,然后分别调用不同操作系统的包管理工具(apt、yum、zypper等)来安装,所以卸载的时候直接用包管理工具卸载即可。
回复 支持 反对

使用道具 举报

发表于 2019-8-26 20:12:35 | 显示全部楼层
安卓手机端单向备份有推荐的app吗,谢谢!现在用的u-file,想对比下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-10 09:02:32 | 显示全部楼层
roger_wuang 发表于 2019-8-26 20:12
安卓手机端单向备份有推荐的app吗,谢谢!现在用的u-file,想对比下

单向备份我也是用u-file呢……
但是理论上凡是支持WebDAV同步的软件应该都是可以的.
搜索“安卓 WebDAV 同步”即可
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|万由科技 ( 浙ICP备10004788号-13 )

GMT+8, 2024-3-29 14:42 , Processed in 0.087848 second(s), 61 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表