问题核心:阿里云网络的独特机制
其他云平台
- 公网IP直接绑定在虚拟机网卡上
- 服务器明确知道自己的公网身份
- 内外通信路径清晰
阿里云
- 公网IP由网关通过DNAT方式转发
- 服务器只能看到自己的内网IP(如172.x.x.x)
- 服务器不知道自己的公网地址
解决方案:明确告知服务器其公网身份
服务器端(阿里云)配置
{
"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回包的相关规则。
验证连接成功
配置完成后,在客户端电脑上运行以下命令检查状态:- path 字段显示为你阿里云服务器的公网IP和端口(例如 1.2.3.4/9993)。
- latency 延迟显示为一个合理的毫秒数。
- role 角色明确标识为 MOON。