ZeroTier

Catalogue
  1. 1. 方法一
  2. 2. 方法二

szerotier主要是用在公司没有公网IP,但是仓库那边有一个同事需要连接到这边的一个文件服务器,总是麻烦同事用QQ或者微信传。没有公网IP,一般的vpn无法搭建,蒲公英路由器或者蒲公英好像有个这样可以异地组网的,不过试用了一下很久没有连起来。于是…

先去 http://www.zerotier.com/download.shtml 注册一个免费的账号,免费账号可以互联100台机器,应该够用了,然后下载对应的版本进行安装:

centos7 直接用官网的命令安装

1
2
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi

For those who are a bit more careless lazy brave, the script also works without GPG:

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

登录你刚刚注册的账号,先新建一个网络,然后进入该网络:

其他的设置默认就好

然后回到centos,输入如下命令:

1
sudo zerotier-cli join    NetWorkID--你的网络ID

如果返回 200 join OK 表示添加网络成功。

可以输入 ip addr 查看自己在这个虚拟网络中分配到的私有IP,也可以在网页端看到。

然后回到网页端在networID那里往下滚动找到这里,在自己的主机前面打钩进行授权:

同样的方法在其他客户端进行操作,Windows端,下载下来后安装好后右下角图标上面右键点击:

点join Network然后输入网页端的网络ID,然后在网页端打钩授权即可。

如果有问题,看看zerotier服务和zerotier的虚拟网卡启用没有


以下参考网址 https://zczc.cz/2018/03/14/ZeroTier-moon-%E8%AE%BE%E7%BD%AE%E6%95%99%E7%A8%8B/

zerotier-one 服务器在国外,有时网络比较慢,可以搭建一个moon服务器看看:

环境

机器A(moon):

  • 公网IP:1.2.3.4
  • 系统centos7

机器B

  • 内网机器


    1. 1.A机器操作,生成并修改 moon.json 文件

      首先登陆到机器 A 上,进入到目录 /var/lib/zerotier-one。运行命令

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

      这样当前目录就会生成一个moon.json文件,可以ls看看,文件内容如下:

 其中 `id` 为机器 A 在 ZeroTier 中的 id,本文为 `deadbeef00`。
 修改 `"stableEndpoints"` 为机器 A 的公网的 ip。如:

 
1
"stableEndpoints": [ "1.2.3.4/9993","2001:abcd:abcd::1/9993" ]
若公网机器没有 IPv6 地址,则将其修改为如下,注意端口号写法
1
"stableEndpoints": [ "1.2.3.4/9993" ]
###### 2.生成签名文件** 修改完 `moon.json` 后,执行命令
1
zerotier-idtool genmoon moon.json
**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 生成的 `000000deadbeef00.moon` 拷贝进 `moons.d` 文件夹中,并重启 ZeroTier(此步好像有些许 bug,重启电脑为佳)
  1. B机器操作将内网机器连接上 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

    将在机器 A 生成的 000000deadbeef00.moon 拷贝进 moons.d 文件夹中,并重启 ZeroTier(此步好像有些许 bug,重启电脑为佳)

    方法二

    在机器 B、机器 C 上执行

    1
    zerotier-cli orbit deadbeef00 deadbeef00

    在除服务器其他的机器输入:

 
1
2
3
4
5
sudo zerotier-cli listpeers
200 listpeers
200 listpeers 8841408a2e 159.203.2.154/9993;7723;2322 244 1.1.5 PLANET
200 listpeers 9d219039f3 154.66.197.33/9993;1527750499073;2055 479 1.1.5 PLANET
200 listpeers deadbeef 00 10.0.0.2/33389;2552;7773 189 1.2.10 MOON
如果根服务器出现最后一行的MOON节点表示成功 补充: 虽然搭建了MOON服务器,我们还是需要借助[zerotier network](https://my.zerotier.com/network),也就是需要先通过zerotier官网创建一个network,并且内网节点需要使用`join`命令加入该网络才能实现内网节点的互通,换句话说MOON节点只起到了加速的作用,虚拟网络的分配和管理还是需要zerotier服务端参与

zerotier 常用命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
# zerotier-cli -h
# zerotier-cli -v
# zerotier-cli join NetworkID
# zerotier-cli set NetworkID allowManaged=1
ip addr
状态查看
# zerotier-cli listnetworks
# zerotier-cli -v
# zerotier-cli -h
查看是否在线
# zerotier-cli info
重启服务
# systemctl restart zerotier-one