Amazon Virtual Private Cloud
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

VPC 和子网

要开始使用 Amazon Virtual Private Cloud (Amazon VPC),您需要创建一个 VPC 和多个子网。有关 Amazon VPC 的一般概述,请参阅Amazon VPC 是什么?

VPC 和子网基础知识

Virtual Private Cloud (VPC) 是仅适用于您的 AWS 账户的虚拟网络。 它在逻辑上与 AWS 云中的其他虚拟网络隔绝。可在 VPC 中启动 AWS 资源,如 Amazon EC2 实例。

在创建 VPC 时,您必须以无类域间路由 (CIDR) 块的形式为 VPC 指定 IPv4 地址范围;例如,10.0.0.0/16。这是您的 VPC 的主要 CIDR 块。有关 CIDR 表示法的详细信息,请参阅 RFC 4632

下图显示了具有 IPv4 CIDR 块的新 VPC 及主路由表。

 具有主路由表的 VPC

VPC 跨越区域中的所有可用区。在创建 VPC 之后,您可以在每个可用区域中添加一个或多个子网。 在创建子网时,指定子网的 CIDR 块,它是 VPC CIDR 块的子集。每个子网都必须完全位于一个可用区域之内,不能跨越多个可用区域。可用区域是被设计为可以隔离其他可用区域的故障的不同位置。通过启动独立可用区内的实例,您可以保护您的应用程序不受单一位置故障的影响。我们为每个子网指定一个唯一 ID。

您还可以选择为 VPC 及子网分配 IPv6 CIDR 块。

下图展示了一个在多个可用区域内配置子网的 VPC。1A、1B、2A 和 3A 是 VPC 中的实例。此 VPC 以及子网 1 各自关联了一个 IPv6 CIDR 块。Internet 网关允许在 Internet 上通信,虚拟专用网络 (VPN) 连接可实现与您公司网络的通信。

有多个可用区域的 VPC

如果一个子网的流量被路由到 Internet 网关,这个子网便是公有子网。在此图中,子网 1 是公有子网。如果您希望公有子网中的实例通过 IPv4 与 Internet 通信,则它必须具有公有 IPv4 地址或弹性 IP 地址 (IPv4)。有关公有 IPv4 地址的更多信息,请参阅公有 IPv4 地址。如果您希望公有子网中的实例通过 IPv6 与 Internet 进行通信,则它必须具有 IPv6 地址。

如果一个子网没有通向 Internet 网关的路由,这个子网便是私有子网。在此图中,子网 2 是私有子网。

如果一个子网没有通向 Internet 网关的路由,但其流量会被路由到虚拟专用网关以进行 VPN 连接,这个子网便是仅限 VPN 子网。在此图中,子网 3 是仅限 VPN 的子网。我们目前不支持通过 VPN 连接的 IPv6 流量。

有关更多信息,请参阅场景和示例Internet 网关在您的 VPC 中添加硬件虚拟专用网关

注意

无论子网是哪种类型,子网的内部 IPv4 地址范围始终是私有的,我们不会将该地址块发布到 Internet。

您可以在自己的账户中创建的 VPC 和子网存在数量限制。有关更多信息,请参阅 Amazon VPC 限制

VPC 和子网大小调整

Amazon VPC 支持 IPv4 和 IPv6 寻址,并为它们设置了不同的 CIDR 块大小限制。默认情况下,所有 VPC 和子网都必须具有 IPv4 CIDR 块 - 您不能更改此行为。您可以选择将 IPv6 CIDR 块与您的 VPC 关联。

有关 IP 地址的更多信息,请参阅 您的 VPC 中的 IP 地址

针对 IPv4 的 VPC 和子网大小调整

当您创建 VPC 时,必须为这个 VPC 指定 IPv4 CIDR 块。允许的块大小介于 /16 网络掩码 (65,536 个 IP 地址) 和 /28 网络掩码 (16 个 IP 地址) 之间。在创建 VPC 后,您可以将辅助 CIDR 块与 VPC 关联。有关更多信息,请参阅 向 VPC 中添加 IPv4 CIDR 块

在创建 VPC 时,建议您指定来自私有 IPv4 地址范围 (如 /16RFC 1918 所指定) 的 CIDR 块 (小于或等于 ):

  • 10.0.0.0 - 10.255.255.255 (10/8 前缀)

  • 172.16.0.0 - 172.31.255.255 (172.16/12 前缀)

  • 192.168.0.0 - 192.168.255.255 (192.168/16 前缀)

