第一次用云服务器的人常会困惑:为什么我开的机器默认在一个"私有网络"里?为什么有的机器能访问公网、有的不能?为什么两台机器明明都在同一个账号下,却互相 ping 不通?这些问题的答案都在一个概念里——虚拟私有网络(VPC)。
VPC 是云上网络的"地基"。你在云上部署的任何资源,从云服务器到数据库到负载均衡,都活在某个 VPC 里。搞懂 VPC、子网、路由表、网关这些概念,是做好云上架构的前提。这篇文章从零讲起,把 VPC 的组成、子网的划分、路由表的作用、各种网关的用途讲清楚,最后给出一套 IP 网段规划和配置思路。看完你能自己设计一个清晰、可扩展的云上网络。
一、VPC 是什么
VPC(Virtual Private Cloud,虚拟私有云)是云上为你隔离出来的一块逻辑网络,是你在云上的"专属局域网"。
几个要点:
逻辑隔离。 不同账号、不同 VPC 之间的网络默认完全隔离,互不可见、互不可达。这种隔离是 VPC 的核心价值——你的资源不和别人的混在一起。
你自己规划网段。 创建 VPC 时你要指定一个 IP 地址段(CIDR 块),比如 10.0.0.0/16。这个网段是完全由你规划的,云平台在这个网段里给你分配地址。用私有地址段(RFC 1918 定义的 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)是标准做法。
VPC 有地域属性。 一个 VPC 属于一个地域(Region),不能跨地域。要跨地域互联,需要用专门的跨地域网络产品(如跨地域对等连接、云联网等)。
VPC 内的资源默认互通(受安全组和网络 ACL 约束)。同一个 VPC 内的实例,只要路由允许、访问控制放行,就能互相通信。这也是为什么"同一账号下的机器不一定互通"——它们可能在不同的 VPC 里。
二、子网:把一个 VPC 切成多块
子网(Subnet)是 VPC 内更小的网段划分。一个 VPC 至少有一个子网,你的实例是部署在子网里的,而不是直接部署在 VPC 里。
划分子网的意义在于:按用途隔离资源,按可用区分布资源。
按用途隔离,通常划分成两类:
- 公有子网(Public Subnet):路由表里有指向 Internet 网关的路由,子网内的实例可以(在配置公网 IP 的情况下)直接与公网通信。放的是需要对外提供服务的实例,比如 Web 服务器、负载均衡。
- 私有子网(Private Subnet):路由表里没有直接指向公网的路由,实例不能直接和公网通信。放的是数据库、缓存、内部服务这些不该暴露在公网的资源。私有子网里的实例要访问外网(比如下载更新),一般通过 NAT 网关。
按可用区分布,同一个 VPC 可以在多个可用区各建子网。这是做跨可用区高可用的基础——子网本身是绑定可用区的,跨 AZ 高可用意味着要在多个可用区的子网里都部署实例。
子网的网段不能重叠,且必须落在 VPC 的网段范围内。比如 VPC 是 10.0.0.0/16,子网可以是 10.0.1.0/24、10.0.2.0/24 等。
| 子网类型 | 路由 | 典型放的东西 | 能否直接访问公网 |
|---|---|---|---|
| 公有子网 | 有到 Internet 网关的路由 | Web、负载均衡、跳板机 | 能 |
| 私有子网 | 无直接公网路由 | 数据库、缓存、内部服务 | 不能(需 NAT) |
三、路由表:决定流量往哪走
路由表(Route Table)是 VPC 里最核心也最容易忽略的组件。它决定"这个子网里的流量,去某个目标地址时该走哪个出口"。
路由表由若干条路由规则组成,每条规则包含"目标网段(Destination)"和"下一跳(Target)"。当实例发出一个数据包,系统会查路由表,找匹配目标地址的规则,按指定的下一跳把包转发出去。
几条常见的路由:
10.0.0.0/16 → local:VPC 内部互通,这个通常是自动的,表示 VPC 内的流量本地转发。0.0.0.0/0 → Internet 网关:默认路由指向 Internet 网关,这条存在就说明该子网是"公有子网",能让实例访问公网。0.0.0.0/0 → NAT 网关:默认路由指向 NAT 网关,私有子网里的实例能通过 NAT 访问外网,但外网无法主动访问它们。192.168.0.0/16 → 对等连接/VPN:去往其他网络(另一个 VPC 或本地机房)的流量走对等连接或 VPN。
子网和路由表是关联关系:一个子网关联一张路由表,一张路由表可以关联多个子网。默认情况下每个 VPC 自带一张主路由表,你可以为不同子网创建不同的路由表,实现不同的出网策略。
理解了路由表,很多现象就清楚了:"这个子网的机器上不了外网",很可能是路由表里没有 0.0.0.0/0 指向网关的规则;"两台机器 ping 不通",可能是路由表里缺了互通的路由(比如跨 VPC 未配置对等连接路由)。
四、网关:连接内外的出入口
网关是 VPC 和外部世界交互的组件,常见的几类:
Internet 网关(IGW)。把 VPC 连到公网。公有子网的路由指向它,子网内的实例配上公网 IP 就能和公网双向通信。一个 VPC 通常只挂一个 Internet 网关。
NAT 网关(NAT Gateway)。让私有子网的实例能"单向"访问公网(出方向),但公网不能主动连进来。典型用途是私有子网的服务器下载软件更新、调用外部 API。NAT 网关一般是托管服务,按规格和时长计费,比自建 NAT 实例更省心。要注意 NAT 网关通常部署在公有子网里。
对等连接(VPC Peering)。连接两个 VPC,让它们内网互通。可以是同账号的 VPC,也可以是跨账号的 VPC。注意对等连接默认不传递路由(A 连 B、B 连 C,A 和 C 不自动互通),且两个 VPC 的网段不能重叠。
VPN 网关。通过加密隧道把 VPC 和本地机房或其他网络连接起来,适合需要把本地数据中心和云上打通、又没有专线的场景。成本低但走公网,稳定性和延迟不如专线。
专线(Direct Connect)。物理专线连接本地机房和云,稳定、低延迟、带宽大,但成本高、开通周期长。适合对网络质量要求高的企业。
网关类型选择可以参考这张表:
| 网关 | 作用 | 特点 | 典型场景 |
|---|---|---|---|
| Internet 网关 | VPC 与公网互通 | 双向,实例需公网 IP | 对外服务 |
| NAT 网关 | 私有子网出公网 | 单向出,公网进不来 | 私有实例拉取更新 |
| 对等连接 | VPC 之间互通 | 内网直连,网段不能重叠 | 多 VPC 管理、跨账号 |
| VPN 网关 | 与外部网络加密互通 | 走公网,成本低 | 混合云、远程接入 |
| 专线 | 与外部网络物理互联 | 稳定、低延迟、贵 | 企业级混合云 |
五、安全组与网络 ACL 的角色
VPC 里还要配访问控制,这里简要提一下它们和 VPC 的关系。
安全组作用在实例级、有状态,控制单台机器的进出流量;网络 ACL 作用在子网级、无状态,控制整个子网的进出流量。它们是 VPC 网络的"门禁",路由决定"能不能到",访问控制决定"放不放行"。
一个完整的数据流要经过:路由表(找到路径)→ 网络 ACL(子网门禁)→ 安全组(实例门禁)。任意一道不放行,流量就到不了。设计时要三层一起考虑。
六、IP 网段规划
网段规划是"一次性决策,后期很难改"的事情,值得提前想清楚。
原则一:用私有地址段。 用 10.0.0.0/8(16M 地址)、172.16.0.0/12(1M 地址)或 192.168.0.0/16(65K 地址)。10.0.0.0/8 空间最大,适合大规模规划。
原则二:预留足够的扩展空间。 不要一上来就把 VPC 网段划得太小(比如 /24),后面业务扩张加子网就不够用了。常见的做法是 VPC 用 /16,每个子网用 /24(254 个可用地址,够大多数场景)。
原则三:按"地域-用途-可用区"分层规划。 比如:
- 华北 VPC:
10.1.0.0/16 - 公有子网 A 区:
10.1.1.0/24 - 公有子网 B 区:
10.1.2.0/24 - 私有子网 A 区:
10.1.11.0/24 - 私有子网 B 区:
10.1.12.0/24 - 华东 VPC:
10.2.0.0/16
原则四:避免网段重叠。 如果要通过专线或对等连接把多个 VPC 和本地机房打通,所有网段必须互不重叠,否则路由会冲突。规划时要把本地机房的网段也一起考虑进去。
原则五:给特殊用途留段。 比如容器网络、数据库、内部服务等,各自留独立子网,便于做访问控制和故障隔离。云平台通常会保留子网里的前几个和一个末尾地址作内部用途,实际可用地址比网段总数少几个。
| 规划项 | 建议 | 说明 |
|---|---|---|
| VPC 网段 | /16 |
留足扩展空间 |
| 子网网段 | /24 |
约 251 个可用地址 |
| 地址类型 | 私有段 | 10.x / 172.16-31.x / 192.168.x |
| 分层方式 | 地域-用途-AZ | 便于管理与扩展 |
| 重叠检查 | 互联前必查 | 专线/对等连接要求不重叠 |
七、配置思路小结
一个典型的 VPC 配置流程可以这样走:
- 规划网段(VPC 和各子网),确认不与本地机房和其他 VPC 冲突。
- 创建 VPC,指定 CIDR。
- 在多个可用区创建公有子网和私有子网。
- 创建 Internet 网关,关联到 VPC。
- 创建 NAT 网关(放公有子网),供私有子网出网。
- 配置路由表:公有子网
0.0.0.0/0 → IGW;私有子网0.0.0.0/0 → NAT。 - 配置安全组和网络 ACL,按最小权限放行。
- 部署实例:公网服务放公有子网,数据库等放私有子网。
- 验证:测试公网访问、内网互通、私有子网出网、跨 AZ 通信是否正常。
# 实例内验证网络的常用命令(Linux)
ip addr show # 查看本机 IP 与网卡
ip route show # 查看路由表(本机视角)
ping 10.1.11.10 # 测试内网连通性
curl -I https://example.com # 测试出网(私有子网需 NAT)
ss -tlnp # 查看监听端口
tracepath 8.8.8.8 # 跟踪到公网的路径(部分系统需安装)
# 若实例无法出网,按顺序排查(以 RHEL/CentOS/Rocky 与 Debian/Ubuntu 通用思路)
# 1) 本机是否有默认路由
ip route show default
# 2) 本机防火墙是否拦截
# RHEL/CentOS/Rocky:
sudo firewall-cmd --state
# Debian/Ubuntu:
sudo ufw status
# 3) 云平台侧:子网路由表、NAT 网关、安全组、网络 ACL
常见问题
Q:同一 VPC 内的两台机器为什么不互通?
先看安全组和网络 ACL 是否放行,再看子网路由表是否互通。子网划分本身不影响同 VPC 内互通,问题多半在访问控制或路由配置。
Q:公有子网里的实例一定可以访问公网吗?
不一定。公有子网只是路由允许出网,实例还需要有公网 IP(或走 NAT)。没配公网 IP 的实例即使路由指向 Internet 网关,也访问不了公网。
Q:私有子网的实例怎么安装软件、更新系统?
通过 NAT 网关出网。给私有子网的路由表加一条 0.0.0.0/0 → NAT 网关,实例就能单向访问公网,公网无法主动连入。
Q:VPC 网段能改吗?
大改很难。可以新增附加 CIDR 块来扩展,但已分配的子网和 IP 不能轻易重划。所以规划阶段一定要认真,给足扩展空间。
Q:两个 VPC 网段重叠了还能互通吗?
不能直接用对等连接打通。网段重叠会导致路由冲突,必须重新规划网段,或用 NAT 做地址转换来规避。
总结
VPC 是云上网络的地基,理解它就理解了云上资源是怎么"连在一起"的。
- VPC 是逻辑隔离的专属网络,自己规划网段,有地域属性,内部默认互通(受访问控制约束)。
- 子网是 VPC 的细分,按用途分公有/私有,按可用区分布,是跨 AZ 高可用的基础。
- 路由表决定流量往哪走:
0.0.0.0/0指向 IGW 是公有子网,指向 NAT 是私有子网出网。 - 网关负责内外连接:IGW 通公网、NAT 让私有子网单向出网、对等连接打通 VPC、VPN/专线连本地机房。
- 网段规划要用私有段、留足空间、分层设计、互联前检查不重叠,这是"一次规划、长期受益"的事。
设计网络时记住一句话:路由决定"路通不通",安全组和网络 ACL 决定"门开不开",两者都要配好,服务才真正可达。
企业QQ咨询




