Internet▲ │ ┌───── IGW ─────┐ │ │ ┌───────┴───────┐ ┌───┴────────┐ │PublicSubnet│ │PublicSubnet│ │(ALB/NAT)│ │(ALB/NAT)│ │RouteTableA│ │RouteTableA│ │0.0.0.0/0→ IGW │ │0.0.0.0/0→ IGW │ └───────────────┘ └─────────────┘ ▲ │ ┌───────┴────────┐ │ NATGateway│ └───────▲────────┘ │ ┌──────────┴──────────┐ │PrivateSubnet│ │(EC2/ASG)│ │RouteTableB│ │10.0.0.0/16→ local│ │0.0.0.0/0→ NAT │ │ S3Prefix→Endpoint│ └─────────────────────┘一、Application Load Balancer(ALB)是什么?
一句话定义
ALB 是“对外接客、对内分流”的应用层入口。ALB 解决什么问题?
没有 ALB 会怎样?
用户直接访问 EC2
EC2 挂了 → 服务直接不可用
扩容要改 DNS / IP
HTTPS 证书难管理
有了 ALB
用户 → ALB(一个固定公网入口) → 多台后端服务器(自动扩缩容)ALB 的核心能力
| 能力 | 说明 |
|---|---|
| 第 7 层 | HTTP / HTTPS |
| 路径转发 | /api→ A 组,/img→ B 组 |
| Host 转发 | a.com/b.com |
| 健康检查 | 自动摘掉坏机器 |
| TLS 终结 | HTTPS 证书放在 ALB |
| 跨 AZ | 天然高可用 |
ALB 在网络中的位置
必须放在 Public Subnet
有公网 IP(或公网访问能力)
后端 通常在 Private Subnet
二、NAT Gateway 是什么?
一句话定义
NAT Gateway 是“私网服务器出门用的代理”。
它解决的是反方向问题
| 组件 | 解决的问题 |
|---|---|
| ALB | 外部 → 内部 |
| NAT | 内部 → 外部 |
Private Subnet 的设计目标是:
❌ 不暴露公网
✅ 还能访问外部资源
例如:
yum update
拉 Docker 镜像
调用第三方 API
NAT Gateway 的位置(非常重要)
部署在 Public Subnet
有 EIP
私网路由指向它
PrivateSubnet:0.0.0.0/0→ NATGatewayNATGateway:0.0.0.0/0→ IGW三、ALB 和 NAT Gateway 之间的关系
先给结论
ALB 和 NAT Gateway 完全不通信、也不依赖彼此。
它们只是:
都在 Public Subnet
服务不同方向的流量
对比表(非常关键)
| 项目 | ALB | NAT Gateway |
|---|---|---|
| 流量方向 | 外 → 内 | 内 → 外 |
| OSI 层 | L7 | L3 / L4 |
| 面向对象 | 用户 | 私有资源 |
| 是否接受公网请求 | 是 | 否 |
| 是否给私网用 | 间接 | 直接 |
正确理解方式
Internet↓[ALB]→ 私网服务(接客) 私网服务 →[NAT]→Internet(出门)一个负责“进”,一个负责“出”
四、什么叫「成本可控(私网 + Endpoint)」?
这句话是云架构设计的经验总结。
先看“贵”的方案(很多人一开始都会这样)
PrivateSubnet→ NATGateway→Internet→ S3/DynamoDB问题:
NAT Gateway 按流量收费
大量:
日志
文件
备份
成本非常容易失控
优化方案:私网 + Endpoint
PrivateSubnet→ VPCEndpoint→ AWS 服务(不出 VPC)好处
❌ 不走 NAT
❌ 不走公网
❌ 不按 NAT 流量计费
✅ 更安全
✅ 延迟更低
👉 这就是“成本可控”
五、VPC Endpoint 是什么?
一句话定义
VPCEndpoint=VPC 内部直连 AWS 服务的“专用通道”。为什么需要 Endpoint?
AWS 的很多服务(S3、DynamoDB):
不在你的 VPC 里
默认访问方式是:
VPC →Internet→ AWS 公共服务Endpoint 的作用就是:
- 让流量“别出 VPC”。
Endpoint 的两种类型(重点)
1️⃣ Gateway Endpoint(最常见)
用于:
S3
DynamoDB
工作方式:
改路由表
不收费(只有正常流量)
👉 你图里用的就是这个
2️⃣ Interface Endpoint
用于:
SSM
Secrets Manager
CloudWatch
本质:
ENI + Private IP
有费用
六、S3 Gateway Endpoint 是什么?
一句话
Private Subnet 访问 S3 的“免 NAT、免公网、免暴露”通道。
有 vs 没有 Endpoint 的区别
❌ 没有
EC2 → NATGateway(收费) →Internet→ S3✅ 有 S3 Gateway Endpoint
EC2 → S3Endpoint→ S3它带来的三重好处
| 维度 | 提升 |
|---|---|
| 成本 | 不走 NAT |
| 安全 | 不出公网 |
| 架构 | 更干净 |
七、把所有东西串成一张“逻辑脑图”
Internet↓[ALB]← 对外入口 ↓PrivateSubnet├─ EC2/ASG │ ├─ 出网 → NATGateway→Internet│ └─ 访问 S3 → S3 VPCEndpoint八、一句话面试级总结
ALB 负责把公网请求安全地送进私网,
NAT Gateway 负责让私网安全地访问公网,
VPC Endpoint 则让私网访问 AWS 服务时既安全又省钱。
关于路由表
一、一句话先给结论(非常重要)
路由表决定:一台资源发出去的流量“下一跳去哪”。
不是“能不能访问”,而是 “往哪走”。
二、路由表到底在解决什么问题?
想象你在一个城市开车:
你知道目的地(IP)
但你不知道走哪条路
👉 路由表 = 地图 + 交通指示牌
三、路由表里面到底有什么?
每一条路由,本质都是这 3 个东西:
| 字段 | 意义 |
|---|---|
| Destination | 目标地址段 |
| Target | 下一跳 |
| Priority | 谁更具体谁先用 |
示例(AWS VPC)
| Destination | Target |
|---|---|
| 10.0.0.0/16 | local |
| 0.0.0.0/0 | igw-xxxx |
四、在 AWS 里,路由表“绑在哪里”?
重点来了:
AWS 的路由表是绑定在 Subnet 上的
不是:
EC2
不是 Security Group
而是:
- Subnet → Route Table
👉 同一个 Subnet 里的所有资源,共用一套路由
五、路由表 vs Security Group(非常容易混)
| 路由表 | Security Group | |
|---|---|---|
| 决定 | 往哪走 | 让不让过 |
| 层级 | 网络层 | 防火墙 |
| 是否状态 | 无状态 | 有状态 |
| 控制对象 | Subnet | 资源 |
👉 路由表不管“允许不允许”,只管“往哪走”
六、Public Subnet 为什么叫 Public?
不是因为“放了公网 IP”,
而是因为 路由表:
0.0.0.0/0→InternetGateway意味着什么?
任何“不知道去哪”的流量
都可以出公网
👉 这才是 Public 的本质
七、Private Subnet 为什么叫 Private?
因为它的路由表里:
❌ 没有 IGW
❌ 没有直达公网
典型配置:
10.0.0.0/16→ local0.0.0.0/0→ NATGateway外部进不来
但可以“借道” NAT 出去
八、路由表如何“串起”你之前问的所有组件?
我们用真实路径串一遍 👇
1️⃣ 用户访问网站(ALB)
用户 →Internet→ IGW → ALB(PublicSubnet)Public Subnet 路由表:
0.0.0.0/0→ IGW2️⃣ ALB 转发到私有服务器
ALB → EC2(PrivateSubnet)Private Subnet 路由表:
10.0.0.0/16→ local3️⃣ 私有服务器访问互联网(NAT)
EC2 → NAT → IGW →InternetPrivate Subnet 路由表:
0.0.0.0/0→ NATGatewayNAT 所在 Subnet 路由表:
0.0.0.0/0→ IGW4️⃣ 私有服务器访问 S3(Endpoint)
EC2 → S3Endpoint→ S3Private Subnet 路由表:
pl-xxxx(S3PrefixList)→ S3Endpoint👉 完全绕过 NAT 和公网
九、为什么说“路由表是架构的灵魂”?
因为:
Subnet 是否公有 ❌
NAT 是否生效 ❌
Endpoint 是否省钱 ❌
高可用是否成立 ❌
全靠路由表
十、非常好用的“判断口诀”
看到 Subnet,先看路由表。
看到路由表,先看 0.0.0.0/0。
十一、一句话面试级总结(直接可用)
路由表定义了子网中资源的流量走向,是区分 Public 与 Private Subnet、连接 ALB、NAT 和 VPC Endpoint 的核心机制。
简单介绍0.0.0.0/0
0.0.0.0/0 = 默认路由(Default Route)
“如果不知道该往哪走,就走这条路。”
把它拆开看(非常关键)
1️⃣ 0.0.0.0 是什么?
表示 “任意 IPv4 地址”
本身不是一个具体主机
是一个占位符
2️⃣ /0 是什么?
CIDR 掩码
/0 = 0 位匹配
意味着:
👉 不要求任何前缀匹配
合起来就是:
0.0.0.0/0=匹配所有IPv4地址路由表是“匹配规则”,不是“顺序执行”
路由表的核心规则是:
最长前缀匹配(Longest Prefix Match)
举个例子
| 目标地址 | 匹配哪条路由 |
|---|---|
| 10.0.1.15 | 10.0.0.0/16 |
| 52.95.x.x(S3) | pl-xxxx |
| 8.8.8.8 | 0.0.0.0/0 |
👉 0.0.0.0/0 永远是最后兜底
为什么说「看到路由表,先看 0.0.0.0/0」?
因为它直接决定这三个生死问题:
① 子网是不是 Public?
0.0.0.0/0→InternetGateway✅ Public Subnet
② Private Subnet 能不能出网?
0.0.0.0/0→ NATGateway✅ 能出
❌ 但外部进不来
③ 真·私网(完全隔离)
❌ 没有0.0.0.0/0不能访问公网
常用于数据库
用“人话”再解释一次
你可以把路由表理解成问路:
问:“我要去这个 IP,怎么走?”
路由表回答顺序是:
有没有更具体的?
没有?
👉 那就走 0.0.0.0/0
在 AWS 中的三种经典写法(你一定会见到)
Public Subnet
0.0.0.0/0→ igw-xxxxPrivate Subnet(可出网)
0.0.0.0/0→ nat-xxxx完全内网
(没有0.0.0.0/0)一个特别重要的澄清(很多人会误会)
❌ 0.0.0.0/0 ≠ 允许所有流量
它只表示:
- “怎么走”
至于:
能不能过
能不能访问
👉 那是 Security Group / NACL 的事
用一句话帮你彻底记牢
0.0.0.0/0 不是“所有人都能来”,
而是“所有不知道去哪的流量,都从这里走”。
判断子网属性,先看 0.0.0.0/0 指向谁。