您可以创建一个具有公共可路由的 CIDR 块 (不在 RFC 1918 中指定的私有 IPv4 地址范围内) 的 VPC;但是,在本文档中,我们的私有 IP 地址 指的是位于 VPC 的 CIDR 范围内的 IPv4 地址。

注意

如果您要创建用于其他 AWS 服务的 VPC,请参阅服务文档以验证对 IP 地址范围和联网组件是否有特定要求。

子网的 CIDR 块可以与 VPC 的 CIDR 块 (适用于 VPC 中的单一子网) 或子网的 CIDR 块 (对于多子网) 相同。允许的块大小在 /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)。

许多工具可帮助您计算子网 CIDR 块;例如,请参阅 http://www.subnet-calculator.com/cidr.php。此外,您的网络工程组可以帮助您判断可为您的子网指定哪些具体 CIDR 块。

每个子网 CIDR 块中的前四个 IP 地址和最后一个 IP 地址无法供您使用,而且无法分配到一个实例。例如,在具有 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;但是,我们也保留了每个子网范围基址 + 2 的 IP 地址。对于包含多个 CIDR 块的 VPC,DNS 服务器的 IP 地址位于主要 CIDR 中。有关更多信息,请参阅 Amazon DNS 服务器

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

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

向 VPC 中添加 IPv4 CIDR 块

您可以将辅助 IPv4 CIDR 块与 VPC 关联。当您将 CIDR 块与 VPC 关联时,路由会自动添加到 VPC 路由表中,以便在 VPC 中启用路由 (目的地是 CIDR 块,目标是 local。)

在以下示例中,左侧的 VPC 有一个 CIDR 块 (10.0.0.0/16) 和两个子网。在您添加第二个 CIDR 块 (10.2.0.0/16) 并从第二个 CIDR 的范围创建新的子网后,右侧的 VPC 表示同一 VPC 的架构。

 具有一个和多个 CIDR 块的 VPC

要将 CIDR 块添加到 VPC,应遵循以下规则:

  • 允许的块大小在 /28 网络掩码与 /16 网络掩码之间。

  • 该 CIDR 块不得与 VPC 所关联的任何现有 CIDR 块重叠。

  • 您可以使用的 IPv4 地址范围是有限制的。有关更多信息,请参阅 IPv4 CIDR 块关联限制

  • 您不能增加或减少现有 CIDR 块的大小。

  • 可以与 VPC 关联的 CIDR 块数和可以添加到路由表的路由数是有限制的。如果这导致您超出限制,您就不能关联 CIDR 块。有关更多信息,请参阅 Amazon VPC 限制

  • CIDR 块不得与任何 VPC 路由表中的路由的 CIDR 范围相同或大于该范围。例如,如果您拥有一个通向虚拟专用网关、目的地为 10.0.0.0/24 的路由,则您不能关联相同范围或更大范围的 CIDR 块。但是,您可以关联 10.0.0.0/25 或更小的 CIDR 块。

  • 如果您为 ClassicLink 启用了 VPC,则可以关联 10.0.0.0/1610.1.0.0/16 范围中的 CIDR 块,但不能关联 10.0.0.0/8 范围中的任何其他 CIDR 块。

  • 在向作为 VPC 对等连接的一部分的 VPC 中添加 IPv4 CIDR 块时,应遵循以下规则:

    • 如果 VPC 对等连接为 active,则可以向 VPC 中添加 CIDR 块,条件是这些块不与对等 VPC 的 CIDR 块重叠。

    • 如果 VPC 对等连接为 pending-acceptance,则请求方 VPC 的所有者不能向 VPC 中添加任何 CIDR 块,无论它是否与接受方 VPC 的 CIDR 块重叠。要么接受方 VPC 的所有者必须接受对等连接,要么请求方 VPC 的所有者必须删除 VPC 对等连接请求,添加 CIDR 块,然后请求新的 VPC 对等连接。

    • 如果 VPC 对等连接为 pending-acceptance,则接受方 VPC 的所有者可以向 VPC 中添加 CIDR 块。如果辅助 CIDR 块与请求方 VPC 的 CIDR 块重叠,则 VPC 对等连接请求将失败,无法被接受。

下表提供了允许和受限的 CIDR 块关联的概述,是允许还是受限取决于 VPC 的主要 CIDR 块所在的 IPv4 地址范围。

