Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Virtual Private Cloud

基本概念

VPC
VPC(Virtual Private Cloud)是一种在公有云中创建的 逻辑隔离的私有网络环境。你在云上拥有一块“专属网络”,可以自定义 IP 地址段(CIDR),可以划分子网(公有/私有),可配置路由表、网关、安全组、ACL等,与其他用户网络完全隔离。
默认VPC
每个 Region 会自动创建一个默认 VPC,它已经配置好子网、Internet Gateway、路由表和安全组,实例默认可以获取公网 IP,可以直接访问互联网,适合测试或简单业务场景使用。
CIDR
CIDR(Classless Inter-Domain Routing)是一种表示 IP 地址范围的方法,用“IP地址/前缀长度”表示网络大小。例如 192.168.1.0/24 中,“/24”表示前 24 位是网络位,剩余 8 位是主机位,因此该网段共有 256 个 IP 地址。前缀长度越小,可用地址范围越大;前缀长度越大,网段越小。
预留IP
每个子网自动预留 5 个 IP 地址,不能分配给实例。以 10.0.0.0/24 为例,这 5 个地址分别是:第 1 个是网络地址(10.0.0.0),第 2 个是 VPC 路由器地址(10.0.0.1),第 3 个是 AWS 预留的 DNS 服务器地址(10.0.0.2),第 4 个是 AWS 未来保留地址(10.0.0.3),最后 1 个是广播地址(10.0.0.255)。
NAT Gateway
NAT Gateway(网络地址转换网关) 用于让 Private Subnet 中只有私有 IP 的实例访问互联网,但不允许互联网主动访问这些实例,同时它自己需要通过 IGW 才能看到互联网。它部署在 Public Subnet 中,必须绑定弹性公网 IP,并通过路由表让私有子网的 0.0.0.0/0 指向该 NAT Gateway。
ENI
Elastic Network Interface是云服务器上的虚拟网卡,用于在 VPC 中为实例提供网络连接。它属于某个子网并获得该子网内的私有 IP;可以绑定一个或多个私有 IP,也可以绑定弹性公网 IP;默认每个实例有一个主 ENI(不可分离),也可以额外挂载多个 ENI(取决于实例类型);ENI 可以在同一可用区内在实例之间移动,从而实现故障切换;安全组是绑定在 ENI 上而不是直接绑定在实例上的。
Bastion Host
Bastion Host(堡垒机) 是部署在 Public Subnet 中、用于安全访问 Private Subnet 实例的跳板服务器。它通常有公网 IP,允许管理员通过 SSH(或 RDP)连接,然后再从该主机跳转访问私有子网中的实例;私有实例本身不暴露公网,从而降低攻击面。
VPC Peering
VPC Peering 是一种把两个 VPC 直接私网互通的连接方式。建立 Peering 后,两个 VPC 可以通过私有 IP 通信,就像在同一个网络中一样,但它们仍然是独立的 VPC。特点是:需要双方接受连接请求;必须在双方路由表中添加指向对方 CIDR 的路由;不支持传递路由(不支持 transitive,A 连 B,B 连 C,不代表 A 能连 C);可以同 Region 或跨 Region。
VPC Endpoint
VPC Endpoint 是一种让 VPC 内资源通过私网访问 AWS 服务的方式,不需要经过 Internet Gateway、NAT Gateway 或公网。常见类型有两种:Gateway Endpoint(用于 S3、DynamoDB,通过路由表生效,并且免费)和 Interface Endpoint(基于 ENI,在子网内创建私有 IP,通过 PrivateLink 访问大多数 AWS 服务)。推荐仅在涉及跨网络访问时,用 Interface Endpoint。
VPC Flow Logs
用于记录 VPC 网络流量元数据的功能。它可以记录经过 ENI、子网或整个 VPC 的流量信息,包括源 IP、目标 IP、端口、协议、允许/拒绝状态等,但不会记录具体数据内容;日志可发送到 CloudWatch Logs 或 S3,用于排查网络问题和安全审计。
Virtual Private Gateway
挂载在 VPC 上的虚拟网关,用于连接本地数据中心到 AWS。它通常与 Site-to-Site VPN 或 Direct Connect 一起使用,作为 VPC 侧的终端;本地侧通过 Customer Gateway 连接到 VGW,从而实现私网互通。
Route Propagation
路由传播指的是当 VPC 连接了 VGW 或 Direct Connect 后,来自本地网络的路由会自动注入到 VPC 的路由表中,无需手动添加静态路由。前提是你在对应的路由表上启用了 route propagation;启用后,本地通过 BGP(边界网关协议)宣告的网段会自动出现在路由表里。
Transit Gateway
一个中心化网络枢纽,用来连接多个 VPC、本地数据中心(VPN / Direct Connect),实现大规模网络互通。 它的特点是采用“Hub-and-Spoke”结构,所有 VPC 连接到 TGW,而不是两两做 VPC Peering;支持跨 Region(通过 Peering)、支持路由隔离(多路由表)、支持路由传播;并且具备传递性(transitive),A 连 TGW,B 连 TGW,A 可以访问 B。
Egress-only IGW
专门用于 IPv6 的“只出不进”互联网网关。它允许 VPC 中的 IPv6 实例主动访问互联网(出站流量),但阻止互联网主动发起连接进入 VPC;作用类似于 IPv4 中的 NAT Gateway,但因为 IPv6 不做地址转换,所以使用 Egress-only IGW 来实现出站控制。

