182 lines
6.7 KiB
Markdown
182 lines
6.7 KiB
Markdown
# 第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 |
|
||
|--|---------|-----------|
|
||
| 子网 | 全是公有子网 | 你自己设计公有/私有 |
|
||
| 安全性 | 较低 | 你完全控制 |
|
||
| 适合 | 学习、快速实验 | 正式项目 |
|
||
|
||
---
|
||
|
||
## 今天的小测验
|
||
|
||
1. 公有子网和私有子网的区别是什么?数据库应该放在哪种子网里?
|
||
2. NAT Gateway 的作用是什么?为什么私有子网需要它?
|
||
3. 为什么安全组引用其他安全组比引用 IP 地址更好?
|
||
4. 如果一个子网的路由表里没有指向 Internet Gateway 的路由,这个子网是公有还是私有?
|
||
|
||
---
|
||
|
||
## 延伸阅读
|
||
|
||
- [VPC 用户指南](https://docs.aws.amazon.com/vpc/latest/userguide/)
|
||
- [VPC 设计最佳实践](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-best-practices.html)
|
||
|
||
---
|
||
|
||
## 明天预告
|
||
|
||
明天学习 Route 53(DNS 服务)和 CloudFront(CDN 加速)——让全球用户都能快速访问你的网站,并且实现智能的流量路由。
|