VPC 的子网 - Amazon Virtual Private Cloud

VPC 的子网

子网是您的 VPC 内的 IP 地址范围。您可以将 AWS 资源启动到子网中。

子网基础知识

子网是您的 VPC 内的 IP 地址范围。您可以将AWS资源(例如 EC2 实例)在特定子网中启动。在创建子网时,指定子网的 IPv4 CIDR 块,它是 VPC CIDR 块的子集。每个子网都必须完全位于一个可用区之内,不能跨越多个可用区。通过在独立的可用区内启动实例,您可以保护您的应用程序不受单一可用区故障的影响。

您可以选择在本地区域中(这是 AWS 基础设施部署,将计算、存储、数据库和其他精选服务放在距离终端用户更近的地方)添加子网。本地区域使您的最终用户能够运行需要毫秒级延迟的应用程序。有关更多信息,请参阅 适用于 Linux 实例 Amazon EC2 用户指南中的 Local Zones

子网类型

根据您配置子网路由的方式,它们分为公有子网、私有子网或仅限 VPN 的子网:

  • 公有子网:该子网具有一条通向互联网网关的直接路由。公有子网中的资源可以访问公有互联网。

  • 私有子网:该子网不具有通向互联网网关的直接路由。私有子网中的资源需要使用 NAT 设备才能访问公有互联网。

  • 仅限 VPN 的子网:该子网具有通过虚拟私有网关通向 Site-to-Site VPN 连接 的路由。该子网不具有通向互联网网关的路由。

在创建子网时,您可以根据 VPC 的配置指定其 IP 地址:

  • 仅限 IPv4:子网具有 IPv4 CIDR 块,但没有 IPv6 CIDR 块。仅限 IPv4 的子网中的资源必须通过 IPv4 进行通信。

  • 双堆栈:子网同时具有 IPv4 CIDR 块和 IPv6 CIDR 块。VPC 必须同时具有 IPv4 CIDR 块和 IPv6 CIDR 块。双堆栈子网中的资源可以通过 IPv4 和 IPv6 进行通信。

  • 仅限 IPv6:子网具有 IPv6 CIDR 块,但没有 IPv4 CIDR 块。VPC 必须具有一个 IPv6 CIDR 块。仅限 IPv6 的子网中的资源必须通过 IPv6 进行通信。

无论子网是哪种类型,子网的内部 IPv4 地址范围始终是私有的 — 我们不会将该地址块发布到 Internet。有关 VPC 中的私有 IP 寻址的更多信息,请参阅IP 寻址

子网设置

所有子网都有一个用于确定是否向在该子网中创建的网络接口分配公有 IPv4 地址和 IPv6 地址 (如果适用) 的可修改属性。这包括当您在该子网中启动实例时为实例创建的主网络接口 (eth0)。不管子网属性如何,您仍然可以在启动时覆盖特定实例的此设置。

创建子网后,您可以修改子网的以下设置。

  • 自动分配 IP 设置:允许您配置自动分配 IP 设置,以便为此子网中的新网络接口自动请求公有 IPv4 或 IPv6 地址。

  • 基于资源的名称 (RBN) 设置:允许您为此子网中的 EC2 实例指定主机名类型,并配置 DNS A 和 AAAA 记录查询的处理方式。有关这些设置的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例)中的 Amazon EC2 实例主机名称类型

子网图

下图显示了位于一个区域中的两个 VPC。每个 VPC 都具有公有和私有子网以及一个互联网网关。VPC 还跨越了一个本地区域


                    具有可用区内的子网和一个本地区域的 VPC。

子网大小调整

子网的 CIDR 块可以与 VPC 的 CIDR 块相同(如果 VPC 中只有单个子网),也可以是 VPC 的 CIDR 块的一个子集(用于在 VPC 中创建多个子网)。允许的块大小在 /28 网络掩码与 /16 网络掩码之间。如果您在 VPC 中创建多个子网,子网的 CIDR 块不能重叠。

例如,如果创建其 CIDR 块为 10.0.0.0/24 的 VPC,则它支持 256 个 IP 地址。您可以将这个 CIDR 块分散到两个子网,每个子网支持 128 个 IP 地址。一个子网使用 CIDR 块 10.0.0.0/25 (对于地址 10.0.0.0 - 10.0.0.127),另一个子网使用 CIDR 块 10.0.0.128/25 (对于地址 10.0.0.128 - 10.0.0.255)。