疑难问题

Public Subnet和Private Subnet的区别是什么?
区别在于是否通过路由表直接连接 Internet Gateway。Public Subnet 的路由表包含指向 Internet Gateway 的默认路由(如 0.0.0.0/0),子网内实例可以拥有公网 IP 并直接访问互联网;Private Subnet 没有到 Internet Gateway 的直接路由,实例通常只有私有 IP,如需访问公网需通过 NAT Gateway 或 NAT Instance 转发。
子网和路由表是一一对应的吗?
一个子网在任意时刻只能关联一个路由表,但一个路由表可以被多个子网关联;如果子网没有显式关联路由表,它会使用 VPC 的主路由表。
路由表、NACL、安全组的区别是什么?
路由表决定流量往哪里走(控制路径转发,关联子网);NACL(Network ACL)是作用在子网级别的无状态访问控制列表,需要分别配置入站和出站规则;安全组是作用在实例级别的有状态防火墙,只需定义入站规则,返回流量自动放行。
特性安全组 (Security Group)网络 ACL (Network ACL)
作用范围实例 (Instance) 级别(如 EC2)子网 (Subnet) 级别
有状态 vs 无状态有状态 (Stateful)无状态 (Stateless)
规则类型只能设置“允许”规则可以设置“允许”和“拒绝”规则
处理顺序所有规则都会被检查按规则编号顺序执行
默认状态默认拒绝所有入站流量默认允许所有进出流量
有状态防火墙和无状态防火墙的区别是什么?
有状态(Stateful) 指系统会记录连接状态。如果入站流量被允许,返回流量会自动被允许,不需要单独配置出站规则,例如安全组就是有状态的。无状态(Stateless) 指系统不记录连接状态,入站和出站规则必须分别显式允许,返回流量不会自动放行,例如NACL。
VPC与Subnet能够覆盖多个Region或AZ吗?
VPC 可以跨多个 Availability Zone,但不能跨 Region;如果需要跨 Region 通信,需要使用 VPC Peering(跨 Region 对等连接)、Transit Gateway 或 VPN 等方式实现。Subnet(子网)属于某一个 VPC,但每个子网只能位于一个 Availability Zone 内;因此通常会在不同 AZ 中分别创建子网,用来部署实例以实现高可用。
让Private Subnet流量指向Nat的路由表是在私有子网还是在公有子网上创建的?
NAT Gateway 本身部署在 Public Subnet,并通过该子网的路由表连接 Internet Gateway;但指向 NAT Gateway 的那条默认路由(0.0.0.0/0)是在 Private Subnet 关联的路由表里配置的,这样私有子网的流量才会先到 NAT Gateway,再转发到公网。
Internet Gateway和NAT Gateway的区别是什么?
区别如下表格所示
对比项IGW (Internet Gateway)NAT Gateway
作用让 VPC 与互联网双向通信让私有子网实例访问互联网(仅出站)
部署位置直接挂载在 VPC 上部署在 Public Subnet 中
公网访问允许公网访问实例(需公网 IP)不允许公网主动访问私有实例
适用子网Public SubnetPrivate Subnet
是否需要公网 IP实例需要公网 IPNAT GW 需要绑定弹性公网 IP,私有实例不需要
流量方向入站 + 出站仅出站
典型用途Web 服务器对外提供服务私有服务器访问外网(如更新、下载依赖)
为什么一个VPC可以有多个CIDR?
创建 VPC 时必须指定一个主 CIDR,之后可以添加辅助 CIDR(Secondary CIDR)。这样做的原因包括:当原有 IP 地址不够用时可以扩容;可以为不同业务或环境划分独立地址段;便于与本地数据中心或其他 VPC 进行地址规划避免冲突。
CIDR和Subnet的区别是什么?
CIDR 定义了你有多少 IP,而 Subnet 是你把这些 IP 实际用在哪个“房间”里。
特性CIDR(无类别域间路由)Subnet(子网)
它是什么一种记法/标准,用来描述一个 IP 地址块的大小一个网络划分,VPC 内的一个实际逻辑分区
它的作用告诉系统:从哪个 IP 开始,到哪个 IP 结束承载资源(如 EC2),为不同性质的服务提供隔离空间
例子10.0.1.0/24(代表 256 个地址)“Web 子网”或“数据库子网”
灵活性只是一个数字范围需要关联 Availability Zone(AZ)和 Route Table
私有子网实例如何控制只能通过跳板机登录?
核心做法是控制安全组规则:把私有实例的安全组入站规则(如 SSH 22 端口)来源设置为“Bastion Host 的安全组”而不是 0.0.0.0/0 或公网 IP,这样只有绑定该安全组的跳板机可以访问。安全组的本质是绑定在 ENI(网卡)上的虚拟有状态防火墙规则集合,它控制的是“允许哪些流量进入或离开这张网卡”。同时确保私有子网没有指向 Internet Gateway 的路由,从网络路径上也无法被公网直接访问。
外部系统访问VPC有VPN和DX两种方式,有什么区别?
Site-to-Site VPN vs. Direct Connect (DX)
特性Site-to-Site VPNDirect Connect(专线)
底层路径公共互联网(加密隧道)独占物理光纤
稳定性容易受公网波动影响极稳,延迟极低
开通速度几分钟到几小时几周到几个月(涉及拉光纤)
成本较低(按小时计费)昂贵(有初装费和端口费)
VPC Flow Logs和Traffic Mirroring有什么区别?
Traffic Mirroring流量镜像允许你复制指定网卡(ENI)上的真实流量,并将其实时发送到另一个地方(比如一台安全扫描设备)进行检查,而不会对原始流量造成任何干扰。
特性VPC Flow LogsTraffic Mirroring
内容元数据(源 IP、目的 IP、端口、协议、包大小)完整的数据包(包含 Payload/负载内容)
类比像通话记录(谁打给谁,打了几分钟)像通话录音(连说话内容都录下来)
性能消耗极低(由控制面处理)会占用网卡的额外带宽
主要用途计费、排查连通性、查看谁在扫描深度包检测、安全分析、抓包
如何理解数据在不同边界传输时的收费差异?
数据从互联网传进 EC2 是免费的,在同一个可用区内,两台机器通过私有 IP 通信是免费的。即使在同一个 Region,只要跨了可用区(AZ),每 GB 通常收 0.01。数据从一个地区传到另一个地区(Inter-region),费用翻倍,每 GB 约 0.02。即使两台机器在同一个 AZ,如果你用 Public IP 或 Elastic IP 通信,AWS 会收 0.02/GB,因为流量绕到了公网。因此策略为:优先使用私有 IP,这不仅能省钱,还能获得更好的网络性能(延迟更低);尽量留在同一个 AZ。
访问 S3 时,用 NAT Gateway 和用 Gateway VPC Endpoint 的成本如何对比?
如果走 NAT Gateway → Internet Gateway → S3,不仅要支付 NAT 的小时费用(约 0.045/小时),还要支付 NAT 的数据处理费(约 0.045/GB),即使同区域访问 S3 数据传输本身免费,也仍然会产生 NAT 处理成本;而如果改用 Gateway VPC Endpoint(S3 专用),流量直接在 AWS 内网转发,不经过 NAT,也没有 Endpoint 使用费,从而省掉 NAT 的小时费和每 GB 处理费,因此在大量访问 S3 的场景下成本明显更低。