一洼绿地

Zerotier 自动更换 Moon 的 IP 配置

·1 min read

创建 moon.json

# zerotier-cli info
200 info 860dcfb934 1.12.2 ONLINE

# zerotier-idtool initmoon identity.public >> moon.json.source

编辑 /var/lib/zerotier-one/moon.json.source

  • stableEndpoints 内编辑如下,插入占位字符串 $endPoint1
{
 "id": "860dcfb934",
 "objtype": "world",
 "roots": [
  {
   "identity": "860dcfb934:0:.......",
   "stableEndpoints": [
     "$endPoint1/9993"
   ]
  }
 ],
 "signingKey": ".....",
 "signingKey_SECRET": "......",
 "updatesMustBeSignedBy": ".....",
 "worldType": "moon"
}

刷新脚本

  • /var/lib/zerotier-one/refresh_moon.sh
#!/bin/bash

cd /var/lib/zerotier-one
# current ip
CURR_IP=`curl -s http://ip.3322.net`
# last ip
LAST_IP=`cat moon.json | tr '\n' ' ' | sed 's/.*"\([^"]*\)\/\(9993\).*/\1/g'`
# eq 如果 IP 不变,则退出
if [ "$CURR_IP" == "$LAST_IP" ]
then
  exit 0
fi
# replact ip, get new moon.json,将占位字符串替换成新的 IP
sed 's/$endPoint1/'${CURR_IP}'/g' /var/lib/zerotier-one/moon.json.source > /var/lib/zerotier-one/moon.json

# create /var/lib/zerotier-one/000000860dcfb934.moon
zerotier-idtool genmoon /var/lib/zerotier-one/moon.json
# move to moons.d
mv /var/lib/zerotier-one/000000860dcfb934.moon /var/lib/zerotier-one/moons.d/
# restart zerotier
systemctl stop zerotier-one
sleep 1
systemctl start zerotier-one
sleep 1
# print info
zerotier-cli listmoons

每十分钟执行一次

  • # crontab -e
0 */10 * * * /var/lib/zerotier-one/refresh_moon.sh