什么是VPC?一句话 + 一个类比
先建立一个直觉,再深入到技术细节。
一句话定义:VPC(Virtual Private Cloud,虚拟私有云)是公有云厂商在共享的物理基础设施上,通过虚拟化技术为你划出的一块私有的、网络隔离的、完全由你自定义的虚拟网络空间。
你可以在里面自由规划 IP 网段、划分子网、配置路由表、部署云资源(云服务器、数据库、负载均衡等),就像拥有一套自己独占的局域网。
类比理解 — 公有云是公寓楼,VPC是你的独立套房
VPC 的四大核心特性
🔒 网络隔离
不同 VPC 之间二层/三层完全隔离,即使 IP 段相同也互不可达,天然防止互相干扰和数据泄露。
📐 自定义网段
自由选择私有 IP 网段(10.x / 172.16.x / 192.168.x),按业务需要规划 CIDR。
🧩 灵活划分子网
在 VPC 内按可用区、按业务类型(公网/私网、Web/DB/缓存)划分多个子网。
🛡️ 精细安全管控
通过安全组(实例级)、网络ACL(子网级)、路由表、网关实现精细的访问控制。
VPC 在不同云厂商的对应名称
| 云厂商 |
VPC 服务名称 |
子网名称 |
互联网网关 |
| 阿里云 |
专有网络 VPC |
交换机 vSwitch |
公网网关 / EIP + NAT |
| 腾讯云 |
私有网络 VPC |
子网 Subnet |
公网网关 / EIP + NAT网关 |
| 华为云 |
虚拟私有云 VPC |
子网 Subnet |
弹性公网IP + NAT网关 |
| AWS |
Amazon VPC |
Subnet |
Internet Gateway |
| Azure |
Azure Virtual Network |
Subnet |
Internet Gateway / NAT Gateway |
💡 叫法不同,本质一样:阿里云的"专有网络VPC"、腾讯云的"私有网络VPC"、AWS 的 "Amazon VPC",底层原理完全一致。本文以"VPC"统一称呼。
VPC 的层级关系(记住这个洋葱模型)
地域 Region → VPC(网段)→ 可用区 AZ → 子网 Subnet → 云资源(ECS / RDS / SLB ...)
VPC 是地域级资源;子网是可用区级资源;实例属于某个子网
- 地域(Region):如华东1(杭州)、华北2(北京),VPC 不能跨地域
- VPC:一个地域内的独立网络空间,拥有自己的 CIDR 网段
- 可用区(AZ):同一地域内物理隔离的数据中心,用于高可用
- 子网(Subnet):VPC 网段的一部分,绑定在某个可用区上
- 云资源:云服务器、数据库等实例,最终都挂载在某个子网内
为什么需要VPC?没有它会怎样?
回到云计算早期:没有 VPC 的日子,和有了 VPC 之后,云上网络发生了怎样的变化。
对比 — 传统IDC/经典网络 vs VPC网络
没有 VPC 的"经典网络"是什么样?
在 VPC 出现之前,云厂商提供的是经典网络(Classic Network):所有用户的所有云服务器共享同一个大二层网络,靠防火墙规则区分彼此。
| 对比维度 |
经典网络(旧) |
VPC 网络(新) |
| 网络边界 |
所有用户混在一起,无明确边界 |
每个 VPC 独立隔离,边界清晰 |
| IP 地址 |
由厂商统一分配,不可自定义 |
自己规划 CIDR,IP 可预期 |
| 子网划分 |
不支持 |
按可用区/业务自由划分 |
| 路由控制 |
不可控 |
自定义路由表,精确控制流量走向 |
| 安全策略 |
粗粒度 |
安全组 + 网络ACL 双层精细控制 |
| 现状 |
已淘汰,新购实例均使用 VPC |
云上网络的唯一标准 |
⚠️ 现实提醒:如果你还在用"经典网络",赶紧迁到 VPC。云厂商已逐步停止经典网络的服务支持,新业务一律建在 VPC 里。
VPC 网络的核心组件
一个完整的 VPC 由 6 类核心组件构成,理解它们就理解了 VPC 的全部。
VPC 全景架构图 — 一次看懂所有组件
① 私有网段(CIDR)— 你的"地皮"
创建 VPC 时首先要选一块私有 IP 地皮(网段)。云厂商一般只允许使用 RFC 1918 私有地址段:
| 私有网段 |
可用 IP 数量 |
适用场景 |
10.0.0.0/8 |
约 1,677 万个 |
大型集团、多环境大规划 |
172.16.0.0/12 |
约 104 万个 |
中型企业,注意避开 172.17(Docker默认网段) |
192.168.0.0/16 |
约 6.5 万个 |
小型业务、测试环境 |
⚠️ 关键提醒:网段一旦创建,不可修改。选小了后期无法扩容(除非重建 VPC 迁移),选大了又浪费。规划前务必想清楚:未来会不会和本地机房互通?会不会跨账号互通?IP 段冲突是云上最常见的历史包袱。
② 子网(Subnet)— 功能分区
子网是把 VPC 网段切成更小的片段,每个子网绑定一个可用区。典型划分:
- 公网子网(Public Subnet):挂 SLB、跳板机等需要直接对外的实例,通过 IGW + EIP 暴露公网
- 私网子网(Private Subnet):放数据库、缓存、内部服务,没有公网 IP,只能内网访问
- 多可用区:每个功能在同一可用区都有副本 → 单可用区故障不丢服务(高可用)
💡 判断一个子网是"公网"还是"私网"的唯一标准:它绑定的路由表里有没有一条指向互联网网关的默认路由(0.0.0.0/0 → IGW)。有就是公网子网,没有就是私网子网。子网本身没有"公/私"属性。
③ 路由表(Route Table)— 流量红绿灯
每个子网都关联一张路由表,路由表决定从这个子网发出的数据包往哪走:
| 目的网段 |
下一跳 |
说明 |
10.0.0.0/16 |
Local(本VPC) |
VPC 内部互通(默认存在,不可删除) |
0.0.0.0/0 |
IGW 互联网网关 |
公网子网加这条 → 出公网 |
0.0.0.0/0 |
NAT 网关 |
私网子网加这条 → 只能出不能进 |
172.16.0.0/16 |
对等连接/云联网 |
去往另一个 VPC 的路由 |
192.168.100.0/24 |
VPN / 专线网关 |
去往本地 IDC 的路由 |
匹配原则:最长前缀优先。比如去 10.0.2.10 的数据包,会匹配 10.0.0.0/16 的 Local 路由而不是 0.0.0.0/0 的默认路由。
④ 网关(Gateway)— 与外界的出入口
🚪 互联网网关 IGW
VPC 与公网互通的通道。公网子网里的实例绑上 EIP 后,即可被公网访问。
↔️ NAT 网关
让没有公网IP的私网实例主动访问公网(如拉取依赖、调第三方API),但公网无法主动访问回来。安全性高,收费。
🔐 VPN 网关
通过 IPsec 隧道加密连接本地 IDC,走公网但加密,成本低、安全性中等。
🔌 专线网关
通过物理专线直连本地机房,延迟低、带宽大、稳定,成本高。适合核心业务混合云。
⑤ 安全组 & ⑥ 网络ACL — 两道防火墙
| 对比维度 |
安全组(Security Group) |
网络ACL(Network ACL) |
| 作用层级 |
实例级别(绑定在 ECS/RDS 上) |
子网级别(绑定在子网上) |
| 有状态性 |
有状态:允许出站自动放行回应流量 |
无状态:出站/入站要分别配规则 |
| 规则类型 |
只支持"允许"规则(默认全拒) |
支持"允许"和"拒绝"规则 |
| 默认行为 |
默认拒绝所有入站 |
默认允许所有(需自行收紧) |
| 适用场景 |
日常使用的第一道防线 |
子网级粗粒度边界,如封禁某IP段 |
✅ 最佳实践:两者叠加使用形成纵深防御——网络ACL 在子网边界挡住恶意 IP 段(节省安全组规则),安全组在实例层面做精细化管控(只放行业务端口)。数据包要先过 ACL,再过安全组。
网段与子网规划 — 最实用的部分
规划得好,几年省心;规划得差,天天踩坑。这节给出可直接套用的模板。
CIDR 基础:/16 /24 到底是多少个IP?
CIDR 后缀(/n)表示网络前缀占用的位数,越小网段越大:
| 网段 |
IP 总数 |
可用 IP |
形象比喻 |
10.0.0.0/8 |
16,777,216 |
约 1677 万 |
一整座城 |
10.0.0.0/16 |
65,536 |
约 6.5 万 |
一个小区 |
10.0.0.0/20 |
4,096 |
约 4093 |
一栋楼 |
10.0.0.0/24 |
256 |
253(阿里云/腾讯云各预留3个) |
一个楼层 |
10.0.0.0/28 |
16 |
13 |
一个房间 |
💡 注意:每个子网的前几个 IP(如 .0、.1、.2、.3)和最后一个 IP(广播地址)会被云厂商保留,不能分配给实例。所以实际可用数 = 总数 - 3(阿里云)/ -4(AWS)。
子网划分 — 一个 /16 如何拆成多个子网
推荐规划模板(可直接抄作业)
| 业务规模 |
VPC 根网段 |
子网划分 |
说明 |
| 个人项目 / 学习 |
192.168.0.0/16 |
1个 VPC + 2个子网 |
公网子网放Web,私网子网放DB,够用且不浪费 |
| 中小型业务 |
10.0.0.0/16 |
按环境拆 /20,环境内按用途拆 /24 |
dev/test/prod 各一个 VPC 或同一 VPC 不同子网 |
| 大型集团 / 多团队 |
10.0.0.0/8(拆给各部门) |
每个业务线独立 VPC + 云联网互通 |
核心:提前做 IP 地址簿,避免段冲突 |
| 有本地IDC(混合云) |
与机房段错开的私有段 |
子网避开机房已有网段 |
最重要:VPC 网段绝不能和 IDC 网段重叠 |
✅ 网段规划 7 条军规
- 先全局、后局部:画一张全公司 IP 规划总表(IP 地址簿),再动手建
- 网段留大不留小:宁可大段规划、细分子网,不要等不够再迁移
- 环境分离:开发、测试、生产最好用不同 VPC 或至少不同子网,生产必须最严格
- 多 AZ 冗余:核心业务子网至少分布在两个可用区,每个可用区放一半副本
- 公网/私网分离:数据库、缓存一律放私网子网,永远不给公网 IP
- 避免冲突:Docker(172.17)、K8s 集群网段(如 10.96.0.0/12)、本地机房段都要提前避开
- 记录在案:每个子网用途、安全组归属写成文档,团队共享
🚨 最贵的一课:很多公司栽在"VPC 网段和本地机房冲突"。一旦冲突,VPC 和 IDC 之间的专线/VPN 永远连不通,只能推倒重建 VPC、全部实例迁移。规划阶段花 1 小时,胜过上线后加班 1 个月。
VPC 怎么和外界打通?
VPC 默认是"封闭"的。让它与世界连通,有 5 条主要通道,按场景选择。
VPC 五种对外连通方式
五种方案的对比与选择
| 方案 |
连通对象 |
收费 |
适用场景 |
缺点 |
| ① IGW + EIP |
VPC ↔ 公网 |
EIP/流量收费 |
Web 服务对外暴露 |
公网暴露面大,需配合安全组收紧 |
| ② NAT 网关 |
私网实例 → 公网 |
按实例/流量收费 |
无公网IP的实例拉依赖、调API |
公网无法主动访问私网 |
| ③ VPC 对等连接 |
VPC ↔ VPC |
同地域通常免费 |
两个 VPC 简单互通 |
不能传递(A-B通、B-C通,A-C不一定通);VPC多时规则爆炸 |
| ④ VPN / 专线 |
VPC ↔ 本地IDC |
VPN按小时,专线按月 |
混合云、数据本地化要求 |
VPN带宽小且受公网波动影响;专线贵、开通周期长 |
| ⑤ 云联网/Transit Gateway |
多VPC + IDC 星型互联 |
跨地域/跨账号收费 |
多VPC、多地域、多账号的企业级网络 |
需要学习成本,超大规模才划算 |
⚠️ 对等连接最常见的坑:
1. IP 段不能重叠——两个 VPC 都是 10.0.0.0/16 就无法对等
2. 不传递——VPC-A 连 VPC-B,VPC-B 连 VPC-C,不代表 A 能访问 C
3. 跨地域对等收费——同地域内网互通通常免费,跨地域按流量计费
🎯 典型混合云架构(生产级参考)
本地IDC ──专线/VPN── ▶ 云上VPC(私网子网)──NAT── ▶ 公网
数据库可以留在本地或云端,核心系统双活,安全组严格只放行需要互通的网段
- 本地核心数据库 + 云上弹性计算(应对流量高峰)
- 云上 VPC 网段(如 10.0.0.0/16)与本地网段(如 192.168.0.0/16)完全错开
- 专线故障自动切换 VPN 隧道(双链路冗余)
- 通过云联网把多个 VPC 与 IDC 统一纳管,路由集中配置
常见问题 FAQ
面试高频题 + 上云实操最常见的疑问,一次答清。
❓ 1. VPC 收费吗?
VPC 本身免费(创建 VPC、子网、路由表、安全组都不收费)。但为了使用 VPC,往往需要搭配这些
收费组件:
- 弹性公网IP(EIP):按占用费 + 流量/带宽费
- NAT 网关:按实例规格 + 流量
- VPN 网关 / 专线:按小时 / 按月
- 跨地域互通:按流量计费
同地域、同账号的 VPC 内网互通(对等连接)通常免费。
❓ 2. VPC 能跨地域吗?子网能跨可用区吗?
都不能。
- VPC 是地域级资源:华东1的 VPC 不能包含华东2的子网。跨地域要用云联网/对等连接(跨地域收费)
- 子网是可用区级资源:一个子网只能属于一个可用区。想多可用区高可用,就在每个可用区各建一个子网
❓ 3. 一个账号能建几个 VPC?VPC 里能建几个子网?
云厂商默认都有配额限制(如每个地域默认 5~10 个 VPC,每个 VPC 默认 10~20 个子网),但都可以工单申请提升配额。规划时不用太担心上限,真正要担心的是 IP 段规划是否合理。
❓ 4. 不同 VPC 可以用相同的 IP 段吗?
可以。因为 VPC 之间是隔离的,A VPC 里的 10.0.0.10 和 B VPC 里的 10.0.0.10 互不干扰。但一旦你需要让它们互通(对等连接/云联网),IP 段冲突就会导致路由无法配置。所以:规划时就全局统一,避免后患。
❓ 5. 什么是公网子网和私网子网?怎么判断?
判断标准只有一个:子网绑定的路由表里有没有 0.0.0.0/0 → IGW 这条默认路由。
- 有 → 公网子网:实例可以绑 EIP 被公网访问
- 没有(默认路由指向 NAT 或空)→ 私网子网:实例没有公网 IP,只能内网访问
典型架构:SLB/Web 服务器放公网子网,MySQL/Redis 放私网子网。
❓ 6. 安全组和网络ACL 能同时用吗?先过哪个?
能同时用,而且是推荐的纵深防御。数据包到达实例的路径:
进入子网 → ① 网络ACL(子网边界,无状态)→ ② 安全组(实例边界,有状态)→ 实例
ACL 先拦粗粒度,安全组再做精确放行
❓ 7. 经典网络还能用吗?需要迁移吗?
大部分云厂商已停止经典网络的新购,存量实例也在逐步回收。如果业务还在经典网络上:
- 新建 VPC + 迁移实例(云厂商通常提供免费迁移工具)
- 先迁移无状态服务,再迁移有状态服务(数据库)
- 切流量前充分验证安全组规则,避免迁移后网络不通
❓ 8. VPC 内怎么访问域名/外部服务?
VPC 内默认有厂商提供的 DNS 服务(内网解析),解析云产品内网域名、公网域名。私网子网实例访问公网域名需要走 NAT 网关;需要内网域名解析私有服务时,用云厂商的 PrivateZone / 内网DNS。
❓ 9. 为什么我的 RDS 只能用内网地址访问?
因为云数据库默认只放行内网访问(同 VPC 内),这是安全设计。不要给 RDS 开公网访问——等于把数据库裸奔在公网上。如果本地要连数据库调试,用 SSH 隧道 / 堡垒机 / VPN 进入 VPC 再访问。
📝 面试版一句话总结
VPC = 公有云上的私有网络空间:用 CIDR 划定私有网段,用子网做功能分区(绑定可用区),用路由表控制流量走向,用安全组/ACL 做双层安全防线,用 IGW/NAT/VPN/专线/对等连接/云联网与外部世界连通。一句话:让你在共享的云上,拥有一个"私有、隔离、可控"的网络。