

# VPC CIDR 块
<a name="vpc-cidr-blocks"></a>

您的虚拟私有云（VPC）的 IP 地址以无类别域间路由（CIDR）表示法表示。VPC 必须具有一个关联的 IPv4 CIDR 块。您可以选择性地关联其他 IPv4 CIDR 块和一个或多个 IPv6 CIDR 块。有关更多信息，请参阅 [为 VPC 和子网分配 IP 地址](vpc-ip-addressing.md)。

**Topics**
+ [IPv4 VPC CIDR 块](#vpc-sizing-ipv4)
+ [管理 VPC 的 IPv4 CIDR 块](#vpc-resize)
+ [IPv4 CIDR 块关联限制](#add-cidr-block-restrictions)
+ [IPv6 VPC CIDR 块](#vpc-sizing-ipv6)

## IPv4 VPC CIDR 块
<a name="vpc-sizing-ipv4"></a>

当您创建 VPC 时，必须为这个 VPC 指定 IPv4 CIDR 块。允许的块大小介于 `/16` 网络掩码 (65,536 个 IP 地址) 和 `/28` 网络掩码 (16 个 IP 地址) 之间。在创建 VPC 后，您可以将额外的 IPv4 CIDR 块与 VPC 关联。有关更多信息，请参阅 [将 CIDR 块添加到 VPC 或从中删除](add-ipv4-cidr.md)。

在创建 VPC 时，建议您指定来自私有 IPv4 地址范围的 CIDR 块（如 [RFC 1918](http://www.faqs.org/rfcs/rfc1918.html) 中所指定）。


| RFC 1918 范围 | 示例 CIDR 块 | 
| --- | --- | 
| 10.0.0.0 - 10.255.255.255（10/8 前缀） | 10.0.0.0/16 | 
| 172.16.0.0 - 172.31.255.255（172.16/12 前缀） | 172.31.0.0/16 | 
| 192.168.0.0 - 192.168.255.255（192.168/16 前缀） | 192.168.0.0/20 | 

**注意事项**
+ 您无法为您的 VPC 指定以下 CIDR 块：
  + 0.0.0.0/8
  + 127.0.0.0/8（内部主机环回地址范围）
  + [169.254.0.0/16（链路本地地址范围）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#link-local-addresses)
  + 224.0.0.0/4（组播地址范围）
+ 创建 VPC 以用于 AWS 服务时，请参阅服务文档以验证其配置是否有特定要求。
+ 某些 AWS 服务使用 `172.17.0.0/16` CIDR 范围。如果 IP 地址范围已在网络中使用，则服务可能会遇到 IP 地址冲突。例如，AWS Cloud9 和 Amazon SageMaker AI 使用 `172.17.0.0/16`。为避免发生冲突，请不要在创建 VPC 时使用此范围。有关更多信息，请参阅《AWS Cloud9 用户指南**》中的[无法连接到 EC2 环境，因为 VPC 的 IP 地址被 Docker 使用](https://docs.aws.amazon.com/cloud9/latest/user-guide/troubleshooting.html#docker-bridge)。
+ 您可以创建一个具有公共可路由的 CIDR 块 (不在 RFC 1918 中指定的私有 IPv4 地址范围内) 的 VPC。但是，出于本文档的写作目的，我们的*私有 IP 地址*指的是位于 VPC 的 CIDR 范围内的 IPv4 地址。
+ 如果您使用命令行工具或 Amazon EC2 API 创建 VPC，则系统会自动将 CIDR 块修改为其规范形式。例如，假设您为 CIDR 块指定 100.68.0.18/18，我们将创建一个 CIDR 块 100.68.0.0/18。

## 管理 VPC 的 IPv4 CIDR 块
<a name="vpc-resize"></a>

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

在下面的示例中，VPC 同时具有一个主 CIDR 块和一个辅助 CIDR 块。子网 A 和子网 B 的 CIDR 块来自主 VPC CIDR 块。子网 C 的 CIDR 块来自辅助 VPC CIDR 块。

![具有一个和多个 CIDR 块的 VPC](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/vpc-multiple-cidrs.png)


下面的路由表显示了 VPC 的本地路由。


| 目标位置 | 目标 | 
| --- | --- | 
| 10.0.0.0/16 | 本地 | 
| 10.2.0.0/16 | 本地 | 

要将 CIDR 块添加到 VPC，应遵循以下规则：
+ 允许的块大小在 `/28` 网络掩码与 `/16` 网络掩码之间。
+ 该 CIDR 块不得与 VPC 所关联的任何现有 CIDR 块重叠。
+ 您可以使用的 IPv4 地址范围是有限制的。有关更多信息，请参阅 [IPv4 CIDR 块关联限制](#add-cidr-block-restrictions)。
+ 您不能增加或减少现有 CIDR 块的大小。
+ 可以与 VPC 关联的 CIDR 块数和可以添加到路由表的路由数是有配额的。如果这导致您超出配额，您就不能关联 CIDR 块。有关更多信息，请参阅 [Amazon VPC 配额](amazon-vpc-limits.md)。
+ CIDR 块不得与任何 VPC 路由表中的路由中的 CIDR 范围相同或大于该范围。例如，在主要 CIDR 块为 `10.2.0.0/16` 的 VPC 中，您的路由表中有一个指向虚拟私有网关的现有路由，目的地为 `10.0.0.0/24`。您要关联 `10.0.0.0/16` 范围内的辅助 CIDR 块。由于该现有路由，您无法关联 `10.0.0.0/24` 或更大的 CIDR 块。但是，您可以关联 `10.0.0.0/25` 或更小的辅助 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 对等连接请求将失败，无法被接受。
+ 如果您使用 Direct Connect 来通过 Direct Connect 网关连接到多个 VPC，则与 Direct Connect 网关关联的 VPC 不得具有重叠的 CIDR 块。如果您将 CIDR 块连接到其中一个与 Direct Connect 网关关联的 VPC，请确保新的 CIDR 块不会与任何其他关联 VPC 的现有 CIDR 块重叠。有关更多信息，请参阅《*Direct Connect 用户指南*》中的 [Direct Connect 网关](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways.html)。
+ 在添加或删除 CIDR 块时，它会经历不同的状态：`associating` \|`associated` \|`disassociating` \|`disassociated` \|`failing` \|`failed` 。当 CIDR 块处于 `associated` 状态时，表示它已准备就绪，可供您使用。

您可以取消与 VPC 相关联的 CIDR 块的关联，但无法取消最初用于创建 VPC 的 CIDR 块 (主要 CIDR 块) 的关联。要在 Amazon VPC 控制台中查看 VPC 的主要 CIDR，请选择 **Your VPCs**（您的 VPC），选中您的 VPC 的复选框，然后再选择 **CIDR** 选项卡。要使用 AWS CLI 查看主要 CIDR，请使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令，如下所示。主要 CIDR 返回到高级别 `CidrBlock element`。

```
aws ec2 describe-vpcs --vpc-id {{vpc-1a2b3c4d}} --query Vpcs[*].CidrBlock --output text
```

下面是示例输出。

```
10.0.0.0/16
```

## IPv4 CIDR 块关联限制
<a name="add-cidr-block-restrictions"></a>

下表概述了现有 VPC CIDR 块的允许和限制 VPC CIDR 块关联。限制的原因是某些 AWS 服务使用了跨 VPC 和跨账户功能，这些功能需要在 AWS 服务端使用无冲突的 CIDR 块。


| 现有的 IPv4 地址范围 | 受限制的关联 | 允许的关联 | 
| --- | --- | --- | 
| 10.0.0.0/8 | 其他 RFC 1918\* 范围 (172.16.0.0/12 和 192.168.0.0/16) 中的 CIDR 块。<br />如果与 VPC 关联的任何 CIDR 块属于 10.0.0.0/15 范围（10.0.0.0 至 10.1.255.255），则不能添加属于 10.0.0.0/16 范围（10.0.0.0 至 10.0.255.255）的 CIDR 块。<br />198.19.0.0/16 范围中的 CIDR 块。 | 10.0.0.0/8 范围中介于 /16 网络掩码和 /28 网络掩码之间不受限制的任何其他 CIDR 块。<br />100.64.0.0/10 范围中介于 /16 网络掩码和 /28 网络掩码之间任何可公开路由的 IPv4 CIDR 块（非 RFC 1918）或 /16 网络掩码和 /28 网络掩码之间的 CIDR 块。 | 
| 169.254.0.0/16 | 如 [RFC 5735](https://www.rfc-editor.org/rfc/rfc5735) 中所述，来自“链路本地”块的 CIDR 块属于保留块，不能分配给 VPC。 |  | 
| 172.16.0.0/12 | 其他 RFC 1918\* 范围 (10.0.0.0/8 和 192.168.0.0/16) 中的 CIDR 块。<br />172.31.0.0/16 范围中的 CIDR 块。<br />198.19.0.0/16 范围中的 CIDR 块。 | 172.16.0.0/12 范围中介于 /16 网络掩码和 /28 网络掩码之间不受限制的任何其他 CIDR 块。<br />100.64.0.0/10 范围中介于 /16 网络掩码和 /28 网络掩码之间任何可公开路由的 IPv4 CIDR 块（非 RFC 1918）或 /16 网络掩码和 /28 网络掩码之间的 CIDR 块。 | 
| 192.168.0.0/16 | 其他 RFC 1918\* 范围（10.0.0.0/8 和 172.16.0.0/12）中的 CIDR 块。<br />198.19.0.0/16 范围中的 CIDR 块。 | 192.168.0.0/16 范围中介于 /16 网络掩码和 /28 网络掩码之间的任何其他 CIDR 块。<br />100.64.0.0/10 范围中介于 /16 网络掩码和 /28 网络掩码之间任何可公开路由的 IPv4 CIDR 块（非 RFC 1918）或 /16 网络掩码和 /28 网络掩码之间的 CIDR 块。 | 
| 198.19.0.0/16 | RFC 1918\* 范围中的 CIDR 块。 | 100.64.0.0/10 范围中介于 /16 网络掩码和 /28 网络掩码之间任何可公开路由的 IPv4 CIDR 块（非 RFC 1918）或 /16 网络掩码和 /28 网络掩码之间的 CIDR 块。 | 
| 可公开路由的 CIDR 块（非 RFC 1918），或 100.64.0.0/10 范围中的 CIDR 块。 | RFC 1918\* 范围中的 CIDR 块。<br />198.19.0.0/16 范围中的 CIDR 块。 | 100.64.0.0/10 范围中介于 /16 网络掩码和 /28 网络掩码之间任何其他可公开路由的 IPv4 CIDR 块（非 RFC 1918）或 /16 网络掩码和 /28 网络掩码之间的 CIDR 块。<br />您也可以在其中一个 RFC 1918 范围内关联 CIDR，但是要做到这一点，您必须在创建 VPC 时先添加该 CIDR，然后再添加非 RFC 1918 CIDR。 | 

\*RFC 1918 范围是指 [RFC 1918](http://www.faqs.org/rfcs/rfc1918.html) 中指定的私有 IPv4 地址范围。

## IPv6 VPC CIDR 块
<a name="vpc-sizing-ipv6"></a>

创建新 VPC 时，您可以关联一个 IPv6 CIDR 块；您可以关联最多 5 个 IPv6 CIDR 块，从 `/44` 到 `/60`，增量为 `/4`。您可以从 Amazon 的 IPv6 地址池请求 IPv6 CIDR 块。有关更多信息，请参阅 [将 CIDR 块添加到 VPC 或从中删除](add-ipv4-cidr.md)。

如果您已向 VPC 关联 IPv6 CIDR 块，则可以将 IPv6 CIDR 块与 VPC 中的现有子网关联，或在创建新子网时执行此操作。有关更多信息，请参阅 [IPv6 的子网定型](subnet-sizing.md#subnet-sizing-ipv6)。

例如，您可以创建一个 VPC 并指定要向此 VPC 关联 Amazon 提供的 IPv6 CIDR 块。Amazon 向您的 VPC 分配以下 IPv6 CIDR 块：`2001:db8:1234:1a00::/56`。无法自行选择 IP 地址范围。您可以创建一个子网并从此范围分配 IPv6 CIDR 块；例如，`2001:db8:1234:1a00::/64`。

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