AWS NAT未使用已分配Elastic IP致MongoDB Atlas连接异常
问题原因及解决办法
核心原因
出现未知IP的根本原因是ECS Fargate任务的出站流量没有经过你配置的NAT网关,而是直接使用了AWS分配的临时公有IP:
- 当Fargate任务部署在公有子网且开启了「自动分配公有IP」时,任务会直接获取AWS公有IP池中的IP(即你看到的13.49.31.245这类不属于你账户的IP),出站流量不会走NAT网关。
- 若私有子网的路由表配置错误(比如
0.0.0.0/0的下一跳指向互联网网关而非NAT网关),任务也会绕过NAT网关直接出站,使用临时公有IP。
解决步骤
- 确认任务部署在私有子网:私有子网没有直接关联互联网网关,必须通过NAT网关出站。
- 关闭任务的「自动分配公有IP」:在ECS任务定义的网络配置中,将
AssignPublicIp设为DISABLED,确保任务仅获取私有IP,强制流量走NAT网关。 - 检查私有子网路由表:确保路由表中存在
0.0.0.0/0 -> NAT网关的路由规则,且该路由表已关联到任务所在的私有子网。 - 验证NAT网关状态:确认绑定的弹性IP未被解绑,NAT网关处于「可用」状态,无故障或自动替换情况。
内容的提问来源于stack exchange,提问作者Patrik Bäckström
相关产品推荐
相关产品推荐