IPv4 CIDR 块关联限制

主要 VPC CIDR 块所在的 IP 地址范围 受限的 CIDR 块关联 允许的 CIDR 块关联

10.0.0.0/8

其他 RFC 1918* 范围 (172.16.0.0/12 和 192.168.0.0/16) 中的 CIDR 块

如果您的主要 CIDR 位于 10.0.0.0/15 范围内,则不能添加 10.0.0.0/16 范围中的 CIDR 块。

198.19.0.0/16 范围中的 CIDR 块。

10.0.0.0/8 范围中任何其他不受限的 CIDR。

任何公共可路由的 IPv4 CIDR 块 (非 RFC 1918)。

172.16.0.0/12

其他 RFC 1918* 范围 (10.0.0.0/8 和 192.168.0.0/16) 中的 CIDR 块

172.31.0.0/16 范围中的 CIDR 块。

198.19.0.0/16 范围中的 CIDR 块。

172.16.0.0/12 范围中任何其他不受限的 CIDR。

任何公共可路由的 IPv4 CIDR 块 (非 RFC 1918)。

192.168.0.0/16

其他 RFC 1918* 范围 (172.16.0.0/12 和 10.0.0.0/8) 中的 CIDR 块

198.19.0.0/16 范围中的 CIDR 块。

192.168.0.0/16 范围中的任何其他 CIDR。

任何公共可路由的 IPv4 CIDR 块 (非 RFC 1918)。

198.19.0.0/16

RFC 1918* 范围中的 CIDR 块。

任何公共可路由的 IPv4 CIDR 块 (非 RFC 1918)。

公共可路由的 CIDR 块 (非 RFC 1918)

RFC 1918* 范围中的 CIDR 块。

198.19.0.0/16 范围中的 CIDR 块。

任何其他公共可路由的 IPv4 CIDR 块 (非 RFC 1918)。

*RFC 1918 范围是在 RFC 1918 中指定的私有 IPv4 地址范围。

您可以取消与 VPC 相关联的 CIDR 块的关联,但无法取消最初用于创建 VPC 的 CIDR 块 (主要 CIDR 块) 的关联。要在 Amazon VPC 控制台中查看 VPC 的主要 CIDR,请选择 Your VPCs,然后选择您的 VPC,并记下 CIDR blocks 下面的第一个条目。 或者,您可以使用 describe-vpcs 命令:

Copy
aws ec2 describe-vpcs --vpc-id vpc-1a2b3c4d

在返回的输出中,主要 CIDR 在顶层 CidrBlock 元素中返回 (下面的示例输出中的倒数第二个元素)。

{
    "Vpcs": [
        {
            "VpcId": "vpc-1a2b3c4d", 
            "InstanceTenancy": "default", 
            "Tags": [
                {
                    "Value": "MyVPC", 
                    "Key": "Name"
                }
            ], 
            "CidrBlockAssociations": [
                {
                    "AssociationId": "vpc-cidr-assoc-3781aa5e", 
                    "CidrBlock": "10.0.0.0/16", 
                    "CidrBlockState": {
                        "State": "associated"
                    }
                }, 
                {
                    "AssociationId": "vpc-cidr-assoc-0280ab6b", 
                    "CidrBlock": "10.2.0.0/16", 
                    "CidrBlockState": {
                        "State": "associated"
                    }
                }
            ], 
            "State": "available", 
            "DhcpOptionsId": "dopt-e0fe0e88", 
            "CidrBlock": "10.0.0.0/16", 
            "IsDefault": false
        }
    ]
}

针对 IPv6 的 VPC 和子网大小调整

您可以向自己账户中的现有 VPC 关联一个 IPv6 CIDR 块,或在创建新 VPC 时执行此操作。CIDR 块使用 /56 的固定前缀长度。您无法选择地址范围或 IPv6 CIDR 块大小;我们从 Amazon 的 IPv6 地址池将该块分配给您的 VPC。

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

例如,您可以创建一个 VPC 并指定要向此 VPC 关联 IPv6 CIDR 块。Amazon 向您的 VPC 分配以下 IPv6 CIDR 块:2001:db8:1234:1a00::/56。您可以创建一个子网并从此范围分配 IPv6 CIDR 块;例如,2001:db8:1234:1a00::/64

您可以取消 IPv6 CIDR 块与子网的关联,也可以取消 IPv6 CIDR 块与 VPC 的关联。在取消 IPv6 CIDR 块与 VPC 的关联后重新关联它们时,不一定会收到相同的 CIDR 块。

