You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS NAT实例配置后私有子网实例无法访问互联网的排查求助

AWS NAT实例配置后私有子网实例无法访问互联网的排查求助

我最近在学习AWS云服务,给自己布置了一个架构搭建挑战,但遇到了棘手的问题——私有子网里的实例没法通过NAT实例访问互联网。之前在Stack Overflow发过这个问题,那边建议我转到这里来求助。

我想要搭建的架构如下:

  • 一个包含公有子网和私有子网的VPC,公有子网通过互联网网关(IGW)接入互联网
  • 公有子网内部署一台NAT EC2实例,作为私有子网实例访问互联网的中转网关
  • 私有子网内放置一台测试实例,用来验证互联网连通性

我参考了AWS官方的NAT实例配置文档,但反复尝试后还是没能让私有实例成功联网。下面是我完整的操作步骤,应该和文档要求一致:

一、创建VPC及子网

  • 通过AWS控制台创建默认VPC,在单个可用区下创建2个子网(1个公有、1个私有)
  • 所有配置保持默认:NACL允许所有流量,公有路由表将0.0.0.0/0指向IGW,两个路由表都配置了VPC CIDR指向local的本地路由

二、创建私有子网实例

  • 除以下配置外,其余使用默认选项:选择私有子网,不分配公网IP,使用自定义安全组troubleshooting-sg(这个安全组设置为允许所有流量,目的是排除安全组规则的影响)

三、创建并配置NAT实例

  • 在公有子网启动实例,使用的AMI为:Amazon Linux 2023 AMI 2023.1.20230705.0 x86_64 HVM kernel-6.1
  • 开启自动分配公网IP,使用troubleshooting-sg安全组
  • 创建完成后,在实例的网络配置里关闭了源/目标检查(创建面板里没找到这个选项,所以是创建后修改的)
  • SSH登录NAT实例,执行了以下配置命令:
sudo yum update -y
sudo sysctl -w net.ipv4.ip_forward=1
sudo /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo yum install -y iptables-services
sudo systemctl enable iptables.service
sudo systemctl start iptables.service

四、更新私有子网路由表

  • 将私有路由表的0.0.0.0/0路由条目指向这台NAT实例

五、测试情况

  • SSH登录NAT实例,验证它本身可以正常访问互联网
  • 通过NAT实例SSH登录私有实例(使用密钥)
  • 但在私有实例内部完全无法访问互联网;另外,如果把私有路由表里指向NAT实例的0.0.0.0/0路由删掉,情况也没有任何改善

我现在实在摸不着头绪,看起来问题可能出在NAT实例的配置上,但我明明严格按照文档步骤操作了。有没有朋友能给我一些进一步排查的思路?谢谢!

备注:内容来源于stack exchange,提问作者lobis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:34:30