zerotier使用
# 专有名词
PLANET :行星服务器,Zerotier 根服务器
MOON :卫星服务器,用户自建的私有根服务器,起到代理加速的作用
LEAF :网络客户端,就是每台连接到网络节点。
# 我们本次搭建的就是 PLANET 行星服务器
# 防火墙开放端口 4000/3180 和 9993
git clone https://github.com/Jonnyan404/zerotier-planet
OR
git clone https://gitee.com/Jonnyan404/zerotier-planet
cd zerotier-planet
ls
# LICENSE
# README.md
# docker-compose.yml
# mkmoonworld-x86_64
# patch.sh
# 修改docker-compose的MYADDR为公网ip
docker-compose up -d
# 以下步骤为创建planet和moon
docker cp mkmoonworld-x86_64 ztncui:/tmp
docker cp patch.sh ztncui:/tmp
docker exec -it ztncui bash /tmp/patch.sh
# Your ZeroTier moon id is f7261acbc5, you could orbit moon using "zerotier-cli orbit f7261acbc5 f7261acbc5"
docker restart ztncui
# 然后浏览器访问 http://ip:4000 打开web控制台界面。
用户名: admin
密码: mrdoc.fun
# 浏览器访问 http://ip:3180 打开planet和moon文件下载页面(亦可在项目根目录的./ztncui/etc/myfs/里获取)
# 替换官方的planet文件
# windows: C:\ProgramData\ZeroTier\One
# linux: /var/lib/zerotier-one 需要先运行一次才会出现(sudo systemctl start zerotier-one.service), 进行替换
# 如果是alpine, 需要3.17才有包, 且加入之后手动配置获取的静态ip(netmask/gateway不用配置, 只要address配置为获取的ip即可)
# 官方包:
http://download.zerotier.com/
http://download.zerotier.com/debian/buster/pool/main/z/zerotier-one/
# android客户端: https://github.com/kaaass/ZerotierFix/releases
# 替换文件之后需要重启服务, linux使用命令, win在[服务]里面
# [web端]Add network 创建网络, 获取到一个前缀和moon id一致的网络ID, 如: f7261acbc52a8047
zerotier-cli join {网络id}
zerotier-cli join f7261acbc52a8047
# 离开
zerotier-cli listnetworks
zerotier-cli leave f7261acbc52a8047
# [web端] Easy setup 配置内网ip分配, [IP assignment]就会有内网ip
# [web端] network 开启[Authorized] [Active bridge]
# 查看状态
zerotier-cli peers
# 可以看到有一个 PLANTET 和 LEAF 角色,连接方式均为 DIRECT(直连)
# 到这里就加入网络成功了
# 最后可以通过[IP assignment]的ip进行访问了
配合adguard/adguardhome定义本地的域名dns, 就可以通过域名访问了
# 运行 adguard/adguardhome, 参考: docs/source/dir1/openwrt/配置openwrt国内源.md
# 增加[DNS 黑名单]策略文件
# 最后客户端使用dns服务器进行解析即可
docker-compose.yml
### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日
version: '2.0'
services:
ztncui:
container_name: ztncui
restart: always
environment:
- MYADDR=1.1.1.1 #改成自己的服务器公网IP
- HTTP_PORT=4000
- HTTP_ALL_INTERFACES=yes
- ZTNCUI_PASSWD=mrdoc.fun
ports:
- '4000:4000' # web控制台入口
- '9993:9993'
- '9993:9993/udp'
- '3180:3180' # planet/moon文件在线下载入口,如不对外提供。可防火墙禁用此端口。
volumes:
- './zerotier-one:/var/lib/zerotier-one'
- './ztncui/etc:/opt/key-networks/ztncui/etc'
# 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径
image: keynetworks/ztncui
patch.sh
#!/bin/sh
### date:2022年08月14日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
set -x
chmod 777 /tmp/mkmoonworld-x86_64
zerotier-idtool initmoon /var/lib/zerotier-one/identity.public > moon.json
chmod 777 moon.json
moonip="[\"${MYADDR}/9993\"]"
sed -i "s#127.0.0.1#${MYADDR}#g" moon.json
sed -i "s#\[\]#${moonip}#g" moon.json
cat moon.json
zerotier-idtool genmoon moon.json
/tmp/mkmoonworld-x86_64 moon.json
mkdir /var/lib/zerotier-one/moons.d
cp *.moon /var/lib/zerotier-one/moons.d
mv world.bin planet
cp -f planet /var/lib/zerotier-one/planet
cp *.moon planet /opt/key-networks/ztncui/etc/myfs
moon_id=$(cat /var/lib/zerotier-one/identity.public | cut -d ':' -f1)
echo -e "Your ZeroTier moon id is \033[0;31m$moon_id\033[0m, you could orbit moon using \033[0;31m\"zerotier-cli orbit $moon_id $moon_id\"\033[0m"
官方docker使用
docker run -itd --name myzerotier \
--network=host --cap-add NET_ADMIN \
--device /dev/net/tun \
--restart=unless-stopped \
docker.2011101.xyz/zerotier/zerotier:latest
docker exec myzerotier zerotier-cli join e3918db4831c3510
docker exec myzerotier zerotier-cli listnetworks