LinuxVPS 自建ZeroTier 的MOON根目录服务器

说明

zerotier 可以作为一款 p2p 的 vlan 内网穿透工具,功能强大且易用,同类产品还有 frpLanProxy等。最近有个朋友有创建 p2p vlan 的需求,在简单调研之后决定使用 zerotier 作为基础工具。

官方给出的使用方案比较简单。首先需要一个中心的节点用于两个内网节点的握手,该中心节点需要有一个公网 IP。zerotier 官网提供了中心节点相关服务,免费账户有一定的使用限制,但是由于其节点位于国外,延迟比较高,且可能还需要科学上网才能使用。除此之外,zerotier 也支持自己搭建中心节点服务器,也叫做 MOON 服务器。下面是它的搭建步骤。

MOON 服务器配置

操作系统版本是 Ubuntu 18.04, Zerotier One 版本是 v1.2.10, 公网 (也就是 MOON 服务器) 地址是 1.1.1.1

  1. 通过官网文档根据不同操作系统选择不同的安装方式,这里直接通过命令行安装
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && \ if z=(curl -s 'https://install.zerotier.com/' | gpg); then echo "z" | sudo bash; fi

如果上述命令运行失败,那么使用下面命令

curl -s https://install.zerotier.com/ | sudo bash
  1. 将 MOON 服务器加入 Zerotier 局域网

虽然搭建了 MOON 服务器,我们还是需要借助 zerotier network,也就是需要先通过 zerotier 官网创建一个 network,并且内网节点需要使用 join 命令加入该网络才能实现内网节点的互通,换句话说 MOON 节点只起到了加速的作用,虚拟网络的分配和管理还是需要 zerotier 服务端参与。

zerotier-cli join <network id>
  1. 生成配置文件
sudo chmod 777 /var/lib/zerotier-one # 这里为了有写入文件的权限
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json
  1. 修改配置文件 moon.json,主要是添加公网 IP,修改内容如下,9993 是默认端口
"stableEndpoints": [ "1.1.1.1/9993" ] #修改为VPS公网IP/9993

还需要注意 moon.json 中的 id 值,它是 MOON 服务器的 ID,是一个 10 位的字符串,我的为 efe9e9a259,也可以用 sudo zerotier-cli info 查看,后面会用到。

  1. 生成 moon 文件
sudo zerotier-idtool genmoon moon.json
  1. /var/lib/zerotier-one 目录下新建 moons.d 文件夹中,并将生成的 moon 文件放到该文件夹下,我的 moon 文件名为 000000efe9e9a259.moon
mv 000000efe9e9a259.moon moons.d/
  1. 重启 zerotier-one
sudo killall -9 zerotier-one # 这里我们杀死相关进程后会自动重启该服务

内网节点配置

  1. 在内网节点安装 zerotier,安装方法和上面类似,根据文档选择不同操作系统的方法进行安装即可。请参考文章《ZeroTier 无公网 IP 实现内网穿透》
  2. 将 MOON 节点添加到常规节点
sudo zerotier-cli orbit efe9e9a259 efe9e9a259 # 注意这里是两次根节点的ID

如果没返回 200 orbit OK 的话,需要手动拷贝生成的 moon 文件 000000efe9e9a259.moon 文件到常规节点的机器上,位置如下:

Windows: C:\ProgramData\ZeroTier\One
Macintosh: /Library/Application Support/ZeroTier/One (在 Terminal 中应为 /Library/Application\ Support/ZeroTier/One)
Linux: /var/lib/zerotier-one
FreeBSD/OpenBSD: /var/db/zerotier-one

然后重启 zerotier-one

  1. 查看节点列表,出现根服务器的 MOON 节点表示成功
 ~ sudo zerotier-cli listpeers
200 listpeers     
200 listpeers 3dfa0fd16b - -1 - LEAF
200 listpeers 8841408a2e 45.32.248.87/9993;11749;11453 252 1.1.5 PLANET
200 listpeers 9d219039f3 128.199.197.217/9993;11749;11381 390 1.1.5 PLANET
200 listpeers abfd31bd47 178.128.240.145/35368;6238;14319 509 1.2.5 LEAF
200 listpeers efe9e9a259 1.1.1.1/9993;6238;1184 36 1.2.12 MOON
  1. 我们再在内网节点上运行 ifconfig(windows 是 ipconfig),可以看到 zerotier vlan 分配给其的内网 IP
zt0: flags=8843 metric 5000 mtu 2800
    ether 1a:42:9a:39:7d:3f
    inet 10.147.18.127 netmask 0xffffff00 broadcast 10.147.18.255
    inet6 fe80::1842:9aff:fe39:7d3f%zt0 prefixlen 64 scopeid 0xc
    inet6 fcec:2f1a:a769:487e:c00e::1 prefixlen 40
    nd6 options=201
    media: autoselect
    status: active
    open (pid 84214)

这里的 10.147.18.127 就是其虚拟局域网的 IP,在另外一个局域网中通过上述过程配置另外一个节点,它的虚拟局域网 IP 为 10.147.18.30,两个节点通过 ping 可以互相通


 上一篇
CentOS 7 安装最新的 Git CentOS 7 安装最新的 Git
yum 源仓库里的 Git 版本更新不及时,最新版本的 Git 是 1.8.3.1,但是官方最新版本已经到了 2.23.0。想要安装最新版本的的 Git,只能下载源码进行安装。 1. 查看 yum 源仓库的 Git 信息:# yum i
2019-08-29
下一篇 
Openwrt lede软路由更新frp到最新0.28.2 Openwrt lede软路由更新frp到最新0.28.2
frp分为两部分,客户端(frpc)和服务端(frps),所以使用过程中要注意不要混淆了文件。 网络上默认有很多教程,教我们使用,但是对于Openwrt lede软路由默认只支持到0.20,没有提到怎么升级,也没有及时更新,所以研究了一下,
2019-08-22
  目录