Linux EC2无公网IP无法连接awscli.amazonaws.com:443排障
故障根因
核心问题是绑定了互联网网关(IGW)默认路由的公有子网内,仅配置私有IPv4地址的EC2实例无法直接通过IGW访问公网:IGW本身不自带源地址转换(SNAT)能力,仅能为持有公网IPv4(含实例启动时自动分配的公网IP、手动绑定的弹性公网IP/EIP)的实例做公网-私网地址映射,纯私网IP发起的公网请求源地址属于私网段,公网侧无法路由回包,直接触发443端口连接失败报错。
你当前能通过私网IP SSH登录实例,仅代表私网链路连通正常,和公网出访问链路完全独立,不能作为公网配置正确的依据。
排查与解决步骤
按以下顺序逐一校验配置即可:
- 先修正公网出网链路
- 若保留实例在当前公有子网:直接给实例绑定弹性公网IP(EIP)即可。操作路径为EC2控制台选中目标实例,依次点击「操作-联网-关联弹性IP」,分配新EIP绑定到实例主网卡,等待10秒左右重试curl命令即可。注意未绑定到运行实例的EIP会产生计费,闲置时及时释放。
- 若不希望实例直接暴露公网入站入口:将实例迁移到私有子网,在同可用区的公有子网创建NAT网关,给私有子网关联的路由表添加目标为0.0.0.0/0、下一跳指向NAT网关的路由规则,实例即可通过NAT网关的SNAT能力主动访问公网,公网侧无法主动发起对实例的连接,安全性更高。
- 校验安全组与NACL规则
- 安全组为有状态资源,你当前仅列出了入方向规则,需确认出方向规则未做错误限制:默认安全组出方向全放通即可满足访问需求,若做了精细化管控需放通出方向443端口到0.0.0.0/0的访问权限。
- NACL为无状态资源,必须同时配置双向规则:出方向放通443端口到0.0.0.0/0的访问,入方向放通1024-65535临时端口段来自0.0.0.0/0的回流流量,否则请求发出后响应包会被NACL直接拦截。
- 实例内部配置校验
- 登录实例后先执行
ping 8.8.8.8测试公网IP连通性:如果不通,回到VPC路由、NAT/EIP配置环节排查;如果能通公网IP但无法访问域名,执行cat /etc/resolv.conf确认DNS配置为VPC默认DNS(即VPC网段的.2地址),通过nslookup awscli.amazonaws.com验证域名解析是否正常。 - 执行
sudo iptables -L OUTPUT -n检查主机侧iptables规则,确认没有拦截出方向443端口的DROP规则。
- 登录实例后先执行
内容的提问来源于stack exchange,提问作者Suman2812
相关产品推荐
相关产品推荐

