转自阿里云社区文章:https://developer.aliyun.com/article/802318
使用场景
本地网络联机游戏
远程桌面
程序远程调试
远程文件传输等

前情提要
Zerotier作为一款开源异地虚拟局域网构建工具,已经被广泛关注和应用,相比蒲公英、花生壳等工具,zerotier免费、可加入节点多,数据传输安全,但有时两台都在内网的主机打通udp隧道较为困难,而且通常延迟较高,好在官网提供了解决方案,即使用一台接入公网的主机作为MOON节点,用于初始化打通两节点之间的隧道,使延迟可以从几百ms降至十几ms,故我选择了阿里云2核2g内存的ecs作为moon节点,十分有效。

ecs/MOON端
出于个人习惯,我选择ubuntu20.04作为操作系统
1.下载Zerotier
参考官网指南

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

2.启动zerotier服务

service zerotier-one start

3.加入zerotier网络

zerotier-cli join <your_network_id>

之后在web端控制台允许此节点接入网络

4.生成MOON节点
首先进入zerotier目录“/var/lib/zerotier-one”

cd /var/lib/zerotier-one
zerotier-idtool initmoon identity.public >> moon.json

然后修改moon.json

{
  ..
  {
    ..
    ”stableEndpoints”:[]
  }
  ..
}

添加ECS的公网ip地址

{
  ..
  {
    ..
    ”stableEndpoints”:[“<your_ip_addr>/9993”]
  }
  ..
}

保存并退出
5.生成签名文件

Zerotier-idtool genmoon moon.json

命令执行后,当前目录生成一个名为000000xxxxxxxxxx.moon的文件

其他主机/PLANET端
6.配置moon
将签名文件放在当前目录的子目录“moons.d”(首次需要新建目录)下,并拷贝该签名文件至所有需要配置moon节点的主机中,对于windows系统的节点,找到该路径“C://ProgramData/Zerotier/One/”,在此目录下新建moons.d文件夹,并放入签名文件。最后重启zerotier服务

Service zerotier-one restart

7.测试效果
使用命令:

Zerotier-cli peers

查看各节点状态(windows系统下zerotier-cli位于“C://Program Files(x86)/ZeroTier/One/”下),
出现为“MOON”的节点则配置成功,如果MOON节点对应为“—1–”,等待一段时间即可自动修改为ecs公网ip地址,可以通过分别ping moon节点的公网地址和虚拟局域网内网地址对比延迟来确定是否打通局域网。

标签: none

添加新评论