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,不是写错了
检查
[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
文件复制到节点主机的相同目录下,再重启服务。