简介
- 在没有固定公网IP,但支持ddns的家用网络环境中,部署Moon节点服务,并使用此服务作为中继。
- 在公网IP发生变动后,无论是服务端还是客户端,都会在尽量短的时间内进行自动调整,保持Moon中继节点的正常连接。
Windows
- 将以下内容新建为
zerotier moon.xml
文件,并将其中的9d2cxxxxxx
更改为当前Moon节点的ID。
zerotier moon.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| <?xml version="1.0" encoding="UTF-16"?> <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2024-01-11T15:59:55.0333691</Date> <Author>Pacifica_Frma\Ciccaba</Author> <Description>更新 Zerotier Moon 配置</Description> <URI>\zerotier moon</URI> </RegistrationInfo> <Triggers> <CalendarTrigger> <StartBoundary>2025-04-25T07:00:00</StartBoundary> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-18</UserId> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <RunOnlyIfNetworkAvailable>true</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>true</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>PT72H</ExecutionTimeLimit> <Priority>6</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat"</Command> <Arguments>deorbit 9d2cxxxxxx</Arguments> </Exec> <Exec> <Command>"C:\Program Files (x86)\ZeroTier\One\zerotier-cli.bat"</Command> <Arguments>orbit 9d2cxxxxxx 9d2cxxxxxx</Arguments> </Exec> </Actions> </Task>
|
- 打开Windows的任务计划程序,将
zerotier moon.xml
文件导入。并将执行的用户调整为SYSTEM
(静默执行)

- 根据实际需要调整触发器,默认在6:00后开机触发命令执行。
Linux
可参考以下命令,对不同的Linux系统版本和安装路径,应按实际情况进行调整:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #!/bin/bash
check_domain=moon.example.com
new_ip=$(ping -c 1 $check_domain | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
old_ip=$(/root/shell/old.ip| grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1)
if [ "$old_ip" != "$new_ip" ]; then zerotier-cli deorbit 9d2cxxxxxx zerotier-cli orbit 9d2cxxxxxx 9d2cxxxxxx echo $new_ip > /root/shell/old.ip fi
|
其它客户端
这里的实现原理其实很简单。 理论上,所有客户端都可以通过“退出Moon-加入Moon”的两步操作来刷新为最新的Moon节点状态,因为我暂时不需要在IOS与Android系统下接入ZeroTier网络,所以就不做测试了,有需要的可自行研究。