子网路由

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

在上图中,与子网 1 关联的路由表将所有 IPv4 流量 (0.0.0.0/0) 和 IPv6 流量 (::/0) 路由至 Internet 网关 (例如 igw-1a2b3c4d)。实例 1A 具有 IPv4 弹性 IP 地址,实例 1B 具有 IPv6 地址,因此,可通过 Internet 分别经由 IPv4 和 IPv6 访问它们。

注意

(仅限 IPv4) 与您的实例关联的弹性 IPv4 地址或公有 IPv4 地址是通过 VPC 的 Internet 网关访问到的。经过 VPN 连接 (在您的实例与其他网络之间) 的流量经过虚拟专用网关,而不是 Internet 网关,因此不访问弹性 IPv4 地址或公有 IPv4 地址。

实例 2A 无法连接 Internet,但可以连接 VPC 中的其他实例。您可以通过网络地址转换 (NAT) 网关或实例,允许 VPC 中的一个实例通过 IPv4 发起到 Internet 的出站连接,并阻止来自 Internet 的未经请求的入站连接。由于您可分配的弹性 IP 地址数量有限,因此,如果您有更多的实例需要静态的公有 IP 地址,我们建议您使用 NAT 设备。有关更多信息,请参阅 NAT。要通过 IPv6 发起到 Internet 的仅出站通信,您可以使用仅出口 Internet 网关。有关更多信息,请参阅 仅出口 Internet 网关

与子网 3 关联的路由表将所有 IPv4 流量 (0.0.0.0/0) 路由到虚拟专用网关 (例如 vgw-1a2b3c4d)。实例 3A 可以通过 VPN 连入公司网的计算机。

子网安全性

AWS 提供了可以用于在 VPC 中提高安全性的两个功能:安全组网络 ACL。安全组可以控制您的实例的入站和出站数据流,网络 ACL 可以控制您的子网的入站和出站数据流。多数情况下,安全组即可满足您的需要;但是,如果您需要为您的 VPC 增添额外一层安全保护,您也可以使用网络 ACL。有关更多信息,请参阅 安全性

每个子网有意必须与一个网络 ACL 关联。您创建的每个子网均自动与 VPC 的默认网络 ACL 关联。您可以更改关联,以及更改默认网络 ACL 的内容。有关更多信息,请参阅 网络 ACL

您可以在 VPC 或子网上创建流日志,以便捕获传入和传出您的 VPC 或子网中的网络接口的流量。您还可以在单独的网络接口上创建流日志。流日志会发布到 CloudWatch Logs。有关更多信息,请参阅 VPC 流日志

与本地网络和其他 VPC 的连接

您可以选择设置从您 VPC 到您的公司或家庭网络之间的连接。如果您在 VPC 中有一个 IPv4 地址,并且这个 IP 地址的前缀与您的网络前缀重叠,则任何通往这个网络前缀的流量都将被丢弃。例如,让我们假设您有以下各项:

  • VPC 的 CIDR 块为 10.0.0.0/16

  • VPC 中的一个子网的 CIDR 块为 10.0.1.0/24

  • 在该子网中运行的实例,其 IP 地址为 10.0.1.410.0.1.5

  • 使用 CIDR 块 10.0.37.0/2410.1.38.0/24 的本地主机网络

当 VPC 中的这些实例尝试与 10.0.37.0/24 地址空间中的主机通信时,由于 10.0.37.0/24 是分配给 VPC 的较大前缀 (10.0.0.0/16) 的一部分,因此丢弃这些流量。这些实例可与 10.1.38.0/24 空间中的主机通信,因为该块不是 10.0.0.0/16 的一部分。

您还可以在 VPC 之间创建 VPC 对等连接,或在 VPC 与其他 AWS 账户中的 VPC 之间创建连接。利用 VPC 对等连接,您可以在使用私有 IP 地址的 VPC 之间路由流量;但是,您无法在具有重叠 CIDR 块的 VPC 之间创建 VPC 对等连接。有关更多信息,请参阅 Amazon VPC Peering Guide

因此,我们建议您在创建 VPC 时使用足以满足未来预期增长需求的 CIDR 范围,并确保该范围不会与您公司或家庭网络中任何现有或未来预期的子网重叠,也不会与当前或未来的 VPC 重叠。

我们目前不支持通过 IPv6 的 VPN 连接。