AWS私有实例无法访问外部网络资源问题求助
解决AWS私有实例无法访问外部网络的问题
核心原因
安全组只是流量防火墙,私有子网默认没有通往互联网的路由配置——这才是你实例无法访问外部资源的关键,和安全组放行规则无关。
具体修复步骤
方案一:用NAT网关(生产环境首选)
- 先在公有子网里创建NAT网关:
- 给NAT网关分配一个弹性公网IP(EIP)
- 确保NAT网关所在的公有子网,路由表里有
0.0.0.0/0指向互联网网关(IGW)的条目
- 编辑私有子网的路由表:
- 添加一条路由规则,目标地址填
0.0.0.0/0,下一跳选择刚创建的NAT网关
- 添加一条路由规则,目标地址填
方案二:用NAT实例(测试/低成本场景)
- 在公有子网启动一台NAT实例:可以选AWS官方提供的NAT AMI,或者用普通EC2实例,开启系统的IP转发功能
- 配置NAT实例的安全组,允许来自私有子网的所有出站流量
- 更新私有子网的路由表,添加
0.0.0.0/0指向NAT实例的私有IP
必做验证项
- 检查私有子网路由表:必须有
0.0.0.0/0的路由,且下一跳是NAT网关/实例 - 检查NAT所在公有子网路由表:必须有
0.0.0.0/0指向IGW - 再次确认实例安全组的出站规则:已经放行
0.0.0.0/0(你之前做过,再核对下) - 如果配置了网络ACL:要允许出站的80、443端口(对应HTTP/HTTPS),以及ICMP协议(方便ping测试)
测试命令
配置完后在实例上跑这两个命令验证:
apt-get update ping 8.8.8.8
能ping通8.8.8.8就说明路由生效,apt-get update也能正常执行了。
内容的提问来源于stack exchange,提问作者Leorisar
相关产品推荐
相关产品推荐

