---
title: "zerotier Moon 搭建"
id: "2464"
type: "post"
slug: "zerotier-moon-%e6%90%ad%e5%bb%ba"
published_at: "2019-11-17T06:52:05+00:00"
modified_at: "2019-11-17T06:52:05+00:00"
url: "https://seq.ink/all/2464.html"
markdown_url: "https://seq.ink/all/2464.html.md"
excerpt: "原文地址 zerotier-one介绍 这是个好东西，打洞专用，使用UDP进行打洞，致力于开源SDN，SD-WAN解决方案，属于开源精品(仅仅是客户端开源，服务端不开源但是可以免费使用100个连接，所有这里用三方的开源组件搭建Moon端)． ..."
taxonomy_category:
  - "ALL"
---

[原文地址](https://boke.wsfnk.com/archives/802.html)

**zerotier-one介绍**

```
	这是个好东西，打洞专用，使用UDP进行打洞，致力于开源SDN，SD-WAN解决方案，属于开源精品(仅仅是客户端开源，服务端不开源但是可以免费使用100个连接，所有这里用三方的开源组件搭建Moon端)．跨平台多终端
	将复杂的互联网用点对点的形式进行组建，并且在上面附加一层 VXLAN-like 虚拟网络层 来提高局域网的可见性，安全性.
```

**Zerotier 定义了几个专业名词,以及优势**

```
#使用 zerotier-cli listpeers 命令时能看到这几个名词。充当 moon 的机子最好有公网 IP
	PLANET	：行星服务器，	Zerotier 各地的根服务器，有日本、新加坡等地
	Moon	：卫星级服务器，	用户自建的私有根服务器，起到中转加速的作用
	LEAF 	：相当于各个枝叶，	就是每台连接到该网络的机器节点

#zerotier-one优势
	1：控制端（ZeroTier 官网）功能足够强大，可以下发路由表、准入控制、IP分配、流量规则等，
	2：可以建立中转服务器（Moon 服务器）,从而实现更好的链接效果
	3：接近于免费。个人用户最多可以接入 100 节点设备，
	4：客户端开源。你完全可以自己编译
```

**搭建开源的Moon 卫星中转节点**

```
#ztncui依赖于zerotier，所以需要先安装zerotier
	curl -s https://install.zerotier.com | sudo bash

#安装ztncui软件,并启动
	yum install https://download.key-networks.com/el7/ztncui/1/ztncui-release-1-1.noarch.rpm -y
	yum install ztncui -y
	echo "HTTPS_PORT = 3443" > /opt/key-networks/ztncui/.env

	systemctl restart ztncui

#web登录ztncui控制台
	https://ip:3443
	账户：admin
	密码：password

#将本机配置为moon节点
	#进入zerotier-one的配置文件目录
	cd /var/lib/zerotier-one
	#在/var/lib/zerotier-one 目录下生成moon.json
	zerotier-idtool initmoon identity.public >> moon.json

	vi /var/lib/zerotier-one/moon.json
	#将这行修改为
	"stableEndpoints": [ "主机ip1/9993","主机ip2/9993" ]

	#生成签名文件，此命令会生成一个签名文件在当前目录下，文件名如 000000deadbeef00.moon （机器 A 的 id 为 deadbeef00)
	zerotier-idtool genmoon moon.json

	#关闭selinux

#(备注)使用方式，及其他系统参看ztncui的社区文档
	https://key-networks.com/ztncui/
```

**zerotier-one客户端安装**

```
#linux安装zerotier-one
	curl -s https://install.zerotier.com | sudo bash

#linux若作为本地转发网关，需要关闭selinux

#加入网络
	zerotier-cli join xxxxxxxx
```

**zerotier-one客户如何加入自定义的Moon节点**

```
#方法一：
	zerotier-cli orbit deaxx22 deaxx22

#方法二：
	在客户端的zerotier-one配置目录，创建moons.d  并将Moon节点的/var/lib/zerotier-one/000000deadbeef00.moon 文件复制到刚才的moons.d目录下

	#linux目录	/var/lib/zerotier-one/
		mkdir /var/lib/zerotier-one/moons.d/
	#windows目录 C:\ProgramData\ZeroTier\One
	#FreeBSD/OpenBSD目录: /var/db/zerotier-one

	scp root@192.168.60.3:/root/000000106a05f02c.moon /var/lib/zerotier-one/moons.d/
	zerotier-cli orbit 106a05fxxc 106a05fxxc
	
	#若是客户端作为本地转发网关，需要设置SNAT以及开启，内核转发 
		#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
		#sysctl -p
		#iptables -t nat -A POSTROUTING -s 192.168.255.29/24 -o br-lan -j SNAT --to-source 192.168.60.3
```

**zerotier-one客户端操作帮助**

```
#客户端目录路径
	cd /var/lib/zerotier-one

#重启客户端
	systemctl restart zerotier-one

#zerotier-cli用法指引
	zerotier-cli info			#查看当前zerotier-one的信息
	zerotier-cli listpeers			#列出所有的peers
	zerotier-cli listnetworks		#列出加入的所有的网络
	zerotier-cli join <network>		#加入某个网络
	zerotier-cli leave <network>		#离开某个网络
	zerotier-cli listmoons			#列出加入的Moon节点
	zerotier-cli orbit <world ID> <seed> 	#加入某个Moon节点
	zerotier-cli deorbit <world ID> 	#离开某个Moon节点
```
