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_subnet1:192.168.1.0/24wyf_test_subnet2:192.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 通常还需要:
- Public IPv4 地址或 Elastic IP。
- Security Group 允许所需流量。
- Network ACL 允许所需流量。
- 路由表包含指向 Internet Gateway 的默认路由。
子网的 Auto-assign public IPv4 address 设置决定新建 EC2 时是否自动分配公有 IPv4,但它本身并不决定子网是 public 还是 private。
快速检查清单
检查某个子网时,可以依次确认:
- 子网关联了哪张路由表。
- 如果没有显式关联,确认 VPC 的主路由表。
- 检查是否有
0.0.0.0/0 → Internet Gateway。 - 如果使用 NAT Gateway,确认 NAT Gateway 位于 public subnet 并绑定了 Elastic IP。
- 检查 EC2 的 IP 地址、Security Group 和 Network ACL。
核心判断可以概括为:
默认路由直接指向 Internet Gateway → Public Subnet
默认路由指向 NAT Gateway → Private Subnet(可主动访问互联网)
没有互联网默认路由 → Private/Isolated Subnet

浙公网安备 33010602011771号