# 第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 加速)——让全球用户都能快速访问你的网站,并且实现智能的流量路由。