Internet 上提供的工具可帮助您计算和创建 IPv4 子网 CIDR 块。您可以通过搜索“子网计算器”或“CIDR 计算器”等术语来找到满足您需求的工具。您的网络工程组也可以帮助您判断可为您的子网指定哪些具体 CIDR 块。

每个子网 CIDR 块中的前四个 IP 地址和最后一个 IP 地址无法供您使用,而且无法分配给任何资源(例如 EC2 实例)。例如,在具有 CIDR 块 10.0.0.0/24 的子网中,以下五个 IP 地址是保留的:

  • 10.0.0.0:网络地址。

  • 10.0.0.1:由 AWS 保留,用于 VPC 路由器。

  • 10.0.0.2:由 AWS 保留。DNS 服务器的 IP 地址是 VPC 网络范围的基址 + 2。对于包含多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主要 CIDR 中。我们还为 VPC 中的所有 CIDR 块预留了每个子网范围加二的基址。有关更多信息,请参阅Amazon DNS 服务器

  • 10.0.0.3:由 AWS 保留,以供将来使用。

  • 10.0.0.255:网络广播地址。我们在 VPC 中不支持广播,因此我们会保留此地址。

如果您使用命令行工具或 Amazon EC2 API 创建子网,则系统会自动将 CIDR 块修改为其规范形式。例如,假设您为 CIDR 块指定 100.68.0.18/18,我们将创建一个 CIDR 块 100.68.0.0/18。

IPv6 的子网定型

如果您已向 VPC 关联 IPv6 CIDR 块,则可以将 IPv6 CIDR 块与 VPC 中的现有子网关联,或在创建新子网时执行此操作。子网的 IPv6 CIDR 块采用 /64 的固定前缀长度。

Internet 上提供的工具可帮助您计算和创建 IPv6 子网 CIDR 块,例如 IPv6 地址规划器。您可以通过搜索“IPv6 子网计算器”或“IPv6 CIDR 计算器”等术语来找到满足您需求的其他工具。您的网络工程组也可以帮助您判断可为您的子网指定哪些具体 IPv6 CIDR 块。

每个子网 CIDR 块中的前四个 IPv6 地址和最后一个 IPv6 地址无法供您使用,而且无法分配给 EC2 实例。例如,在具有 CIDR 块 2001:db8:1234:1a00/64 的子网中,以下五个 IP 地址是保留的:

  • 2001:db8:1234:1a00::

  • 2001:db8:1234:1a00::1:由 AWS 保留,用于 VPC 路由器。

  • 2001:db8:1234:1a00::2

  • 2001:db8:1234:1a00::3

  • 2001:db8:1234:1a00:ffff:ffff:ffff:ffff

除了上述示例中 AWS 为 VPC 路由器预留的 IP 地址外,还为默认 VPC 路由器预留了以下 IPv6 地址:

  • 使用 EUI-64 生成的位于 FE80::/10 范围内的链路本地 IPv6 地址。有关链路本地地址的更多信息,请参阅链路本地地址

  • 链路本地 IPv6 地址 FE80:ec2::1

如果您需要通过 IPv6 与 VPC 路由器通信,您可以将应用程序配置为与最适合您需求的地址通信。

子网路由

每个子网都必须关联一个路由表,这个路由表可指定允许出站流量离开子网的可用路由。您创建的每个子网都会自动关联 VPC 的主路由表。您可以更改关联,以及更改主路由表的内容。有关更多信息,请参阅配置路由表

子网安全性

为了保护您的 AWS 资源,我们建议您使用私有子网。使用堡垒主机或 NAT 设备为私有子网中的资源提供互联网访问,例如 EC2 实例。

AWS 提供了多种可以用于提高 VPC 中资源安全性的功能。安全组用于允许关联资源(例如 EC2 实例)的入站和出站流量。网络 ACL 用于允许或拒绝子网级别的入站和出站流量。在大多数情况下,使用安全组即可满足您的需求。不过,如需为 VPC 增加额外的安全保护,您可以使用网络 ACL。有关更多信息,请参阅比较安全组和网络 ACL

每个子网有意必须与一个网络 ACL 关联。您创建的每个子网均自动与 VPC 的原定设置网络 ACL 关联。默认网络 ACL 允许所有入站和出站流量。您可以更新默认网络 ACL,也可以创建自定义网络 ACL 并将其与您的子网关联。有关更多信息,请参阅使用网络 ACL 控制指向子网的流量

您可以在 VPC 或子网上创建流日志,以便捕获传入和传出您的 VPC 或子网中的网络接口的流量。您还可以在单独的网络接口上创建流日志。有关更多信息,请参阅使用 VPC 流日志记录 IP 流量