6.7 KiB
第16天:VPC——你的私有网络空间
今天你将学到什么
今天学习 VPC(Virtual Private Cloud,虚拟私有云)。这是 AWS 网络的基础——你的所有资源(EC2、RDS、Lambda 等)都运行在 VPC 里面。
理解 VPC 就像理解你家的网络布局:哪些设备连外网,哪些只在内网通信,防火墙怎么设置。
用小区来理解 VPC
想象你住在一个封闭式小区:
- VPC = 整个小区(有围墙,和外面隔开)
- 子网(Subnet) = 小区里的不同楼栋(1 号楼、2 号楼...)
- Internet Gateway = 小区大门(连接外面的世界)
- 路由表 = 小区内的路标(告诉你去哪个方向)
- 安全组 = 每户的门锁(控制谁能进你家)
- NAT Gateway = 小区的快递柜(住户可以寄快递出去,但外面的人不能直接进来)
核心概念一:VPC 本身
VPC 是你在 AWS 中划出的一块私有网络空间。
创建 VPC 时要做的第一件事:选择 IP 地址范围(CIDR 块)。
什么是 CIDR?
CIDR 就是"这个网络里有多少个 IP 地址可以用"。
常见选择:
10.0.0.0/16→ 有 65,536 个 IP 地址(推荐,空间充足)10.0.0.0/24→ 只有 256 个 IP 地址(太小了)
简单记忆:/16 表示很大的网络,/24 表示小网络。数字越小,网络越大。
核心概念二:子网(Subnet)
子网是 VPC 内部的"分区"。每个子网位于一个特定的可用区(AZ)。
公有子网 vs 私有子网
这是 VPC 设计中最重要的概念:
公有子网:能直接访问互联网(有路由到 Internet Gateway)
- 放什么:负载均衡器、跳板机(Bastion Host)
- 类比:小区临街的商铺,外面的人可以直接进来
私有子网:不能直接被互联网访问
- 放什么:应用服务器、数据库
- 类比:小区内部的住宅楼,外面的人进不来
为什么要分公有和私有?
安全!你的数据库不需要被全世界访问,只需要被你的应用服务器访问。把它放在私有子网里,即使有人知道了它的 IP 地址,也连不上。
典型的网络架构(三层)
互联网
↓
┌─────────────────── VPC ───────────────────┐
│ │
│ 公有子网(面向互联网) │
│ ├── 负载均衡器 ALB │
│ └── NAT Gateway │
│ │
│ 私有子网-应用层(不直接面向互联网) │
│ ├── 应用服务器 1 │
│ └── 应用服务器 2 │
│ │
│ 私有子网-数据层(最深处,最安全) │
│ ├── RDS 数据库 │
│ └── ElastiCache 缓存 │
│ │
└────────────────────────────────────────────┘
流量路径: 用户 → 互联网 → ALB(公有子网)→ 应用服务器(私有子网)→ 数据库(私有子网)
外部用户只能接触到 ALB,永远接触不到数据库。层层保护。
核心概念三:Internet Gateway(互联网网关)
Internet Gateway 是 VPC 连接互联网的"大门"。
- 一个 VPC 只能有一个 Internet Gateway
- 公有子网的路由表指向它
- 没有它,VPC 里的任何东西都上不了网
核心概念四:NAT Gateway
问题:私有子网里的服务器不能直接上网,但它需要下载软件更新、调用外部 API 怎么办?
解决方案:NAT Gateway
NAT Gateway 放在公有子网里,私有子网的流量通过它"转发"到互联网:
- 私有子网的服务器可以主动访问互联网(下载更新、调用 API)
- 但互联网上的人不能主动连接到私有子网的服务器
类比:小区的快递柜。你可以往外寄快递(主动出去),但外面的人不能通过快递柜进入小区(不能主动进来)。
注意:NAT Gateway 按小时收费(约 $0.045/小时 ≈ $32/月),学习时用完记得删除!
核心概念五:路由表(Route Table)
路由表告诉网络流量"该往哪走"。每个子网关联一个路由表。
公有子网的路由表:
| 目标地址 | 下一跳 | 含义 |
|---|---|---|
| 10.0.0.0/16 | local | VPC 内部的流量,本地处理 |
| 0.0.0.0/0 | Internet Gateway | 其他所有流量,走互联网网关 |
私有子网的路由表:
| 目标地址 | 下一跳 | 含义 |
|---|---|---|
| 10.0.0.0/16 | local | VPC 内部的流量,本地处理 |
| 0.0.0.0/0 | NAT Gateway | 其他所有流量,走 NAT 网关 |
0.0.0.0/0 表示"所有地址"——就是说"如果不知道往哪走,就走这条路"。
核心概念六:安全组(复习+深入)
安全组我们在 EC2 那天学过,这里再深入一点。
安全组的一个强大特性:可以引用其他安全组
比如:
- 应用服务器的安全组:允许来自"ALB 安全组"的流量
- 数据库的安全组:允许来自"应用服务器安全组"的流量
这样即使 IP 地址变了(Auto Scaling 加了新服务器),安全规则依然有效。因为你引用的是"身份"(安全组),不是具体的 IP。
默认 VPC vs 自定义 VPC
AWS 每个 Region 都有一个"默认 VPC",方便你快速上手。但生产环境应该创建自定义 VPC:
| 默认 VPC | 自定义 VPC | |
|---|---|---|
| 子网 | 全是公有子网 | 你自己设计公有/私有 |
| 安全性 | 较低 | 你完全控制 |
| 适合 | 学习、快速实验 | 正式项目 |
今天的小测验
- 公有子网和私有子网的区别是什么?数据库应该放在哪种子网里?
- NAT Gateway 的作用是什么?为什么私有子网需要它?
- 为什么安全组引用其他安全组比引用 IP 地址更好?
- 如果一个子网的路由表里没有指向 Internet Gateway 的路由,这个子网是公有还是私有?
延伸阅读
明天预告
明天学习 Route 53(DNS 服务)和 CloudFront(CDN 加速)——让全球用户都能快速访问你的网站,并且实现智能的流量路由。