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