ZeroTier 虚拟组网

ZeroTier 是一款即开即用的开源网络服务,它可以将不同物理地点的电脑、手机、网络设备,组成一个虚拟局域网,并拥有较高的安全性。而这些设备,就可以像在家中,或同一个办公室中一样。

直接使用官方的延迟比较高,测试是达到 300 – 500 ms。我当场就放弃了,后来发现可以自己搭建根服务器,有 Planet 和 moon 的区别。我的理解是

  • planet 就是根节点。
  • moon 就是用来加速国外节点的。

首先是搭建节点,有开源的 docker 容器,这是首选,并且配备了 UI 界面, nice

dockerhub https://hub.docker.com/r/keynetworks/ztncui

github https://github.com/key-networks/ztncui-aio

由于镜像没有提供使用说面,这里简单贴一下启动命令

docker run --restart=on-failure:3 -d --name ztncui -e HTTP_PORT=4000 -e HTTP_ALL_INTERFACES=yes -e ZTNCUI_PASSWD=123456 -p 4000:4000 keynetworks/ztncui

成功启动之后,访问 `4000` 端口就能看到 UI 界面了,可以先创建一个网络。

简单设置一下网络,可以直接生成。

开启自动分配 ipv4 地址

现在准备客户端加入到网络里,先试了下 windows 下的软件,很成功。

接下来准备测试一下 centos7 的环境下使用了。

直接使用 yum 安装时搜索不到了,要配置仓库地址

vim /etc/yum.repos.d/zerotier.repo
# 内容
[zerotier]
name=ZeroTier, Inc. RPM Release Repository
baseurl=http://download.zerotier.com/redhat/el/$releasever
enabled=1
gpgcheck=0
# 安装
yum install zerotier-one
# 启动守护线程
zerotier-one -d
# 加入网络
zerotier-cli join 18eexxxxxxxxxx

也可以使用这个命令安装

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


如果没有启动守护线程,则报错 zerotier-cli: missing port and zerotier-one.port not found in /var/lib/zerotier-one

如果一切顺利的话,你应该看到控制台输出了 200 join OK

zerotier-cli 支持的命令

   info - 显示状态信息
   listpeers - 列出所有对等点
   peers - 列出所有对等点(更漂亮)
   listnetworks - 列出所有网络
   join <network ID> - 加入一个网络
   leave <network ID> - 离开一个网络
   set <network ID> <setting> - 设置网络设置
   get <network ID> <setting> - 获取网络设置
   listmoons - 列出卫星(联合根集)
   orbit <world ID> <seed> - 通过任何成员根加入月球
   deorbit <world ID> - 离开一个月亮
   dump - 调试设置转储以获得支持

使用 ifconfig 命令,可以看到一张额外的网卡信息

        zto2gfbdy4: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 2800
        inet 10.59.xxx.xxx  netmask 255.255.255.0  broadcast 10.59.205.255
        inet6 fe80::7c83:aff:fec0:2438  prefixlen 64  scopeid 0x20<link>
        ether 7e:83:0a:c0:24:38  txqueuelen 1000  (Ethernet)
        RX packets 27  bytes 3213 (3.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8  bytes 656 (656.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

尝试 ping

64 bytes from 10.123.107.30: icmp_seq=6 ttl=64 time=275 ms
64 bytes from 10.123.107.30: icmp_seq=7 ttl=64 time=275 ms
64 bytes from 10.123.107.30: icmp_seq=8 ttl=64 time=275 ms
64 bytes from 10.123.107.30: icmp_seq=9 ttl=64 time=275 ms
64 bytes from 10.123.107.30: icmp_seq=10 ttl=64 time=275 ms

scp 速度: 100% 4198KB 119.5KB/s 00:35 8

。。。。 网速 100kb 演示 300ms