云计算中的虚拟网络是什么?VPC、子网与路由表配置详解

第一次用云服务器的人常会困惑:为什么我开的机器默认在一个"私有网络"里?为什么有的机器能访问公网、有的不能?为什么两台机器明明都在同一个账号下,却互相 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 配置流程可以这样走:

  1. 规划网段(VPC 和各子网),确认不与本地机房和其他 VPC 冲突。
  2. 创建 VPC,指定 CIDR。
  3. 在多个可用区创建公有子网和私有子网。
  4. 创建 Internet 网关,关联到 VPC。
  5. 创建 NAT 网关(放公有子网),供私有子网出网。
  6. 配置路由表:公有子网 0.0.0.0/0 → IGW;私有子网 0.0.0.0/0 → NAT。
  7. 配置安全组和网络 ACL,按最小权限放行。
  8. 部署实例:公网服务放公有子网,数据库等放私有子网。
  9. 验证:测试公网访问、内网互通、私有子网出网、跨 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 决定"门开不开",两者都要配好,服务才真正可达。