AWS私有子网中Ubuntu 16.04实例无法连接互联网求助
排查AWS私有子网Ubuntu 16.04无法连接互联网的问题
嘿,这个问题我之前碰到过类似的,Ubuntu 16.04和Amazon Linux在AWS私有子网里的网络行为差异,大概率是路由表或者DNS配置的问题——毕竟你已经确认安全组、密钥、NAT网关这些和正常实例一致了。咱们一步步来排查:
1. 确认私有子网的默认路由指向NAT网关
虽然你提到同子网的Amazon Linux正常,但还是得先确认Ubuntu实例的路由配置是否正确:
- 在Ubuntu实例里执行命令:
ip route show - 检查输出里是否包含类似
default via <NAT网关内网IP> dev eth0的默认路由条目。如果没有,说明该子网关联的路由表未配置0.0.0.0/0指向NAT网关,需要到AWS控制台修改对应路由表的规则。
2. 检查DNS配置是否生效
Ubuntu 16.04的DNS解析逻辑和Amazon Linux略有不同,很可能是这里出了问题:
- 查看当前DNS配置:
cat /etc/resolv.conf - 正常情况下应该包含AWS VPC提供的DNS服务器(通常是VPC主IP地址+2,比如VPC网段是10.0.0.0/16,DNS就是10.0.0.2)。如果没有看到这个条目:
- 先手动添加测试:
(替换成你自己VPC的DNS地址)sudo echo "nameserver 10.0.0.2" >> /etc/resolv.conf - 然后测试域名解析:
ping google.com,如果能通,说明是DHCP选项集或VPC DNS配置的问题,需要到AWS控制台确认VPC的「Enable DNS resolution」和「Enable DNS hostnames」是否都设置为Yes。
- 先手动添加测试:
3. 检查Ubuntu本地防火墙规则
Ubuntu默认启用ufw防火墙,可能会限制出站流量,而Amazon Linux默认没有开启类似的严格规则:
- 临时关闭防火墙测试:
sudo ufw disable - 之后再尝试
ping 8.8.8.8或curl google.com,如果能正常连接,说明是ufw规则阻止了流量,需要调整ufw的出站规则。
4. 验证NAT网关的可用性与配置
虽然同子网实例正常,但还是快速确认下NAT网关状态:
- 到AWS控制台查看NAT网关的详情,确保其状态为
available,且绑定了有效的弹性公网IP; - 检查NAT网关所在的公有子网是否有正确的路由表(0.0.0.0/0指向互联网网关)。
额外测试:区分IP连通性与域名解析
如果以上步骤都没解决,先测试纯IP连通性:
ping 8.8.8.8
- 如果IP能ping通,但域名不行:100%是DNS配置问题,回到步骤2深入排查;
- 如果IP也无法ping通:重点检查路由表和NAT网关的出站权限。
内容的提问来源于stack exchange,提问作者TheRedSeth
相关产品推荐
相关产品推荐

