基本概念

ZeroTier is a smart Ethernet switch for planet Earth.

通俗来讲就是 Peer to Peer (P2P) ,ZeroTier 根服务器记录请求路径来做类似于DNS的解析。主要功能,就是可以把多个不同网络的设备连接在一起,用来就像在一个局域网下 如下图

ZeroTier 配置一个虚拟网段172.12.0.0/16,在家中加入这个网络中,即可访问位于公司172.12.0.101

专有名词

  1. Zerotier 定义了几个专业名词:

    	PLANET 行星服务器,Zerotier 根服务器
    	MOON 卫星服务器,用户自建的私有根服务器,起到代理加速的作用
    	LEAF  网络客户端,就是每台连接到网络节点。
    

开始使用

  • 注册 zerotier 服务

     https://my.zerotier.com/   
    

在这里插入图片描述

  • 创建网络
    在这里插入图片描述

  • 内网目标机器安装客户端

    Linux

     curl -s https://install.zerotier.com | sudo bash
    

    其他操作系统

     下载地址:https://www.zerotier.com/download/
    
  • 客户端加入创建的网络
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200209152524261.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RpbmdqaWFuamlu,size_16,color_FFFFFF,t_70在这里插入图片描述
    Linux

     zerotier-cli join 17d7123456c1ed14b #上图创建网络生成的16位ID
    

    windows
    在这里插入图片描述
    或者是cmd 后出入跟 linux一样

zerotier 同意客户端接入

  • 点击第二部创建的网络,进入网络详情 ,同意客户端

在这里插入图片描述
如上图,给客户端分配 的局域网 IP, 当然网段可以通过 本页Advanced 调整。

  • 确定网络联通(下图是moon后连接图)

在这里插入图片描述

建立中转服务器 moon Zerotier 的官方服务器在国外,国内客户端使用时延迟较大,网络高峰期时甚至各个客户端节点之间访问不了。此时 moon 中转服务器就显得非常重要,它的主要功能是通过自定义的服务器作为跳板加速内网机器之间的互相访问。

准备

  • 搭载moon(卫星级服务器,用户自建的私有根服务器,起到中转加速的作用)

    机器 A(这里选用了云服务器)

  • 内网机器

    机器 B跟 C (两笔记本)

设置教程

1. 生成及修改 moon.json
首先登陆到机器 A 上,前往路径 /var/lib/zerotier-one。运行命令

zerotier-idtool initmoon identity.public >>moon.json

此命令会在当前目录下生成一个文件 moon.json,文件内容如下:

{
 "id": "9d2456s2d7",
 "objtype": "world",
 "roots": [
  {
   "identity": "9d255ee2d7:0:7f36dcd6a7ef8ee21a0cf801e194a72ef36780b4c8578ff51fjsghfae23fc26da8c1803e7dfd17699226516ece92e752d3999bd14fb23065cf78762cb699bab",
   "stableEndpoints": []
  }
 ],
 "signingKey": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5088c48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
 "signingKey_SECRET": "e70cbfefddac12yh67506f3e54d376bb4c6830d6960e7a153ed0cb9aa6f4af2ecd8d423d4cae59195d2ab0398ede0673cf67h633bce5ec4140493d37d6a50ab9",
 "updatesMustBeSignedBy": "8060e833f6f0f46068dfdc97545f8c9b1b1a9358fdcf664c64ee9078f5my6d48a7806c82e75cbddad898129485444cc7e83db6344d1f2e518b9b9d132c327986",
 "worldType": "moon"
}

其中 id 为机器 A 在 ZeroTier 中的 id,本文为 9d2456s2d7。
修改 “stableEndpoints” 为机器 A 的公网的 ip。如:

"stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]

若公网机器没有 IPv6 地址,则将其修改为

"stableEndpoints": [ "1.2.3.4/9993" ]

2. 生成签名文件
修改完 moon.json 后,执行命令

zerotier-idtool genmoon moon.json

此命令会生成一个签名文件在当前目录下,文件名如 0000009d2456s2d7.moon (机器 A 的 id 为 9d2456s2d7)

3. 将 moon 节点加入网络

  • 在机器 A 中的 ZeroTier 目录中建立子文件夹 moons.d

  • 不同系统下的 ZeroTier 目录位置:

     Windows: C:\ProgramData\ZeroTier\One
     Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
     Linux: /var/lib/zerotier-one
     FreeBSD/OpenBSD: /var/db/zerotier-one
    
  • 将在机器 A 生成的 0000009d2456s2d7.moon 拷贝进 moons.d 文件夹中,并重启
    ZeroTier(此步好像有些许 bug,重启电脑为佳)

4. 将内网机器连接上 moon 节点

  • 方法一

  • 在机器 B、机器 C 中的 ZeroTier 目录中建立子文件夹 moons.d

  • 不同系统下的 ZeroTier 目录位置:

     Windows: C:\ProgramData\ZeroTier\One
     Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
     Linux: /var/lib/zerotier-one
     FreeBSD/OpenBSD: /var/db/zerotier-one
    
  • 方法二

  • 在机器 B、机器 C 上执行

     zerotier-cli orbit 9d2456s2d7 9d2456s2d7
    

查看是否连接

  • 在其他机子执行以下命令将会显示该moon服务器:

     zerotier-cli listpeers
    

如果出现下面情况说明连接上

在这里插入图片描述
相关博客为
https://mp.weixin.qq.com/s/g3JFEaNGaLJCeDfr-Di0Hg
https://blog.zczc.cz/2018/03/14/ZeroTier-moon-%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B/

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