AWS-VPC-public-private-subnets

AWS VPC 中 Public Subnet 与 Private Subnet 的判断和配置

示例环境

  • Region:us-west-2
  • VPC:wyf_test_VPC,CIDR 为 192.168.0.0/16
  • 子网:
    • wyf_test_subnet1192.168.1.0/24
    • wyf_test_subnet2192.168.2.0/24
  • Internet Gateway:wyf_test_IG,已挂载到 VPC
  • 主路由表:wyf_test_RT

如何判断子网是 Public 还是 Private

子网本身没有单独的“Public”或“Private”类型开关,其性质主要由关联路由表中的路由决定。

如果子网使用的路由表包含以下路由,它就是 public subnet:

Destination: 0.0.0.0/0
Target:      Internet Gateway

例如:

192.168.0.0/16 → local
0.0.0.0/0      → wyf_test_IG

其中:

  • 192.168.0.0/16 → local 用于 VPC 内部通信,由 AWS 自动创建。
  • 0.0.0.0/0 → Internet Gateway 将其他 IPv4 流量发送到互联网。

仅仅把 Internet Gateway 挂载到 VPC,并不会自动让子网变成 public subnet;路由表中还必须存在指向该 Internet Gateway 的默认路由。

路由表的 Main 列是什么意思

每个 VPC 都有且只有一个主路由表。

  • Main = Yes:它是 VPC 的主路由表。没有显式关联其他路由表的子网会自动使用它。
  • Main = No:它不是主路由表。子网通常需要显式关联后才会使用它。

Main = Yes 不代表该路由表是 public 路由表。路由表是 public 还是 private,仍然取决于它是否包含指向 Internet Gateway 的默认路由。

一个子网同一时间只能关联一张路由表,但一张路由表可以关联多个子网。

当前环境的判断

wyf_test_RT 中存在:

192.168.0.0/16 → local
0.0.0.0/0      → wyf_test_IG

两个子网虽然没有显式关联路由表,但都自动使用主路由表 wyf_test_RT。因此,目前:

wyf_test_subnet1 → public subnet
wyf_test_subnet2 → public subnet

配置一个 Public Subnet 和一个 Private Subnet

目标:

wyf_test_subnet1 → public subnet
wyf_test_subnet2 → private subnet

建议使用两张路由表。

Public 路由表

可以将现有的 wyf_test_RT 改名为 wyf_test_public_RT,并保留:

192.168.0.0/16 → local
0.0.0.0/0      → wyf_test_IG

将它关联到:

wyf_test_subnet1

Private 路由表

新建 wyf_test_private_RT,默认只保留:

192.168.0.0/16 → local

不要添加直接指向 Internet Gateway 的默认路由。进入该路由表的 Subnet associations 页面,单击 Edit subnet associations,选择子网 wyf_test_subnet2,然后保存关联。

最终关系如下:

wyf_test_subnet1
  → wyf_test_public_RT
  → 0.0.0.0/0
  → Internet Gateway

wyf_test_subnet2
  → wyf_test_private_RT
  → 无 Internet Gateway 默认路由

附加知识:Private Subnet 如何主动访问互联网

如果 private subnet 中的 EC2 需要下载软件、安装更新或访问外部 API,可以在 public subnet 中创建 NAT Gateway,并为它绑定 Elastic IP。

然后在 private 路由表中添加:

0.0.0.0/0 → NAT Gateway

流量路径为:

Private EC2
  → Private 路由表
  → NAT Gateway
  → Public 路由表
  → Internet Gateway
  → Internet

这种配置允许 private subnet 中的实例主动访问互联网,但互联网不能通过 NAT Gateway 主动连接这些实例。

EC2 直接访问互联网的其他条件

位于 public subnet 并不表示 EC2 一定能访问互联网。EC2 通常还需要:

  1. Public IPv4 地址或 Elastic IP。
  2. Security Group 允许所需流量。
  3. Network ACL 允许所需流量。
  4. 路由表包含指向 Internet Gateway 的默认路由。

子网的 Auto-assign public IPv4 address 设置决定新建 EC2 时是否自动分配公有 IPv4,但它本身并不决定子网是 public 还是 private。

快速检查清单

检查某个子网时,可以依次确认:

  1. 子网关联了哪张路由表。
  2. 如果没有显式关联,确认 VPC 的主路由表。
  3. 检查是否有 0.0.0.0/0 → Internet Gateway
  4. 如果使用 NAT Gateway,确认 NAT Gateway 位于 public subnet 并绑定了 Elastic IP。
  5. 检查 EC2 的 IP 地址、Security Group 和 Network ACL。

核心判断可以概括为:

默认路由直接指向 Internet Gateway → Public Subnet
默认路由指向 NAT Gateway            → Private Subnet(可主动访问互联网)
没有互联网默认路由                   → Private/Isolated Subnet
posted @ 2026-08-28 16:10  万变不离许嵩  阅读(2)  评论(0)    收藏  举报