AWS 如何让某个子网真正访问公网?(涉及 IGW + 路由表 + 公网 IP 三件套)

这是 VPC 架构中最重要的一块拼图之一。如果你掌握了「让子网访问公网」的完整流程,基本上就能理解 AWS 网络配置的 80%。


🎯 目标:让子网中的 EC2 实例能访问公网

我们要实现的场景是:

启动一台 EC2,部署个服务(比如 Nginx),能上网(如 curl 官网)、也能被公网访问(如用浏览器访问它的 IP)


🛠️ 实现这个目标,必须满足三个条件(一个都不能少):

条件名称说明
✅ 条件1Internet Gateway (IGW)给整个 VPC 开一扇通向互联网的大门
✅ 条件2路由表(Route Table)明确告诉子网:到公网走 IGW
✅ 条件3公网 IP 地址(Public IP)实例或 ENI 本身要有“门牌号”,外部才能找到你

✅ 三件套详细说明

条件 1:创建并附加 IGW

aws ec2 create-internet-gateway
aws ec2 attach-internet-gateway --vpc-id vpc-xxxx

或者控制台:VPC → Internet Gateway → Create → Attach to VPC


条件 2:更新子网关联的路由表,添加一条:

目标:0.0.0.0/0
下一跳:Internet Gateway (igw-xxxx)

意思是:“所有非内网流量都走 IGW”

确保这个路由表是和你的子网关联的


条件 3:实例分配公网 IP

  • ✅ 启动 EC2 实例时,选项中“Auto-assign public IP” 设为 Enable
  • 或者启动后给 ENI 添加 Elastic IP(弹性公网 IP)

🧠 总结一句话口诀:

“子网要出门:得有大门(IGW)、指路牌(路由表)、身份证(公网 IP)”


📊 图解流程(文字版)

┌──────────────────────────────┐
│           VPC               │
│  ┌──────────────────────┐   │
│  │      Subnet A        │◄─┐│
│  │ ┌────────────┐       │  ││
│  │ │   EC2实例   │       │  ││
│  │ └────┬───────┘       │  ││
│  │      │ENI(含公网IP)│  ││
│  └──────┼───────────────┘  ││
│         ▼                 ▲ ││
│    Route Table        NACL │ │
│   (0.0.0.0/0 → IGW)       │ │
│         │                 │ │
│         ▼                 │ │
│       IGW(Internet Gateway) │
│         │                 │
│         ▼                 │
│      Internet(公网)     │
└──────────────────────────────┘

🧪 实战建议

  1. 默认 VPC 通常已经配好了 IGW 和路由表,是最好的练手场景。

  2. 自定义 VPC 要手动配置三件套,否则 EC2 默认无法联网。

  3. 安装完 EC2 后可以测试:

    curl ifconfig.me
    ping www.google.com
    

「内网子网 + NAT 网关 访问外网但不暴露」的经典企业内外网架构

这个架构是企业 VPC 设计中的核心模式之一。它解决了一个关键矛盾:

“我希望服务访问公网(比如下载依赖、调用第三方 API),但我又不希望公网能访问它(出得去,进不来)。”

这就用到了 私有子网 + NAT 网关 的经典组合。


🧱 场景目标

我们有两类子网:

类型子网位置是否分配公网 IP是否能访问公网是否能被公网访问
公有子网DMZ 区域✅ 有公网 IP✅ 能访问公网✅ 被公网访问
私有子网内网服务区域❌ 无公网 IP✅ 能访问公网❌ 不能被公网访问

🧠 企业为什么这么设计?

  • 内网的服务(如数据库、业务后端)要更新软件、下载镜像、连第三方 API → 要访问公网
  • 但这些服务不希望暴露 IP,以防止被攻击或暴露接口
  • 这时候就让它们通过 NAT Gateway 统一“代理出去”

🔄 NAT Gateway 的作用是:

“像一个内网翻墙器,多个内网实例出门时统一走它。”

它会把内网实例的私有 IP 转换成 NAT 网关绑定的公网 IP,然后出网,公网看到的不是源实例的 IP,而是 NAT 的 IP。


🔧 实现步骤(你可以类比前面的三件套):

步骤操作
1创建一个 NAT Gateway,绑定一个 Elastic IP(公网地址)
2把 NAT 网关部署在 公有子网中(因为它要连公网)
3给私有子网关联一个 路由表,加一条: 0.0.0.0/0 -> NAT Gateway
4私有子网的实例不要分配公网 IP

🌐 路由逻辑图

┌───────────────┐           ┌────────────┐
│   私有子网     │           │ 公有子网    │
│ EC2 (无公网IP)│──路由表──►│ NAT Gateway│──► Internet
└───────────────┘           └────────────┘

📦 示例结构整理

VPC (10.0.0.0/16)
├── 公有子网 A (10.0.1.0/24)
│   └── NAT Gateway + EIP
├── 私有子网 B (10.0.2.0/24)
│   └── 后端 EC2,无公网 IP
  • 公有子网:部署 NAT Gateway、可能还有负载均衡器(ALB)

  • 私有子网:部署业务服务、数据库、安全敏感组件

  • 路由配置:

    • 公有子网 → IGW
    • 私有子网 → NAT Gateway

✅ 这种架构的优势

优势解释
出得去、进不来内网实例安全,不暴露在公网
公网访问通过负载均衡器或 Bastion控制入口,防止攻击
能正常使用云服务(S3, STS等)NAT Gateway 支持访问 AWS 公网服务
合规性更强安全审计、运维分离更规范

🚫 注意事项

注意点建议
NAT Gateway 计费按流量如果不希望额外费用,可替代方案:NAT 实例(自建 EC2)
不能跨 AZ 部署 NAT Gateway每个 AZ 内都需一个 NAT GW(或设定跨 AZ 路由)
默认路由表不要搞混公有子网走 IGW,私有子网走 NAT

🧠 总结一句话口诀:

“让内网能访问外网但又不被访问:公有 NAT + 私有子网 + 路由表指向 NAT”


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忍者算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值