问题核心:阿里云网络的独特机制
其他云平台
- 公网IP直接绑定在虚拟机网卡上
- 服务器明确知道自己的公网身份
- 内外通信路径清晰
阿里云
- 公网IP由网关通过DNAT方式转发
- 服务器只能看到自己的内网IP(如172.x.x.x)
- 服务器不知道自己的公网地址
这就好比你的服务器有一个专属邮箱(内网IP),但所有寄到你公司前台(公网IP)的包裹,前台不知道该转交给谁。服务器能主动向外寄件(连接官方Planet节点),却难以可靠地接收来自特定地址的包裹(Moon连接请求)。
解决方案:明确告知服务器其公网身份
服务器端(阿里云)配置
{
"physical": {
"你的公网IP/32": {
"type": "public",
"stableEndpoints": ["你的公网IP/9993"]
}
},
"settings": {
"primaryPort": 9993
}
}
务必将 你的公网IP 替换为你阿里云服务器的实际公网IP地址。
保存并退出编辑器(在nano中:按
此命令会输出一个以 .moon 结尾的新文件名,其中包含一串ID(例如 abcd123456),记下它。
客户端配置
在你需要连接此Moon节点的电脑上(以Windows为例),需要更新Moon节点信息。
检查阿里云平台设置
完成上述配置后,大部分连接问题应得到解决。如果仍无法连接,检查阿里云控制台中的两项设置,它们有时会干扰UDP协议的正常通信:
- 云盾(安全中心)的UDP流量清洗:登录阿里云控制台,进入"云盾"或"安全中心"下的DDoS防护基础版设置,查看是否有针对UDP流量的清洗规则,可尝试暂时调整策略或加入白名单。
- 安全组的状态检查:部分区域的安全组策略可能包含严格的连接跟踪机制。检查你的安全组"高级设置",了解是否存在可能丢弃非主动发起UDP回包的相关规则。
验证连接成功
配置完成后,在客户端电脑上运行以下命令检查状态:
在输出列表中,找到对应你Moon ID的那一行。当连接成功时,你会看到:
- path 字段显示为你阿里云服务器的公网IP和端口(例如 1.2.3.4/9993)。
- latency 延迟显示为一个合理的毫秒数。
- role 角色明确标识为 MOON。
关于阿里云环境的说明
通过以上步骤,我们手动补充了网络路径信息,使ZeroTier能够适应阿里云的环境。这个过程虽然增加了配置步骤,但一旦完成,Moon节点便能和其他云平台一样稳定工作。如果遇到问题,建议按照本指南逐步核对,通常可以定位并解决连接障碍。
























