前言
首先 Zerotier
是什么呢? Zerotier
是一拨人为了解决网络复杂,以及因特网过于中心化而提出的解决方案。他们使用点对点 的网络,并且在上面附加一层 VXLAN-like
虚拟网络层 来提高局域网的可见性,安全性。
所以简单来说,Zerotier
通过创建一个虚拟网络,把你的设备添加到这个网络,那么在这个网络内,你的设备就像在同一个路由器内那样可以使用各种端口。
免费版 Zerotier
支持局域网内 100 个设备。Zerotier 支持 Windows、macOS、Linux 三大桌面平台,iOS、Android 两大移动平台,QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 OpenWrt/LEDE 开源路由器项目。
官网地址:
对比
和 ngrok 和 frp 功能类似,但是 ZeroTier 明显入手简单。ZeroTier 只有客户端开源,服务端并没有开源。而 ngrok 和 frp 都是完全开源。但是 ngrok 和 frp 严重依赖于公网固定 IP 的 VPS,是一个中性化的内网穿透工具,一旦中心挂掉,那么所有的节点都无法工作。Zerotier 帮助用户实现了服务端,虽然安全性有待考验,但至少还是能用状态。且由于数据不经过服务器中转,速度非常快延迟也特别低,几乎可以达到公网IP一样的速度。
另外很多人提到的 N2N 开上去也不错,不过我还没怎么用过。等以后尝试过后再补上。
使用
- 注册
ZeroTier
- 创建
Network
私有局域网,得到一个 16 位的Network ID
- 在需要加入虚拟局域网的设备上安装各个平台客户端,设备会生成一个 10 位的
ZeroTier address
- 在设备上加入刚刚创建的
Network ID
zerotier-cli
join <network id>
(或在网页上添加 ZeroTier address) - 在官网
network
页面上找到设备,在设备前勾选,信任设备,获得局域网 IP,具体IP可以在Managed IPs
那一行看到
建立MOON服务器
Zerotier
的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时,“自定义根服务器”,又称 moon
中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。
Zerotier
定义了几个专业名词:
PLANET
行星服务器,Zerotier
各地的根服务器,有日本、新加坡等地moon
卫星级服务器,用户自建的私有根服务器,起到中转加速的作用LEAF
相当于各个枝叶,就是每台连接到该网络的机器节点。- 在使用 zerotier-cli listpeers 命令时能看到这几个名词。充当
moon
的机子最好有公网 IP,现在我尝试用VPS
搭建一个moon
中转:
在使用 zerotier-cli listpeers
命令时能看到这几个名词。充当 moon
的机子需要有公网IP
,所以我选择有公网IP的VPS搭建 moon
中转:
获取 moon.json 文件
zerotier
安装好之后会带有 zerotier-idtool
这个命令,之后的内容需要依赖该命令。假设现在有一台公网固定 IP 的 VPS,在上面安装完 Zerotier
之后。
#进入目录
cd /var/lib/zerotier-one
#生成moon.json
zerotier-idtool initmoon identity.public > moon.json
获得 moon.json
文件。查看文件内容,其中 id
为 VPS
的 Zerotier ID
。 nano
编辑 moon.json
,修改 “stableEndpoints” 为 VPS 的公网的 IP,以 IPv4 为例:"stableEndpoints": [ "8.8.8.8/9993" ]
8.8.8.8
为公网 IP,9993
为 Zerotier
默认端口。
另外,记录下 json
中的 id
值,是一个 10
位的字符串。
生成签名文件
用到上一步中的 moon.json
, 执行
zerotier-idtool genmoon moon.json
执行之后生成 000000xxxx.moon
文件。
将 moon 节点加入网络
在 VPS
的 Zerotier
安装目录下/var/lib/zerotier-one
建立文件夹 moons.d
,将生成的 .moon
文件拷贝进去。
重启 zerotier
,重启电脑。至此,VPS 上(moon 服务器)配置完成。
其他客户端机器连接 moon
节点
其他虚拟局域网中的机器想要连接到 moon
节点的话有两种方法,第一种方法就是使用 zerotier-cli orbit
命令。连接 moon
节点方法一,使用之前步骤中 moon.json
文件中的 id 值 (10 位的字符串,在网页端也可以看到)
分别在客户端机器里执行:
zerotier-cli orbit <id> <id>
完成
第二种方法是需要在 /var/lib/zerotier-one
目录下新建 moons.d
文件夹和 moon
节点一样,将 000000xxxx.moon
文件放到其中,并重启 zerotier
测试
zerotier-cli listpeers |grep MOON
如果有有输出,并且moon服务器的IP为你的VPS公网IP,证明 moon 节点已经被本机连接。
不同系统下的 ZeroTier 目录位置:
Windows: C:\ProgramData\ZeroTier\One
Macintosh: /Library/Application\ Support/ZeroTier/One)
Linux: /var/lib/zerotier-one
FreeBSD/OpenBSD: /var/db/zerotier-one
转载声明
版权属于:本文为原创文章,版权归 博主 所有,可随意转载,但请注明出处!
本文链接:https://www.moenis.com/archives/108.html
如教程需要更新,或相关链接出现404,请在评论区反馈