ZeroTier虚拟局域网

ZeroTier是一个强大的内网穿透工具,用它可以搭建一个虚拟局域网让我们可以像在本地一样跨网络管理节点。

ZeroTier原理

ZeroTier 这一类 P2P VPN 是在互联网的基础上将自己的所有设备组成一个私有的网络,可以理解为互联网连接的局域网。ZeroTier可以进行点对点直连,数据传输并不经由第三方服务器中转。但是不能点对点直连时可以通过官方的根服务器中转 。Zerotier的目的是在多设备之间建立了一个 Peer to Peer VPN(P2PVPN)。对于内网穿透来说为什么不用frp呢?是因为frp是通过端口转发来实现 P2P的,在集群控制节点管理集群时,不能通过指定发送端口的形式来将命令发送到对应的节点上,因此我认为frp更适合通过ssh来管理节点的中间件(Ansible)。

准备工作

一台云服务器(开放9993/UDP端口)搭建moon

两台主机

安装Moon(云服务器)

下载 ZeroTier

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

运行并开机自启

systemctl start zerotier-one.service 
systemctl enable zerotier-one.service

登录官网并创建一个网络

加入网络(云服务器)

zerotier-cli join 63xxxxxxx

进入安装目录

cd /var/lib/zerotier-one/

生成节点配置

zerotier-idtool initmoon identity.public > moon.json

编辑配置

vi moon.json

#找到
"stableEndpoints": [ "云服务器IP/9993" ]

生成签名

zerotier-idtool genmoon moon.json

创建目录 cd /var/lib/zerotier-one/

mkdir moons.d

移动 moon 配置文件

mv 000000xxxxxxx.moon moons.d

重启服务

systemctl restart zerotier-one

节点安装

下载 ZeroTier

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

运行并开机自启

systemctl start zerotier-one.service 
systemctl enable zerotier-one.service

加入网络(与云服务器同一网络)

zerotier-cli join 63xxxxxxx

添加Moon(每个非moon节点)

zerotier-cli orbit <moon_id> <moon_id>

要输入两次moon_id,不是写错了

检查

image-gfxk.png

[root@k-master ~]# zerotier-cli peers
200 peers
<ztaddr>   <ver>  <role> <lat> <link>   <lastTX> <lastRX> <path>
62f865ae71 -      PLANET   378 DIRECT   22010    36666    50.7.252.138/9993
778cde7190 -      PLANET   241 DIRECT   22010    36797    103.195.103.66/9993
99c2948d2a 1.14.0 MOON      12 DIRECT   29       1778     47.109.98.8/9993 #成功了
9e1948db63 1.14.0 LEAF     264 DIRECT   1971     1748     35.209.127.97/21046
cafe04eba9 -      PLANET   257 DIRECT   22010    36780    84.17.53.155/9993
cafe9efeb9 -      PLANET   184 DIRECT   1971     1584     104.194.8.134/9993

ssh登录远节点

[root@master ~]# ssh root@192.168.195.11
The authenticity of host '192.168.195.11 (192.168.195.11)' can't be established.
ECDSA key fingerprint is SHA256:5cd3AremipZsY42lbE2DW0zfFBW9kEolZAL+zIO8tpE.
ECDSA key fingerprint is MD5:0e:7f:41:f4:6c:46:89:7d:87:6e:83:c8:7e:25:8a:cf.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.195.11' (ECDSA) to the list of known hosts.
root@192.168.195.11's password: 
Last login: Mon Aug  5 18:43:24 2024 from 192.168.60.1
[root@localhost ~]# exit
登出
Connection to 192.168.195.11 closed.

成功

注意

zerotier-cli peers发现没有moon节点可以把moon节点上的 000000xxxxxxx.moon文件复制到节点主机的相同目录下,再重启服务。