NAT Gateway 在实际中的使用方式(实践说明)

前面已经介绍了 NAT Gateway 的作用,下面结合 AWS 的实际操作流程,说明在真实环境中应当如何使用。


一、Public Subnet 与 Private Subnet 的定义

在 AWS 中,Subnet 是否是 Public 或 Private,并不是由名称决定,而是由它所关联的路由表决定的

  • Public Subnet

    • 路由表中存在如下记录:
      0.0.0.0/0 → Internet Gateway (igw-xxxx)
    • 表示该 Subnet 内的资源可以直接访问互联网,并且在满足条件时也可以被公网访问。
  • Private Subnet

    • 路由表中 不存在 指向 Internet Gateway 的默认路由
    • 通常会通过 NAT Gateway 间接访问互联网
    • Subnet 内的资源无法被公网直接访问

二、创建 Subnet

  1. 进入 VPC
  2. 打开 Subnets 页面,点击右上角 Create subnet
  3. 配置以下信息:
    • 选择所属的 VPC
    • 设置 Subnet 的 CIDR(如 10.0.1.0/24
    • 选择 Availability Zone
  4. 创建完成

实际生产环境中,通常会:

  • 至少创建一个 Public Subnet(用于 NAT Gateway、ALB 等)
  • 创建多个 Private Subnet(用于 EC2、ECS、RDS 等业务资源)

三、创建 NAT Gateway

  1. 进入 NAT Gateways 页面,点击 Create NAT gateway
  2. 配置说明:
    1. Connectivity type:选择 Public (Zonal)
    2. Subnet
      • 选择一个 Public Subnet
      • ⚠️ NAT Gateway 必须部署在 Public Subnet 中
    3. Elastic IP
      • 分配一个新的 EIP(或选择已有的)
      • 该 EIP 将作为所有 Private Subnet 出网的统一出口 IP
  3. 创建完成后,等待 NAT Gateway 状态变为 Available

四、创建 Route Table(用于 Private Subnet)

  1. 进入 Route Tables 页面,点击 Create route table
  2. 选择对应的 VPC,点击创建
  3. 选中新创建的 Route Table,点击 Edit routes
  4. 添加一条路由:
    • Destination0.0.0.0/0
    • Target:选择 NAT Gateway
    • 在下拉列表中选中刚刚创建的 NAT Gateway
  5. 点击 Save changes

五、将 Route Table 关联到 Subnet

  1. 在刚创建的 Route Table 页面中:
    • 点击右上角 Actions
    • 选择 Edit subnet associations
  2. 勾选需要作为 Private Subnet 的 Subnet
  3. 点击 Save associations

六、最终效果说明

至此,一个完整的 Private Subnet + NAT Gateway 出网架构已经搭建完成:

  • Subnet 内的 EC2 / ECS / Lambda(ENI):
    • ✅ 可以访问互联网(如 apt / yum / pip / docker pull
    • ✅ 所有出网流量统一从 NAT Gateway 的 EIP 发出
  • Subnet 内的资源:
    • ❌ 无法被公网直接访问
  • 整体效果:
    • ✅ 大幅降低服务器的攻击面
    • ✅ 提升整体网络安全性

如果将 EC2 部署在该 Private Subnet 中,即使安全组或 NACL 配置失误,也不会被公网直接扫描或访问。


总结

通过 NAT Gateway + Private Subnet 的方式,可以实现:

  • 统一、固定的出口 IP
  • 内网资源安全地访问外网
  • 有效隔离公网访问入口

这是 AWS 中构建安全网络架构的标准实践之一

Leave a Comment