本文转自博主的个人博客:https://blog.zhumengmeng.work,欢迎大家前往查看。
原文链接:点我访问
序言:折腾过内网穿透的玩家,ngrok、frp 都应该不陌生了,自己搭也好,用别人提供的免费服务也好,配置过程都显得有些繁琐。有幸了解到 ZeroTier 的存在,使用起来真是非常方便,可以很轻松的将自己的电子设备加入同一个局域网,但由于其根服务器在国外,导致前期建立链接时访问速度较慢,好在 ZeroTier 也提供了加速方法,就是创建自己的根服务器,也就是 Moon 节点。
一、ZeroTier介绍
ZeroTier 客户端用于连接到之前在 ZeroTier Central 网页UI中创建的虚拟网络。端点连接是点对点的,并且是端到端加密的。STUN和打洞技术用于在NAT后面的对等点之间建立直接连接。直接连接路由发现是在全球根服务器网络的帮助下通过类似于WebRTC中的ICE 的机制进行的。
二、如何搭建Moon节点?
2.1 准备一台有固定公网ip的云服务器
按照官方的意思,我们得有一个云服务器(常开且有固定的公网 IP),例如,我就有一台腾讯云的轻量应用云服务器,这就符合条件了。
2.2 配置 Moon 节点(Linux)
1. 登录云服务器,安装 ZeroTier,官方提供了简便的命令
curl -s https://install.zerotier.com | sudo bash
2. 使用 zerotier-idtool
生成 Moon 配置文件
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
3. 编辑 moon.json,你可以用 vim 或其他方式,在 stableEndpoints
里添加你云服务器的公网 IP,例如 119.29.29.29
,端口号默认为 9993
vim moon.json
{
"id": "deadbeef00",
"objtype": "world",
"roots": [
{
"identity": "deadbeef00:0:34031483094...",
"stableEndpoints": []
}
],
"signingKey": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0",
"signingKey_SECRET": "ffc5dd0b2baf1c9b220d1c9cb39633f9e2151cf350a6d0e67c913f8952bafaf3671d2226388e1406e7670dc645851bf7d3643da701fd4599fedb9914c3918db3",
"updatesMustBeSignedBy": "b324d84cec708d1b51d5ac03e75afba501a12e2124705ec34a614bf8f9b2c800f44d9824ad3ab2e3da1ac52ecb39ac052ce3f54e58d8944b52632eb6d671d0e0",
"worldType": "moon"
}
"stableEndpoints": [ "119.29.29.29/9993" ]
4. 生成 Moon 文件,执行命令后,会在 /var/lib/zerotier-one
目录下生成一个 0 开头的 .moon
的文件,例如 000000096a34c024.moon
sudo zerotier-idtool genmoon moon.json
5. 创建 moons.d
文件夹,并将 .moon
文件移入该文件夹内
mkdir moons.d
mv 000000096a34c024.moon moons.d/
- 重启
zerotier-one
服务,或者直接重启云服务器,就完成配置了
service zerotier-one restart
2.3 使用 Moon 节点(Win 10 )
- 将云服务器中生成的
.moon
文件下载出来,例如用宝塔面板进行下载
- 进入
C:\ProgramData\ZeroTier\One\
目录,同样创建moons.d
文件夹,并将.moon
文件移入该文件夹内
- 打开任务管理器,重启
ZeroTierOneService
服务
2.4 测试 Moon 节点
用管理员身份启动 CMD 或 Powershell,执行命令,如何有出现你的 Moon 节点,就成功了。
zerotier-cli listpeers