Amazon VPC 的工作原理
通过 Amazon Virtual Private Cloud (Amazon VPC),您可以将 AWS 资源启动到您定义的虚拟网络中。这个虚拟网络与您在数据中心中运行的传统网络极其相似,并会为您提供使用的可扩展基础设施的优势 AWS
VPC 和子网
虚拟私有云 (VPC) 是仅适用于您的 AWS 账户的虚拟网络。它在逻辑上与 AWS 云中的其他虚拟网络隔绝。您可以为 VPC 指定 IP 地址范围、添加子网、添加网关以及关联安全组。
子网是您的 VPC 内的 IP 地址范围。您可将 AWS 资源(如 Amazon EC2 实例)启动到您的子网中。您可以将子网连接到互联网、其他 VPC 和自己的数据中心,并使用路由表路由传入和传出子网的流量。
默认和非默认 VPC
如果您的账户是在 2013 年 12 月 4 日之后创建的,则每个区域中都有一个默认 VPC。默认 VPC 已配置且可供您使用。例如,它在区域的每个可用区中具有默认子网、已连接的互联网网关、主路由表中的路由(用于将所有流量发送到互联网网关)以及 DNS 设置(自动将公共 DNS 主机名分配给具有公有 IP 地址的实例,并通过 Amazon 提供的 DNS 服务器启用 DNS 解析)(请参阅 VPC 中的 DNS 属性)。因此,在默认子网中启动的 EC2 实例自动拥有互联网访问权限。如果您在某个区域有一个默认 VPC,并且在该区域中启动 EC2 实例时未指定子网,我们会选择一个默认子网,然后在该子网中启动实例。
您还可以创建自己的 VPC,并根据需要对其进行配置。这称为非默认 VPC。您在非默认 VPC 中创建的子网和您在默认 VPC 中创建的额外子网称为非默认子网。
了解更多信息
IP 寻址
IP 地址使 VPC 中的资源能够相互通信以及与 Internet 上的资源进行通信。
无类域间路由 (CIDR) 表示法是一种表示 IP 地址及其网络掩码的方法。这些地址的格式如下:
-
单个 IPv4 地址为 32 位,分为 4 组,每组包含最多 3 个十进制数字。例如:10.0.1.0。
-
IPv4 CIDR 块分为四组,每组包含最多 3 个十进制数字(0-255,以句点分隔),后跟斜杠和一个介于 0 到 32 的数字。示例:10.0.0.0/16。
-
单个 IPv6 地址为 128 位,分为 8 组,每组包含最多 4 个十六进制数字。例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
-
IPv6 CIDR 块分为四组,每组包含最多 4 个十六进制数字,用冒号分隔,后跟一个双冒号,后跟斜杠和一个介于 1 到 128 的数字。例如:2001:db8:1234:1a00::/56。
创建 VPC 时,需要为其分配一个 IPv4 CIDR 块(一系列私有 IPv4 地址)、一个 IPv6 CIDR 块或同时分配两种 CIDR 块(双堆栈)。
私有 IPv4 地址无法通过 Internet 访问。IPv6 地址具有全球唯一性,可以配置为保持私有或通过互联网进行访问。
您的 VPC 可在双堆栈模式下运行。这意味着您的资源可通过 IPv4、IPv6 或 IPv4 与 IPv6 进行通信。IPv4 和 IPv6 地址是彼此独立的;您必须为 IPv4 和 IPv6 分别添加路由和安全组规则。
比较 IPv4 与 IPv6
下表总结 Amazon EC2 和 Amazon VPC 中 IPv4 与 IPv6 之间的差异。
特征 | IPv4 | IPv6 |
---|---|---|
VPC 大小 | 最多 5 个 CIDR,从 /16 到 /28。此配额可调整。 | 最多 5 个 CIDR,固定为 /56。此配额不可调整。 |
子网大小 | 从 /16 到 /28 | 固定为 /64 |
地址选择 | 您可以选择 VPC 的 IPv4 CIDR 块,也可从 Amazon VPC IP 地址管理器(IPAM)中分配一个 CIDR 块。有关更多信息,请参阅《Amazon VPC IPAM 用户指南》中的什么是 IPAM?。 | 您可以将自己的 IPv6 CIDR 块带入 AWS 以用于您的 VPC,选择 Amazon 提供的 IPv6 CIDR 块,或者从 Amazon VPC IP 地址管理器(IPAM)中分配一个 CIDR 块。有关更多信息,请参阅《Amazon VPC IPAM 用户指南》中的什么是 IPAM?。 |
弹性 IP 地址 | 支持 | 不支持 |
NAT 网关 | 支持 | 不支持 |
VPC 端点 | 支持 | 不支持 |
EC2 实例 | 支持所有实例类型 | 在所有当前一代实例以及 C3、R3 和 I2 实例上均支持。 |
AMI | 支持所有 AMI | 支持配置了 DHCPv6 的 AMI |
DNS 名称 | 实例将接收 Amazon 提供的 IPBN 或基于 RBN 的 DNS 名称。DNS 名称将解析为为实例选择的 DNS 记录。 | 实例将接收 Amazon 提供的 IPBN 或基于 RBN 的 DNS 名称。DNS 名称将解析为为实例选择的 DNS 记录。 |
私有 IPv4 地址
私有 IPv4 地址(在本主题中也称作私有 IP 地址)无法通过 Internet 访问,但可用于 VPC 中实例之间的通信。当您在 VPC 中启动实例时,系统会将子网地址范围中的一个主要私有 IPv4 地址分配给该实例的默认网络接口 (eth0)。另外,还为每个实例指定一个可解析为实例私有 IP 地址的私有(内部)DNS 主机名。主机名可以有两种类型:基于资源或基于 IP。有关更多信息,请参阅 EC2 实例命名。如果您未指定主要私有 IP 地址,我们会在子网范围内为您选择可用的 IP 地址。有关网络接口的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的弹性网络接口。
您可以为 VPC 中运行的实例分配其他私有 IP 地址,即所谓的辅助私有 IP 地址。与主要私有 IP 地址不同的是,您可以将一个网络接口的辅助私有 IP 地址重新分配给另一个网络接口。私有 IP 地址会在实例停止并重新启动时保持与网络接口的关联,并在实例终止时释放。有关主要和辅助 IP 地址的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南的多个 IP 地址。
我们所说的私有 IP 地址是 VPC 的 IPv4 CIDR 范围内的 IP 地址。大部分 VPC IP 地址范围均处于 RFC 1918 中指定的私有(非公有可路由)IP 地址范围内;但是,您可为您的 VPC 使用公有可路由的 CIDR 块。不管您的 VPC 使用何种 IP 地址范围,我们都不支持从您的 VPC 的 CIDR 块(包括公共可路由的 CIDR 块)直接访问 Internet。您必须通过网关设置 Internet 访问,例如,通过 Internet 网关、虚拟专用网关、AWS Site-to-Site VPN 连接或 AWS Direct Connect。
公有 IPv4 地址
所有子网都有一个用于确定在子网中创建的网络接口是否自动接收公有 IPv4 地址(在本主题中也称作公有 IP 地址)的属性。因此,当您在启用了此属性的子网中启动实例时,系统会向为此实例创建的主网络接口 (eth0) 分配一个公有 IP 地址。公有 IP 地址通过网络地址转换 (NAT) 映射到主要私有 IP 地址。
您可以通过执行以下操作,控制实例是否接收公有 IP 地址:
-
修改子网的公有 IP 寻址属性。有关更多信息,请参阅 修改子网的公有 IPv4 寻址属性。
-
在实例启动过程中启用或禁用公有 IP 寻址功能,以覆盖子网的公有 IP 寻址属性。
公有 IP 地址将从 Amazon 的公有 IP 地址池分配,它不与您的账户关联。在公有 IP 地址与您的实例取消关联后,该地址即释放回该池,并且不再可供您使用。您不能手动关联或取消关联公有 IP 地址。而是在某些情况下,我们从您的实例释放该公有 IP 地址,或向其分配新地址。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的公有 IP 地址。
如果您需要向您的账户分配一个永久公有 IP 地址(您可根据需要将其分配给实例或将其从实例中删除),请改为使用弹性 IP 地址。有关更多信息,请参阅 将弹性 IP 地址关联到 VPC 中的资源。
如果您的 VPC 启用了对 DNS 主机名的支持,则系统还会向收到公有 IP 地址或弹性 IP 地址的每个实例分配一个公有 DNS 主机名。我们会将公有 DNS 主机名解析为该实例在实例网络外的公有 IP 地址和在实例网络内的私有 IP 地址。有关更多信息,请参阅 VPC 中的 DNS 属性。
IPv6 地址
您可以选择向 VPC 和子网关联 IPv6 CIDR 块。有关更多信息,请参阅 关联 IPv6 CIDR 块与子网。
如果您的 VPC 和子网关联了 IPv6 CIDR 块,并且满足以下条件之一,则 VPC 中的实例会收到 IPv6 地址:
-
您的子网配置为在启动期间向实例的主网络接口自动分配 IPv6 地址。
-
您在启动期间向实例手动分配 IPv6 地址。
-
您在启动后向实例分配 IPv6 地址。
-
您向同一子网中的某个网络接口分配 IPv6 地址,并在启动后将此网络接口附加到您的实例。
当实例在启动期间收到 IPv6 地址时,此地址将与实例的主网络接口 (eth0) 关联。您可以取消 IPv6 地址与主网络接口的关联。我们不支持为您的实例使用 IPv6 DNS 主机名。
IPv6 地址会在您停止和启动实例时保留下来,并在您终止实例时释放出来。您无法重新分配已分配给某个网络接口的 IPv6 地址;您必须先取消分配此 IPv6 地址。
通过将 IPv6 地址分配给附加到实例的网络接口,您可以为实例分配更多的 IPv6 地址。可以分配给网络接口的 IPv6 地址数量以及可以附加到实例的网络接口数量因实例类型而异。有关更多信息,请参阅 Amazon EC2 用户指南中的每个实例类型的每个网络接口的 IP 地址。
IPv6 地址具有全局唯一性,可以配置为保持私有或通过互联网进行访问。您可以通过控制子网的路由或通过使用安全组和网络 ACL 规则来控制能否通过实例的 IPv6 地址对其进行访问。有关更多信息,请参阅 Amazon VPC 中的互联网络流量隐私。
有关预留 IPv6 地址范围的更多信息,请参阅 IANA IPv6 特殊用途地址注册表
使用自带 IP 地址
您可以将部分或全部自带公有 IPv4 地址或 IPv6 地址范围引入到您的 AWS 账户。您继续拥有该地址范围,但 AWS 默认将其发布到 Internet 上。在将地址范围引入 AWS 中之后,它会在您的账户中显示为地址池。您可以从 IPv4 地址池创建弹性 IP 地址,也可以将 IPv6 地址池中的 IPv6 CIDR 块与 VPC 相关联。
有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的自带 IP 地址 (BYOIP)。
路由表
路由表包含一组称为“路由”的规则,它们用于确定将网络流量从您的 VPC 发送到何处。您可以将子网与特定路由表显式关联。否则,子网将与主路由表隐式关联。
路由表中的每个路由都指定了您希望将流量传输到的 IP 地址范围(目的地)以及发送流量所通过的网关、网络接口或连接(目标)。
了解更多信息
访问 Internet
您可以控制在 VPC 之外的 VPC 访问资源中启动实例的方式。
原定设置 VPC 包含一个互联网网关,而且每个原定设置子网都是公有子网。您在默认子网中启动的每个实例都有一个私有 IPv4 地址和一个公有 IPv4 地址。这些实例可以通过 Internet 网关与 Internet 通信。通过互联网网关,您的实例可通过 Amazon EC2 网络边界连接到 Internet。
默认情况下,您启动到非默认子网中的每个实例都有一个私有 IPv4 地址,但没有公有 IPv4 地址,除非您在启动时特意指定一个,或者修改子网的公有 IP 地址属性。这些实例可以相互通信,但无法访问 Internet。
您可以通过以下方式为在非默认子网中启动的实例启用 Internet 访问:将一个互联网网关附加到该实例的 VPC(如果其 VPC 不是默认 VPC),然后将一个弹性 IP 地址与该实例相关联。
或者,您还可以使用网络地址转换 (NAT) 设备,以允许 VPC 中的实例发起到互联网的出站连接,但阻止来自互联网的未经请求的入站连接。NAT 将多个私有 IPv4 地址映射到一个公有 IPv4 地址。您可以使用弹性 IP 地址配置 NAT 设备,并通过互联网网关将其与互联网相连。您可以通过 NAT 设备将私有子网中的实例连接到互联网,NAT 设备会将来自实例的流量路由到互联网网关,并将所有响应路由到该实例。
如果您将 IPv6 CIDR 块与 VPC 关联并为实例分配 IPv6 地址,则实例可以通过互联网网关通过 IPv6 连接到互联网。或者,实例也可以使用仅出口互联网网关经由 IPv6 发起到互联网的出站连接。IPv6 流量独立于 IPv4 流量;您的路由表必须包含单独的 IPv6 流量路由。
访问企业或家庭网络
您可以选择使用 IPsec AWS Site-to-Site VPN 连接将您的 VPC 与公司的数据中心相连,并将 AWS 云作为数据中心的延伸。
Site-to-Site VPN 连接由 AWS 端的虚拟私有网关或中转网关与位于数据中心的客户网关设备之间的两条 VPN 隧道组成。客户网关设备是站点到站点 VPN 连接在您这一端配置的实体设备或软件设备。
了解更多信息
连接 VPC 和网络
您可以在两个 VPC 之间创建一个 VPC 对等连接,然后通过此连接不公开地在这两个 VPC 之间路由流量。这两个 VPC 中的实例可以彼此通信,就像它们在同一网络中一样。
您还可以创建一个中转网关,并使用它来互连 VPC 和本地网络。中转网关充当区域虚拟路由器,用于其各种连接(可包括 VPC、VPN 连接、AWS Direct Connect 网关和中转网关对等连接)之间的流量流动。
AWS 私有全球网络注意事项
AWS 以其高性能、低延迟的私有全球网络,提供安全的云计算环境以支持您的网络需求。AWS区域连接到多个互联网服务提供商 (ISP) 以及私有全球网络主干,从而为客户发送的跨区域流量提供改进的网络性能。
请注意以下事项:
-
可用区中的流量或所有区域中可用区之间的流量通过 AWS 私有全球网络路由。
-
区域之间的流量始终通过 AWS 私有全球网络路由,但中国区域除外。
网络数据包丢失可能因多种因素导致,包括网络流碰撞、低级(第 2 层)错误和其他网络故障。我们设计并运行我们的网络以最大限度地减少数据包丢失。我们跨连接 AWS 区域的全球骨干网衡量数据包丢失率 (PLR)。我们运营我们的骨干网络,目标是使 p99 达到每小时 PLR 低于 0.0001%。