🌐 什么是VPC?虚拟私有云网络完全指南

VPC 是什么?VPC 网络由哪些组件构成?网段怎么规划?怎么和公网、其他VPC、本地机房打通?一篇文章讲透

什么是VPC?一句话 + 一个类比

先建立一个直觉,再深入到技术细节。

一句话定义:VPC(Virtual Private Cloud,虚拟私有云)是公有云厂商在共享的物理基础设施上,通过虚拟化技术为你划出的一块私有的、网络隔离的、完全由你自定义的虚拟网络空间

你可以在里面自由规划 IP 网段、划分子网、配置路由表、部署云资源(云服务器、数据库、负载均衡等),就像拥有一套自己独占的局域网
类比理解 — 公有云是公寓楼,VPC是你的独立套房
🏢 公有云(公寓楼)— 阿里云 / 腾讯云 / AWS ... 🟢 VPC-A(你的套房) 网段 10.0.0.0/16 ECS 云服务器 10.0.1.10 MySQL 数据库 10.0.2.10 🔒 安全组 / 路由表 / 网关 自己的门锁、自己的装修、独立水电 🔵 VPC-B(别人的套房) 隔墙隔户,互不可见 IP 甚至可以是 10.0.0.0/16 互不干扰、互相隔离 🧱 物理隔离墙(网络隔离) 类比对照表 公有云 🏢 公寓楼 VPC 🚪 你的独立套房 子网 🚿 房内的功能区 安全组/ACL 🔒 门锁 + 门禁 互联网网关 🚪 大门/窗户 路由表 🗺️ 房内动线图 对等连接/云联网 🔑 串门通道

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 是地域级资源;子网是可用区级资源;实例属于某个子网

为什么需要VPC?没有它会怎样?

回到云计算早期:没有 VPC 的日子,和有了 VPC 之后,云上网络发生了怎样的变化。

对比 — 传统IDC/经典网络 vs VPC网络
❌ 传统IDC / 经典网络 🏚️ 物理机柜(无法弹性调整) Web服务器 数据库 缓存/其他 扩容要买新机器 → 上架 → 布线 → 配置,动辄数周 😖 痛点清单 1. 网络架构固定,改网段 = 重新布线 2. 所有部门挤在同一张网,隔离靠"自觉" 3. 环境(开发/测试/生产)互相干扰 4. 弹性伸缩想都不敢想,成本高企 ✅ VPC 网络 开发环境 VPC-Dev 10.1.0.0/16 测试环境 VPC-Test 10.2.0.0/16 生产环境 VPC-Prod 10.3.0.0/16 互相隔离 互相隔离 互不干扰 ✨ VPC 带来的能力 1. 秒级创建/删除整个网络,改网段 = 改配置 2. 环境/业务/团队逻辑隔离,互不干扰 3. 与云产品深度集成:秒级扩容、自动伸缩 4. 精确到端口/IP的安全策略,最小权限

没有 VPC 的"经典网络"是什么样?

在 VPC 出现之前,云厂商提供的是经典网络(Classic Network):所有用户的所有云服务器共享同一个大二层网络,靠防火墙规则区分彼此。

对比维度 经典网络(旧) VPC 网络(新)
网络边界 所有用户混在一起,无明确边界 每个 VPC 独立隔离,边界清晰
IP 地址 由厂商统一分配,不可自定义 自己规划 CIDR,IP 可预期
子网划分 不支持 按可用区/业务自由划分
路由控制 不可控 自定义路由表,精确控制流量走向
安全策略 粗粒度 安全组 + 网络ACL 双层精细控制
现状 已淘汰,新购实例均使用 VPC 云上网络的唯一标准
⚠️ 现实提醒:如果你还在用"经典网络",赶紧迁到 VPC。云厂商已逐步停止经典网络的服务支持,新业务一律建在 VPC 里。

VPC 网络的核心组件

一个完整的 VPC 由 6 类核心组件构成,理解它们就理解了 VPC 的全部。

VPC 全景架构图 — 一次看懂所有组件
🌐 互联网 用户访问入口 🟩 VPC — 10.0.0.0/16(华东1 · 杭州) 🚪 互联网网关 IGW VPC ↔ 公网的出入口 搭配 EIP 弹性公网IP 公网子网 10.0.1.0/24(可用区A) ⚖️ SLB 负载均衡 ☁️ ECS-1 10.0.1.10 ☁️ ECS-2 10.0.1.11 私网子网 10.0.2.0/24(可用区A) 🗄️ MySQL 10.0.2.10 ⚡ Redis 10.0.2.11 ↔️ NAT 网关 私网→公网出站 (访问第三方API等) 🔐 VPN / 专线 连接本地 IDC 机房 混合云架构 🔗 对等连接 VPC ↔ VPC 互通 (云联网/Transit GW) 🗺️ 路由表 每个子网绑定一张 决定流量走向 内网直连 出站流量 安全组绑定在实例上(第一道防线) · 网络ACL绑定在子网上(第二道防线) · 路由表决定每个子网的数据流向

