找回密码
 立即注册
img_loading
智能检测中

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 3280|回复: 13

zerotier moon自动更新脚本

[复制链接]
发表于 2022-10-12 15:00 | 显示全部楼层 |阅读模式
本帖最后由 绮恸我心@爱绮命 于 2022-10-12 15:16 编辑

自己家是移动宽带,有公网ipv6,但是没有公网ipv4。办公室只有ipv4,ipv6使用不了,遂公网ipv6对我办公暂时没有什么帮助。朋友家是电信宽带,帮她要了公网ipv4,然后自己编译openwrt固件,送了个路由器给她,帮她把光猫桥接。可以使用她家公网ipv4。上面有zerotier,不适用moon服务,从办公室连接我家内网延迟大概在300-400ms左右。遂添加了moon,延迟降低到20ms左右,使用上感觉不到什么延迟。但是moon服务在最新版本的zerotier上测试用域名不正常,不能正常解析ip。看官网上说好像以后不支持域名添加到moon服务里面。所以想到用脚本更新公网ip添加到moon.json。这样就无痛使用zerotier和moon中转服务。
1、获取路由器公网ip。

  1. current_wan_ip=`ifconfig -a | grep P-t-P | awk '{print $2}' | tr -d "addr:"`
复制代码

2、获取moon.json中填写的ip
  1. current_moon_ip_value=$(awk -F""" '/stableEndpoints/{print $4}' /var/lib/zerotier-one/moon.json)
复制代码


3、判断两个ip是否相等,如果ip没有改变,则不进行操作;如果不相同,则替换目前公网ip到moon.json中,并生成000000xxxxx.moon,移动到moons.d文件夹,重启zerotier服务。只要在路由器中设置定时脚本,服务端基本功能就实现了。

  1. <div><span style="color: rgb(0, 0, 0); font-size: medium; background-color: rgb(255, 255, 255);"># 000000xxxxx.moon需修改成实际生成文件的文件名,同一台服务器加入zerotier网络后名字固定</span>
  2. <font color="#000"><font size="3">current_wan_ip_value="${current_wan_ip}/9993"</font></font>
  3. <font color="#000"><font size="3">if [ "${current_moon_ip_value}" != "${current_wan_ip_value}" ]; then        </font></font>
  4. <font color="#000"><font size="3">    echo "ip is changed"        </font></font>
  5. <font color="#000"><font size="3">    sed -e "s@$current_moon_ip_value@$current_wan_ip_value@g" -i /var/lib/zerotier-one/moon.json        </font></font>
  6. <font color="#000"><font size="3">    zerotier-idtool genmoon /var/lib/zerotier-one/moon.json        </font></font>
  7. <font color="#000"><font size="3">    mv /tmp/000000xxxxx.moon /var/lib/zerotier-one/moons.d        </font></font>
  8. <font color="#000"><font size="3">    /etc/init.d/zerotier restart</font></font>
  9. <font color="#000"><font size="3">else        </font></font>
  10. <font color="#000"><font size="3">    echo "ip no changed"fi</font></font></div>
复制代码


4、后来发现如果服务端重新生成0000xxxx.moon文件,客户端需要重新加入moon网络才能及时生效。故需要服务端更改后通知客户端重新加入moon网络。而我用的是L大固件,默认编译的时候没有编译openssh相关工具,默认使用的是dropbear。使用dropbear配置免密码登录客户端。
使用相关工具生成服务端私钥和公钥,如putty或者ssh-keygen,个人使用的是openwrt自带的dropbear
  1. dropbearkey -t rsa -f /root/.ssh/id_rsa | grep "ssh-rsa" > /root/.ssh/id_rsa.pub
复制代码


登录客户端把公钥写入/etc/dropbear/authorized_keys文件中

  1. <span style="color: rgb(0, 0, 0); font-size: medium; background-color: rgb(255, 255, 255);">#xxx.xxx.xxx.xxx 是客户端ip,可以在zerotier中设置路由,这样就可以使用本地ip</span>
复制代码

在各个客户端中编写一个重新加入moon网络脚本

  1. <div><font color="#000"><font size="3">#/bin/ash</font></font>
  2. <span style="color: rgb(0, 0, 0); font-size: medium;">#xxxx 是moon网络id,可以在服务器端/var/lib/zerotier-one/moon.json中查看</span><font color="#000"><font size="3">
  3. </font></font><span style="color: rgb(0, 0, 0); font-size: medium;">zerotier-cli deorbit xxxx</span>
  4. <span style="color: rgb(0, 0, 0); font-size: medium;">zerotier-cli orbit xxxx xxxx</span></div>
复制代码


保存文件为/root/mysh.sh,添加运行权限,

  1. chmod +x /root/mysh.sh
复制代码


最后服务端完整代码
  1. <font color="#000"><font size="3">#/bin/ash
  2. </font></font>
  3. <font color="#000"><font size="3">current_wan_ip=`ifconfig -a | grep P-t-P | awk '{print $2}' | tr -d "addr:"`</font></font>
复制代码

在服务端中设置定时没10分钟运行一次脚本。由于脚本内容简单,几乎不需要消耗什么资源,定时任务可以根据个人情况自行修改

以上仅适合家庭有公网ip,且公网ip会随机变换的情况。
以上代码,在我的情况下测试成功。

服务端代码


客户端代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
 楼主| 发表于 2022-10-12 15:01 | 显示全部楼层
恩山论坛这排版真的是。。。
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2022-10-12 15:35 | 显示全部楼层
不明觉厉
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2022-10-12 16:22 | 显示全部楼层
强啊,解决了moon设定在家庭ipv4的问题
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2022-10-12 19:43 | 显示全部楼层
她  吗?你真幸福
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2022-10-12 19:51 | 显示全部楼层
以前也搞过zerotier的自定义moon,太麻烦了。现在改用n2n了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2022-10-17 09:50 | 显示全部楼层
看看怎么样
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-20 09:24 | 显示全部楼层
请教一下大佬,服务端ip变动了重新生成000000xxxxx.moon的id也不会变了吗?   
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-20 09:29 | 显示全部楼层
请问大佬 服务端代码最后ssh -i /root/.ssh/id_rsa root@**1.***.***.***.*** /root/mysh.sh 这些* 是什么填什么
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-1-26 15:14 来自手机 | 显示全部楼层
大佬有没有试自建planet,也可以用类似的脚本解决动态公网吗?
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-5-13 22:32 | 显示全部楼层
ZeroTier 这个不支持域名寻找服务器,就是个败笔。最终我也用n2n了
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2023-5-13 23:00 | 显示全部楼层
自定义moon为什么不用n2n,简单又好用
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2025-1-17 00:01 | 显示全部楼层
脚本在使用中,我碰到一个问题,其他人可以参考解决方式
  1. zerotier-idtool genmoon /var/lib/zerotier-one/moon.json
复制代码
只会在当前目录下生成moon文件,所以执行这一条之前,需要先cd定位到zero或者moons.d目录下

点评

不知道是版本问题 还是什么原因  详情 回复 发表于 2025-1-17 00:01
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

发表于 2025-1-17 00:01 | 显示全部楼层
zxc123zxc123 发表于 2025-1-17 00:01
脚本在使用中,我碰到一个问题,其他人可以参考解决方式
只会在当前目录下生成moon文件,所以执行这一条之 ...

不知道是版本问题 还是什么原因
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应。胡乱输入灌水等操作将会被封禁ID。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛

只谈技术、莫论政事!切勿转播谣言!为了你也为了他人。
只谈技术、莫论政事!(点击见详情) 切记不要随意传播谣言,把自己的日子过安稳了就行,为了自己好也为了大家好。 恩山无线论坛欢迎您的来访,请互相尊重、友善交流,建议保持一颗平常心看待网友的评论,切勿过度反应。

查看 »

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2025-7-20 05:28

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表