① 私有网段(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 网段切成更小的片段,每个子网绑定一个可用区。典型划分:

💡 判断一个子网是"公网"还是"私网"的唯一标准:它绑定的路由表里有没有一条指向互联网网关的默认路由(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 网段:10.0.0.0/16(6.5万 IP) 先选好根网段,再逐级切成子网 切成 /20 × 16 个 10.0.0.0/20 开发环境(4千 IP) 10.0.16.0/20 测试环境(4千 IP) 10.0.32.0/20 生产环境(4千 IP) 生产内再拆 /24 10.0.32.0/24 公网子网-Web(AZ-A) 10.0.33.0/24 私网子网-DB(AZ-A) 10.0.34.0/24 公网子网-Web(AZ-B) 10.0.35.0/24 私网子网-DB(AZ-B) 📐 命名建议: 子网命名体现「环境-用途-可用区」: prod-web-a / prod-db-a / test-api-b ...

推荐规划模板(可直接抄作业)

业务规模 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 条军规

  1. 先全局、后局部:画一张全公司 IP 规划总表(IP 地址簿),再动手建
  2. 网段留大不留小:宁可大段规划、细分子网,不要等不够再迁移
  3. 环境分离:开发、测试、生产最好用不同 VPC 或至少不同子网,生产必须最严格
  4. 多 AZ 冗余:核心业务子网至少分布在两个可用区,每个可用区放一半副本
  5. 公网/私网分离:数据库、缓存一律放私网子网,永远不给公网 IP
  6. 避免冲突:Docker(172.17)、K8s 集群网段(如 10.96.0.0/12)、本地机房段都要提前避开
  7. 记录在案:每个子网用途、安全组归属写成文档,团队共享
🚨 最贵的一课:很多公司栽在"VPC 网段和本地机房冲突"。一旦冲突,VPC 和 IDC 之间的专线/VPN 永远连不通,只能推倒重建 VPC、全部实例迁移。规划阶段花 1 小时,胜过上线后加班 1 个月。

VPC 怎么和外界打通?

VPC 默认是"封闭"的。让它与世界连通,有 5 条主要通道,按场景选择。

VPC 五种对外连通方式
🟩 你的 VPC ECS MySQL 10.0.0.0/16 🌐 互联网用户 经 IGW + EIP ① IGW/EIP 入站 🔗 第三方API 私网实例主动访问 ② NAT 出站 🔗 另一个 VPC 同账号/跨账号 ③ 对等连接 🏢 本地IDC机房 VPN隧道 / 物理专线 ④ VPN / 专线 🕸️ 云联网 CCN / Transit Gateway ⑤ 云联网接入 VPC-B VPC-C VPC-D IDC接入 多 VPC 星型互联 + 中心化路由 📋 选型速记 对外服务 → IGW/EIP 私网出站 → NAT VPC间互连 → 对等/云联网 连本地 → VPN/专线

五种方案的对比与选择

方案 连通对象 收费 适用场景 缺点
① 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── ▶ 公网 数据库可以留在本地或云端,核心系统双活,安全组严格只放行需要互通的网段

常见问题 FAQ

面试高频题 + 上云实操最常见的疑问,一次答清。

❓ 1. VPC 收费吗?

VPC 本身免费(创建 VPC、子网、路由表、安全组都不收费)。但为了使用 VPC,往往需要搭配这些收费组件
  • 弹性公网IP(EIP):按占用费 + 流量/带宽费
  • NAT 网关:按实例规格 + 流量
  • VPN 网关 / 专线:按小时 / 按月
  • 跨地域互通:按流量计费
同地域、同账号的 VPC 内网互通(对等连接)通常免费。

❓ 2. VPC 能跨地域吗?子网能跨可用区吗?

都不能。

❓ 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 这条默认路由

典型架构:SLB/Web 服务器放公网子网,MySQL/Redis 放私网子网。

❓ 6. 安全组和网络ACL 能同时用吗?先过哪个?

能同时用,而且是推荐的纵深防御。数据包到达实例的路径:

进入子网 → ① 网络ACL(子网边界,无状态)→ ② 安全组(实例边界,有状态)→ 实例 ACL 先拦粗粒度,安全组再做精确放行

❓ 7. 经典网络还能用吗?需要迁移吗?

大部分云厂商已停止经典网络的新购,存量实例也在逐步回收。如果业务还在经典网络上:

  1. 新建 VPC + 迁移实例(云厂商通常提供免费迁移工具)
  2. 先迁移无状态服务,再迁移有状态服务(数据库)
  3. 切流量前充分验证安全组规则,避免迁移后网络不通

❓ 8. VPC 内怎么访问域名/外部服务?

VPC 内默认有厂商提供的 DNS 服务(内网解析),解析云产品内网域名、公网域名。私网子网实例访问公网域名需要走 NAT 网关;需要内网域名解析私有服务时,用云厂商的 PrivateZone / 内网DNS

❓ 9. 为什么我的 RDS 只能用内网地址访问?

因为云数据库默认只放行内网访问(同 VPC 内),这是安全设计。不要给 RDS 开公网访问——等于把数据库裸奔在公网上。如果本地要连数据库调试,用 SSH 隧道 / 堡垒机 / VPN 进入 VPC 再访问。

📝 面试版一句话总结

VPC = 公有云上的私有网络空间:用 CIDR 划定私有网段,用子网做功能分区(绑定可用区),用路由表控制流量走向,用安全组/ACL 做双层安全防线,用 IGW/NAT/VPN/专线/对等连接/云联网与外部世界连通。一句话:让你在共享的云上,拥有一个"私有、隔离、可控"的网络。