

# 配置虚拟私有云
<a name="configure-your-vpc"></a>

Amazon Virtual Private Cloud（VPC）属于基本构建基块，可帮助您在 AWS 云中预置逻辑隔离的虚拟网络。您可以通过创建自己的 VPC 来完全控制联网环境，包括定义 IP 地址范围、子网、路由表和连接选项的能力。

您的 AWS 账户包含每个 AWS 区域的默认 VPC。此默认 VPC 预配置了相应设置，使其成为快速启动资源的便捷选项。不过，默认 VPC 不一定总能符合您的长期联网需求。这就是创建额外 VPC 的优势所在。

与依赖于随每个新 AWS 账户预置的默认 VPC 相比，创建额外 VPC 具有多种优势。借助自行管理的 VPC，无论是实施多层应用程序、连接到本地资源，还是按部门或业务单位隔离工作负载，您都可以架构网络拓扑，使之与自身特定要求严格一致。

此外，创建多个 VPC 可以提高不同应用程序或业务单位之间的安全性和隔离性。每个 VPC 都充当独立的虚拟网络，使您能够应用针对每个环境量身定制的不同安全策略、访问控制和路由配置。

归根结底，使用默认 VPC 或创建一个（或多个）自定义 VPC 的决策应基于自身特定的应用程序要求、安全需求和长期可扩展性目标。投入时间精心设计 VPC 基础设施，可以带来强大、安全和适应性强的云联网基础方面的优势。

**Topics**
+ [VPC 基础知识](vpc-subnet-basics.md)
+ [VPC 配置选项](create-vpc-options.md)
+ [默认 VPC](default-vpc.md)
+ [创建 VPC](create-vpc.md)
+ [可视化 VPC 中的资源](view-vpc-resource-map.md)
+ [添加或删除 CIDR 块](add-ipv4-cidr.md)
+ [DHCP 选项集](VPC_DHCP_Options.md)
+ [DNS 属性](vpc-dns.md)
+ [网络地址用量](network-address-usage.md)
+ [共享 VPC 子网](vpc-sharing.md)
+ [将 VPC 扩展到其他可用区](Extend_VPCs.md)
+ [删除您的 VPC](delete-vpc.md)
+ [通过控制台操作生成 IaC](vpcs-automate-c2c.md)

# VPC 基础知识
<a name="vpc-subnet-basics"></a>

VPC 涵盖一个区域中的所有可用区。在创建 VPC 之后，您可以在每个可用区域中添加一个或多个子网。有关更多信息，请参阅 [VPC 的子网](configure-subnets.md)。

**Topics**
+ [VPC IP 地址范围](#vpc-ip-address-range)
+ [VPC 图](#vpc-diagram)
+ [VPC 资源](#vpc-resources)

## VPC IP 地址范围
<a name="vpc-ip-address-range"></a>

创建 VPC 时，您可以按以下方式指定其 IP 地址：
+ **仅 IPv4** – VPC 具有 IPv4 CIDR 块，但没有 IPv6 CIDR 块。
+ **双堆栈** – VPC 同时具有 IPv4 CIDR 块和 IPv6 CIDR 块。

有关更多信息，请参阅 [为 VPC 和子网分配 IP 地址](vpc-ip-addressing.md)。

## VPC 图
<a name="vpc-diagram"></a>

下图显示了一个没有额外 VPC 资源的 VPC。有关 VPC 示例配置，请参阅 [VPC 示例](vpc-examples-intro.md)。

![\[VPC 跨越区域中的可用区。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/vpc-diagram.png)


## VPC 资源
<a name="vpc-resources"></a>

每个 VPC 会自动提供以下资源：
+ [默认 DHCP 选项集](DHCPOptionSetConcepts.md#ArchitectureDiagram)
+ [默认网络 ACL](default-network-acl.md)
+ [默认安全组](default-security-group.md)
+ [主路由表](subnet-route-tables.md#main-route-table)

您可以为您的 VPC 创建下列资源：
+ [网络 ACL](vpc-network-acls.md)
+ [自定义路由表](VPC_Route_Tables.md)
+ [安全组](vpc-security-groups.md)
+ [Internet 网关](VPC_Internet_Gateway.md)
+ [NAT 网关](vpc-nat-gateway.md)

# VPC 配置选项
<a name="create-vpc-options"></a>

您可以在创建 VPC 时指定以下配置选项。

**可用区**  
在一个 AWS 区域中具有冗余电源、联网和连接的分散数据中心。通过使用多个可用区，您可以获得比单个数据中心具有更高可用性、容错能力和可扩展性的生产级应用程序和数据库。通过将应用程序进行分区，在跨可用区的子网中运行，可以实现更好的隔离和保护，防止停电、雷击、龙卷风、地震等问题的影响。

**CIDR 块**  
您必须为您的 VPC 和子网指定 IP 地址范围。有关更多信息，请参阅 [为 VPC 和子网分配 IP 地址](vpc-ip-addressing.md)。

**DNS 选项**  
如果您需要在子网中启动的 EC2 实例使用公有 IPv4 DNS 主机名，则必须同时启用这两个 DNS 选项。有关更多信息，请参阅 [VPC 中的 DNS 属性](vpc-dns.md)。  
+ **启用 DNS 主机名**：在 VPC 中启动的 VPC 实例将接收与其公有 IPv4 地址对应的公有 DNS 主机名。
+ **启用 DNS 解析**：私有 DNS 主机名的 DNS 解析由名为 Route 53 Resolver 的 Amazon DNS 服务器为 VPC 提供。

**互联网网关**  
将您的 VPC 连接到互联网。公有子网中的实例可以访问互联网，因为子网路由表包含一条将指向互联网的流量发送到互联网网关的路由。如果服务器不需要直接从互联网访问，则不应将其部署到公有子网中。详情请见 [互联网网关](VPC_Internet_Gateway.md)。

**名称**  
您为 VPC 和其他 VPC 资源指定的名称将用于创建名称标签。如果您使用控制台中的名称标签自动生成功能，则标签值的格式为 *name*-*resource*。

**NAT 网关**  
让私有子网中的实例能够将出站流量发送到互联网，但阻止互联网上的资源连接到实例。在生产环境中，我们建议您在每个活动可用区中部署一个 NAT 网关。有关更多信息，请参阅 [NAT 网关](vpc-nat-gateway.md)。

**路由表**  
包含一组被称为路由的规则，用于决定来自您的子网或网关的网络流量将指向何处。有关更多信息，请参阅 [路由表](VPC_Route_Tables.md)。

**子网**  
您的 VPC 内的一个 IP 地址范围。您可以在子网中启动 AWS 资源（如 EC2 实例）。每个子网都完全位于一个可用区之内。通过在至少两个可用区内启动实例，应用程序将不受单一可用区故障的影响。  
公有子网有一条指向互联网网关的直接路由。公有子网中的资源可以访问公有互联网。私有子网不具有指向互联网网关的直接路由。私有子网中的资源需要使用另一个组件（例如 NAT 设备）才能访问公共互联网。  
有关更多信息，请参阅 [子网](configure-subnets.md)。

**租赁**  
此选项定义您启动到此 VPC 中的 EC2 实例是在与其他 AWS 账户 共享的硬件上运行，还是在专供您使用的硬件上运行。如果您选择 VPC 的租赁为 `Default`，则启动到此 VPC 的 EC2 实例将使用您在启动实例时指定的租赁属性 – 有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[使用定义的参数启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。如果您选择 VPC 的租赁为 `Dedicated`，则这些实例将始终在专供您使用的硬件上作为[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)运行。如果您使用的是 AWS Outpost，则您的 Outpost 需要私有连接；您必须使用 `Default` 租赁。

# 默认 VPC
<a name="default-vpc"></a>

当您开启使用 Amazon VPC 时，每个 AWS 区域都有一个原定设置的 VPC。原定设置 VPC 在每个可用区中都有一个公有子网、一个互联网网关以及用于启用 DNS 解析的设置。因此，您可以立即在原定设置 VPC 中启动 Amazon EC2 实例。您还可以在默认 VPC 中使用 Elastic Load Balancing、Amazon RDS 和 Amazon EMR 等服务。

原定设置 VPC 适用于快速入门和启动公有实例 (如博客或简单的网站)。您可以按需修改您的默认 VPC 的组件。

您可以将子网添加到原定设置 VPC 中。有关更多信息，请参阅 [创建子网](create-subnets.md)。

**Topics**
+ [默认 VPC 组件](default-vpc-components.md)
+ [默认子网](default-subnet.md)
+ [查看默认 VPC 和默认子网](work-with-default-vpc.md)

# 默认 VPC 组件
<a name="default-vpc-components"></a>

当我们创建默认 VPC 时，我们会通过以下操作为您完成设置：
+ 创建 IPv4 CIDR 块大小为 `/16` 的 VPC (`172.31.0.0/16`)。最多可提供 65536 个私有 IPv4 地址。
+ 在每个可用区内创建大小为 `/20` 的默认子网。这将为每个子网提供多达 4,096 个地址，其中有一些被预留下来供我们使用。
+ 创建[互联网网关](VPC_Internet_Gateway.md)并将其连接到您的默认 VPC。
+ 在主路由表中添加一个将所有流量 (`0.0.0.0/0`) 指向互联网网关的路由。
+ 创建默认安全组并将其与您的默认 VPC 关联。
+ 创建默认网络访问控制列表 (ACL)，并将其与您的默认 VPC 关联。
+ 关联为您的 AWS 账户设置的默认 DHCP 选项与您的默认 VPC。

**注意**  
Amazon 代表您创建上述资源。IAM 策略不应用到这些操作，因为您不执行这些操作。例如，如果您有 IAM 策略拒绝了调用 CreateInternetGateway 的功能，然后您调用 CreateDefaultVpc，则仍会在默认 VPC 中创建互联网网关。为了防止 Amazon 创建互联网网关，您必须拒绝 CreateDefaultVpc 和 CreateInternetGateway。
要阻止您账户中往返于互联网网关的所有流量，请参阅[屏蔽 VPC 和子网的公共访问权限](security-vpc-bpa.md)。

下图表明了我们为默认 VPC 设置的关键组件。

![\[我们在每个区域创建一个默认 VPC，每个可用区都有一个默认子网。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/default-vpc.png)


下表显示默认 VPC 的主路由表中的路由。


| 目标位置 | 目标 | 
| --- | --- | 
| 172.31.0.0/16 | 本地 | 
| 0.0.0.0/0 | internet\$1gateway\$1id | 

您可以像使用任何其他 VPC 一样使用默认 VPC：
+ 添加更多非默认子网。
+ 修改主路由表。
+ 添加更多路由表。
+ 关联更多安全组。
+ 更新默认安全组的规则。
+ 添加 AWS Site-to-Site VPN 连接。
+ 添加更多 IPv4 CIDR 块。
+ 使用 Direct Connect 网关访问远程区域中的 VPC。有关 Direct Connect 网关选项的信息，请参阅《*AWS Direct Connect 用户指南*》中的 [Direct Connect 网关](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html)。

您可像使用任何其他子网一样使用默认子网；可添加自定义路由表和设置网络 ACL。您还可以在启动 EC2 实例时指定特定默认子网。

您可以选择将 IPv6 CIDR 块与默认 VPC 关联。

# 默认子网
<a name="default-subnet"></a>

默认情况下，默认子网为公有子网，因为主路由表会将指定发往 Internet 的子网流量发送到互联网网关。您可以从到互联网网关的目标 0.0.0.0/0 中删除路由，以使默认子网变为私有子网。但是，如果您执行此操作，则在该子网中运行的所有 EC2 实例都无法访问 Internet。

您在默认子网中启动的实例将同时接收公有 IPv4 地址和私有 IPv4 地址以及公有和私有 DNS 主机名。在默认 VPC 中的非默认子网内启动的实例不接收公有 IPv4 地址或 DNS 主机名。您可以更改您子网的默认公有 IP 寻址行为。有关更多信息，请参阅 [修改子网的 IP 寻址属性](subnet-public-ip.md)。

有时，AWS 可能会向某个区域添加新可用区。大多数情况下，我们会在几天内在此可用区中为您的默认 VPC 自动创建新的默认子网。但是，如果您对默认 VPC 进行过任何修改，那么我们不会添加新的默认子网。如果您希望对新的可用区使用默认子网，则可以自行创建一个。有关更多信息，请参阅 [创建默认子网](work-with-default-vpc.md#create-default-subnet)。

# 查看默认 VPC 和默认子网
<a name="work-with-default-vpc"></a>

本节旨在介绍如何使用默认 VPC 和默认子网。

**Topics**
+ [查看您的默认 VPC 和默认子网](#view-default-vpc)
+ [创建默认 VPC](#create-default-vpc)
+ [创建默认子网](#create-default-subnet)
+ [删除您的默认子网和默认 VPC](#deleting-default-vpc)

## 查看您的默认 VPC 和默认子网
<a name="view-default-vpc"></a>

您可以使用 Amazon VPC 控制台或命令行查看您的默认 VPC 和子网。

**使用控制台查看您的默认 VPC 和子网**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中，选择 **Your VPCs**。

1. 在 **Default VPC** 列中，查找值 **Yes**。记下默认 VPC 的 ID。

1. 在导航窗格中，选择 **Subnets (子网)**。

1. 在搜索栏中，键入默认 VPC 的 ID。返回的子网是您的默认 VPC 中的子网。

1. 要验证哪些子网是默认子网，请在 **Default Subnet ** 列中查找值 **Yes**。

**使用命令行描述您的默认 VPC**
+ 使用 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) (AWS CLI)
+ 使用 [Get-EC2Vpc](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Vpc.html) (AWS Tools for Windows PowerShell)

将命令与 `isDefault` 筛选器结合使用并将筛选值设置为 `true`。

**使用命令行描述您的默认子网**
+ 使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) (AWS CLI)
+ 使用 [Get-EC2Subnet](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Subnet.html) (AWS Tools for Windows PowerShell)

将命令与 `vpc-id` 筛选器结合使用并将筛选值设置为默认 VPC 的 ID。在输出中，`DefaultForAz` 字段对默认子网设置为 `true`。

## 创建默认 VPC
<a name="create-default-vpc"></a>

如果您删除了默认 VPC，则可以创建一个新的默认 VPC。您无法恢复之前删除的默认 VPC，并且无法将现有非默认 VPC 标记为默认 VPC。

当您创建默认 VPC 时，将使用默认 VPC 的标准[组件](default-vpc-components.md)创建它 (包括每个可用区中的默认子网)。您无法指定您自己的组件。新的默认 VPC 的子网 CIDR 块可能不会与之前的默认 VPC 映射到同一可用区。例如，如果具有 CIDR 块的子网 `172.31.0.0/20` 是在之前的默认 VPC 的 `us-east-2a` 中创建的，则该子网可能在新的默认 VPC 的 `us-east-2b` 中创建。

如果您在该区域中已经有默认 VPC，则无法创建另一个默认 VPC。

**使用控制台创建默认 VPC**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中，选择 **Your VPCs**。

1. 依次选择 **Actions** 和 **Create Default VPC**。

1. 选择**创建**。关闭确认屏幕。

**使用命令行创建默认 VPC**  
您可以使用 [create-default-vpc](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-default-vpc.html) AWS CLI 命令。此命令没有任何输入参数。

```
aws ec2 create-default-vpc
```

下面是示例输出。

```
{
    "Vpc": {
        "VpcId": "vpc-3f139646", 
        "InstanceTenancy": "default", 
        "Tags": [], 
        "Ipv6CidrBlockAssociationSet": [], 
        "State": "pending", 
        "DhcpOptionsId": "dopt-61079b07", 
        "CidrBlock": "172.31.0.0/16", 
        "IsDefault": true
    }
}
```

或者，您可以将 [New-EC2DefaultVpc](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2DefaultVpc.html) 工具用于 Windows PowerShell 命令或 [CreateDefaultVpc](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateDefaultVpc.html) Amazon EC2 API 操作。

## 创建默认子网
<a name="create-default-subnet"></a>

**注意**  
您不能使用 AWS 管理控制台 创建默认子网。

您可以在没有默认子网的可用区中创建一个默认子网。例如，如果您已删除默认子网，或者 AWS 已添加新的可用区但未在您的默认 VPC 中为该区域自动创建默认子网，则您可能需要创建一个默认子网。

创建默认子网时，将使用您的默认 VPC 中的下一个可用连续空间内的大小为 `/20` 的 IPv4 CIDR 块创建它。以下规则适用：
+ 不能自行指定 CIDR 块。
+ 不能恢复已删除的之前的默认子网。
+ 每个可用区只能有一个默认子网。
+ 不能在非默认 VPC 中创建默认子网。

如果您的默认 VPC 中没有用于创建大小为 `/20` 的 CIDR 块的足够地址空间，则请求会失败。如果您需要更多地址空间，则可以[将 IPv4 CIDR 块添加到您的 VPC](vpc-cidr-blocks.md#vpc-resize)。

如果您已将 IPv6 CIDR 块与您的默认 VPC 关联，则新的默认子网不会自动接收 IPv6 CIDR 块。您可以改为在创建一个 IPv6 CIDR 块后将其与默认子网关联。有关更多信息，请参阅 [将 IPv6 CIDR 块添加到子网或从中删除](subnet-associate-ipv6-cidr.md)。

**使用 AWS CLI 创建默认子网**  
使用 [create-default-subnet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-default-subnet.html) AWS CLI 命令并指定要在其中创建子网的可用区。

```
aws ec2 create-default-subnet --availability-zone us-east-2a
```

下面是示例输出。

```
{
    "Subnet": {
        "AvailabilityZone": "us-east-2a", 
        "Tags": [], 
        "AvailableIpAddressCount": 4091, 
        "DefaultForAz": true, 
        "Ipv6CidrBlockAssociationSet": [], 
        "VpcId": "vpc-1a2b3c4d", 
        "State": "available", 
        "MapPublicIpOnLaunch": true, 
        "SubnetId": "subnet-1122aabb", 
        "CidrBlock": "172.31.32.0/20", 
        "AssignIpv6AddressOnCreation": false
    }
}
```

有关设置 AWS CLI 的更多信息，请参阅《[AWS Command Line Interface 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/)》。

或者，您也可以使用 [New-EC2DefaultSubnet](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2DefaultSubnet.html) Tools for Windows PowerShell 命令或 [CreateDefaultSubnet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateDefaultSubnet.html) Amazon EC2 API 操作。

## 删除您的默认子网和默认 VPC
<a name="deleting-default-vpc"></a>

您可以像删除其他任何子网或 VPC 一样删除默认子网或默认 VPC。但是，如果您删除默认子网或默认 VPC，则在启动实例时必须显式指定您的一个 VPC 中的一个子网。如果您没有另一个 VPC，则必须创建至少在一个可用区内有一个子网的 VPC。有关更多信息，请参阅 [创建 VPC](create-vpc.md)。

如果您删除了默认 VPC，则可以创建一个新的默认 VPC。有关更多信息，请参阅 [创建默认 VPC](#create-default-vpc)。

如果您删除默认子网，则可以创建一个新的默认子网。有关更多信息，请参阅 [创建默认子网](#create-default-subnet)。为了确保您的新默认子网按预期正常运行，请修改子网属性以将公有 IP 地址分配到在该子网中启动的实例。有关更多信息，请参阅 [修改子网的 IP 寻址属性](subnet-public-ip.md)。每个可用区只能有一个默认子网。不能在非默认 VPC 中创建默认子网。

# 创建 VPC
<a name="create-vpc"></a>

按照以下过程创建虚拟私有云（VPC）。VPC 必须有额外的资源，例如子网、路由表和网关，然后才能在 VPC 中创建 AWS 资源。

**Topics**
+ [创建 VPC 以及其他 VPC 资源](#create-vpc-and-other-resources)
+ [仅创建 VPC](#create-vpc-only)
+ [使用 AWS CLI 创建 VPC](#create-vpc-cli)

有关修改 VPC 的信息，请参阅[将 CIDR 块添加到 VPC 或从中删除](add-ipv4-cidr.md)。

## 创建 VPC 以及其他 VPC 资源
<a name="create-vpc-and-other-resources"></a>

按照以下过程创建 VPC 以及运行应用程序所需的其他 VPC 资源，例如子网、路由表、互联网网关和 NAT 网关。有关 VPC 示例配置，请参阅 [VPC 示例](vpc-examples-intro.md)。

**使用控制台创建 VPC、子网和其他 VPC 资源**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在 VPC 控制面板上，选择**创建 VPC**。

1. 对于 **Resources to create**（要创建的资源），选择 **VPC and more**（VPC 等）。

1. 保持选中**名称标签自动生成**以为 VPC 资源创建名称标签，或者清除此选项以为 VPC 资源提供您自己的名称标签。

1. 对于 **IPv4 CIDR 块**，输入 VPC 的 IPv4 地址范围。VPC 必须具有一个 IPv4 地址范围。

1. （可选）要支持 IPv6 流量，请选择 **IPv6 CIDR 块**，然后选择 **Amazon 提供的 IPv6 CIDR 块**。

1. 选择**租赁**选项。此选项定义您启动到此 VPC 中的 EC2 实例是在与其他 AWS 账户 共享的硬件上运行，还是在专供您使用的硬件上运行。如果您选择将 VPC 的租赁设为 `Default`，则在此 VPC 中启动的 EC2 实例将使用您在启动实例时指定的租赁属性。有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[使用定义的参数启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。如果您选择 VPC 的租赁为 `Dedicated`，则这些实例将始终在专供您使用的硬件上作为[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)运行。如果您使用的是 AWS Outpost，则您的 Outpost 需要私有连接；您必须使用 `Default` 租赁。

1. 对于**可用区（AZ）数量**，我们建议生产环境至少在两个可用区域中预置子网。要为您的子网选择可用区，请展开**自定义可用区**。否则可让 AWS 为您选择。

1. 要配置子网，请选择**公有子网的数量**和**私有子网的数量**的值。要选择子网的 IP 地址范围，请展开**自定义子网 CIDR 块**。否则可让 AWS 为您选择。

1. （可选）如果私有子网中的资源需要通过 IPv4 访问公共互联网，则对于 **NAT 网关**，请选择要在其中创建 NAT 网关的可用区数量。在生产环境中，我们建议您在每个可用区部署一个 NAT 网关，其中包含需要访问公共互联网的资源。请注意，使用 NAT 网关会产生成本。有关更多信息，请参阅 [适用于 NAT 网关的定价](nat-gateway-pricing.md)。

1. （可选）如果私有子网中的资源需要通过 IPv6 访问公共互联网，对于**仅限出口的互联网网关**，请选择**是**。

1. （可选）如果您需要直接从 VPC 访问 Amazon S3，请选择 **VPC 端点**、**S3 网关**。这将为 Amazon S3 创建一个网关 VPC 端点。有关更多信息，请参阅《*AWS PrivateLink 指南*》中的 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。

1. （可选）对于 **DNS 选项**，默认情况下，两个域名解析选项均处于启用状态。如果默认设置无法满足您的需求，您可以禁用这些选项。

1. （可选）要向 VPC 添加标签，请展开**其他标签**，选择**添加新标签**，然后输入标签键和标签值。

1. 在**预览**窗格中，您可以直观地显示您所配置的 VPC 资源之间的关系。实线表示资源之间的关系。虚线表示指向 NAT 网关、互联网网关和网关端点的网络流量。创建 VPC 后，您可以使用**资源地图**选项卡，随时以此格式直观地显示 VPC 的资源。有关更多信息，请参阅 [可视化 VPC 中的资源](view-vpc-resource-map.md)。

1. 配置完 VPC 后，选择**创建 VPC**。

## 仅创建 VPC
<a name="create-vpc-only"></a>

按照以下过程，使用 Amazon VPC 控制台创建无额外 VPC 资源的 VPC。

**使用控制台创建无额外 VPC 资源的 VPC。**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在 VPC 控制面板上，选择**创建 VPC**。

1. 对于**要创建的资源**，选择 **仅 VPC**。

1. （可选）对于**名称标签**，输入 VPC 的名称。这样做可创建具有 `Name` 键以及您指定的值的标签。

1. 对于 **IPv4 CIDR block**（IPv4 CIDR 块），请执行以下操作之一：
   + 选择 **IPv4 CIDR 手动输入**，然后输入您的 VPC 的 IPv4 地址范围。
   + 选择 **IPAM 分配的 IPv4 CIDR 块**，然后选择您的 Amazon VPC IP 地址管理器（IPAM）IPv4 地址池和网络掩码。CIDR 块的大小受 IPAM 池上的分配规则限制。IPAM 是一项 VPC 功能，可让您更轻松地计划、跟踪和监控 AWS 工作负载的 IP 地址。有关更多信息，请参阅《Amazon VPC IPAM 用户指南》[https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)。

     如果您使用 IPAM 来管理 IP 地址，我们建议您选择此选项。否则，您为 VPC 指定的 CIDR 块可能与 IPAM CIDR 分配重叠。

1. （可选）要创建双堆栈 VPC，请为您的 VPC 指定一个 IPv6 地址范围。对于 **IPv6 CIDR block（IPv6 CIDR 块）**，请执行以下操作之一：
   + 如果使用 Amazon VPC IP 地址管理器，并且需要从 IPAM 池预置 IPv6 CIDR，则选择 **IPAM 分配的 IPv6 CIDR 块**。如果您使用 IPAM 分配的 IPv6 CIDR 块为 VPC 预置 IPv6 CIDR，则可以利用连续的 IPv6 CIDR 来创建 VPC。连续分配的 CIDR 是按顺序分配的 CIDR。它们使您能够简化安全和网络规则；IPv6 CIDR 可以跨网络和安全结构（如访问控制列表、路由表、安全组和防火墙）聚合在单个条目中。

     您可以通过两个选项，在 **CIDR 块**下为 VPC 预置一个 IP 地址范围：
     + **网络掩码长度**：选择此选项可为 CIDR 选择网络掩码长度。请执行以下操作之一：
       + 如果已为 IPAM 池选择默认网络掩码长度，则可以选择**默认为 IPAM 网络掩码长度**，以使用 IPAM 管理员为 IPAM 池设置的默认网络掩码长度。有关可选默认网络掩码长度分配规则的更多信息，请参阅《Amazon VPC IPAM 用户指南》**中的[创建区域 IPv6 池](https://docs.aws.amazon.com/vpc/latest/ipam/create-ipv6-reg-pool.html)。
       + 如果未为 IPAM 池选择默认网络掩码长度，则选择一个比 IPAM 池 CIDR 的网络掩码长度更具体的网络掩码长度。例如，假设 IPAM 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。
     + **选择 CIDR**：选择此选项可手动输入 IPv6 地址。您只能选择比 IPAM 池 CIDR 的网络掩码长度更具体的网络掩码长度。例如，假设 IPAM 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的 IPv6 网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。
   + 选择 **Amazon 提供的 IPv6 CIDR 块**，以从 Amazon 的 IPv6 地址池请求 IPv6 CIDR 块。对于 **Network Border Group**（网络边界组），选择 AWS 从中通告 IP 地址的组。Amazon 提供 **/56** 固定大小的 IPv6 CIDR 块。
   + 选择**我拥有的 IPv6 CIDR**，以预置您已经带到 AWS 的 IPv6 CIDR。有关自带 IP 地址范围到 AWS 的更多信息，请参阅《*Amazon EC2 用户指南*》中的[自带 IP 地址（BYOIP）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)。您可以使用以下 **CIDR 块**选项为 VPC 预置 IP 地址范围：
     + **无偏好**：选择此选项使用 **/56** 的网络掩码长度。
     + **选择 CIDR**：选择此选项可手动输入 IPv6 地址，然后选择比 BYOIP CIDR 的大小更具体的网络掩码长度。例如，假设 BYOIP 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的 IPv6 网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。

1. （可选）选择**租赁**选项。此选项定义您启动到此 VPC 中的 EC2 实例是在与其他 AWS 账户 共享的硬件上运行，还是在专供您使用的硬件上运行。如果您选择 VPC 的租赁为 `Default`，则启动到此 VPC 的 EC2 实例将使用您在启动实例时指定的租赁属性 – 有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[使用定义的参数启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-instance-wizard.html)。如果您选择 VPC 的租赁为 `Dedicated`，则这些实例将始终在专供您使用的硬件上作为[专用实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)运行。如果您使用的是 AWS Outpost，则您的 Outpost 需要私有连接；您必须使用 `Default` 租赁。

1. （可选）要向 VPC 添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**创建 VPC**。

1. 创建 VPC 后，您可以添加子网。有关更多信息，请参阅 [创建子网](create-subnets.md)。

## 使用 AWS CLI 创建 VPC
<a name="create-vpc-cli"></a>

以下过程包含创建 VPC 的示例 AWS CLI 命令以及运行应用程序所需的其他 VPC 资源。如果您运行此过程中的所有命令，您将创建一个 VPC、一个公有子网、一个私有子网、针对每个子网的路由表、一个互联网网关、一个仅限出口的互联网网关和一个公有 NAT 网关。如果您不需要所有这些资源，则可以仅使用您需要的示例命令。

**先决条件**  
在开始之前，请安装并配置 AWS CLI。配置 AWS CLI 时，系统会提示您输入 AWS 凭证。本过程中的示例假定您已配置好默认区域。否则，请为每个命令添加 `--region` 选项。有关更多信息，请参阅[安装或更新 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)和[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

**标记**  
在创建资源后，您可以使用 [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) 命令为资源添加标签。您还可以按如下方式将 `--tag-specification` 选项添加到资源的创建命令中。

```
--tag-specifications ResourceType=vpc,Tags=[{Key=Name,Value=my-project}]
```

**使用 AWS CLI 创建 VPC 以及其他 VPC 资源**

1. 使用下面的 [create-vpc](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-vpc.html) 命令创建具有指定 IPv4 CIDR 块的 VPC。

   ```
   aws ec2 create-vpc --cidr-block 10.0.0.0/24 --query Vpc.VpcId --output text
   ```

   要创建双堆栈 VPC，请如以下示例所示，添加 `--amazon-provided-ipv6-cidr-block` 选项以添加 Amazon 提供的 IPv6 CIDR 块。

   ```
   aws ec2 create-vpc --cidr-block 10.0.0.0/24 --amazon-provided-ipv6-cidr-block --query Vpc.VpcId --output text
   ```

   这些命令将返回新 VPC 的 ID。示例如下：

   ```
   vpc-1a2b3c4d5e6f1a2b3
   ```

1. [双堆栈 VPC] 使用以下 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令获取与 VPC 关联的 IPv6 CIDR 块。

   ```
   aws ec2 describe-vpcs --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query Vpcs[].Ipv6CidrBlockAssociationSet[].Ipv6CidrBlock --output text
   ```

   下面是示例输出。

   ```
   2600:1f13:cfe:3600::/56
   ```

1. 根据您的使用场景创建一个或多个子网。在生产环境中，我们建议您至少在两个可用区中启动资源。使用下面的任意一种命令创建每个子网。
   + **仅 IPv4 子网** – 要创建具有特定 IPv4 CIDR 块的子网，请使用下面的 [create-subnet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-subnet.html) 命令。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```
   + **双堆栈子网** – 如果您创建了双堆栈 VPC，则可以如以下命令所示，使用 `--ipv6-cidr-block` 选项创建双堆栈子网。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --cidr-block 10.0.1.0/20 --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```
   + **仅 IPv6 子网** – 如果您创建了双堆栈 VPC，则可以如以下命令所示，使用 `--ipv6-native` 选项创建仅 IPv6 子网。

     ```
     aws ec2 create-subnet --vpc-id vpc-1a2b3c4d5e6f1a2b3 --ipv6-native --ipv6-cidr-block 2600:1f13:cfe:3600::/64 --availability-zone us-east-2a --query Subnet.SubnetId --output text
     ```

   这些命令将返回新子网的 ID。示例如下：

   ```
   subnet-1a2b3c4d5e6f1a2b3
   ```

1. 如果您的 Web 服务器或 NAT 网关需要公有子网，请执行以下操作：

   1. 使用以下 [create-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-internet-gateway.html) 命令创建互联网网关。该命令将返回新互联网网关的 ID。

      ```
      aws ec2 create-internet-gateway --query InternetGateway.InternetGatewayId --output text
      ```

   1. 使用以下 [attach-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-internet-gateway.html) 命令将互联网网关附加到 VPC。使用上一步返回的互联网网关 ID。

      ```
      aws ec2 attach-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --internet-gateway-id igw-id
      ```

   1. 使用以下 [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) 命令为公有子网创建自定义路由表。该命令将返回新路由表的 ID。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 使用以下 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令，在路由表中创建一条会将所有 IPv4 流量发送到互联网网关的路由。使用公有子网的路由表 ID。

      ```
      aws ec2 create-route --route-table-id rtb-id-public --destination-cidr-block 0.0.0.0/0 --gateway-id igw-id
      ```

   1. 使用以下 [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) 命令将路由表关联到公有子网。使用公有子网的路由表 ID 和公有子网的 ID。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-public --subnet-id subnet-id-public-subnet
      ```

1. [IPv6] 您可以添加仅限出口的互联网网关，以确保私有子网中的实例可以通过 IPv6 访问互联网（例如，获取软件更新），但互联网上的主机无法访问您的实例。

   1. 使用以下 [create-egress-only-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-egress-only-internet-gateway.html) 命令创建仅限出口的互联网网关。该命令将返回新互联网网关的 ID。

      ```
      aws ec2 create-egress-only-internet-gateway --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query EgressOnlyInternetGateway.EgressOnlyInternetGatewayId --output text
      ```

   1. 使用以下 [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) 命令为私有子网创建自定义路由表。该命令将返回新路由表的 ID。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 使用以下 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令，在私有子网的路由表中创建一条会将所有 IPv6 流量发送到仅限出口的互联网网关的路由。使用上一步中返回的路由表 ID。

      ```
      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block ::/0 --egress-only-internet-gateway eigw-id
      ```

   1. 使用以下 [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) 命令将路由表关联到私有子网。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet
      ```

1. 如果您需要为私有子网中的资源使用 NAT 网关，请执行以下操作：

   1. 使用以下 [allocate-address](https://docs.aws.amazon.com/cli/latest/reference/ec2/allocate-address.html) 命令为 NAT 网关创建弹性 IP 地址。

      ```
      aws ec2 allocate-address --domain vpc --query AllocationId --output text
      ```

   1. 使用以下 [create-nat-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-nat-gateway.html) 命令在公有子网中创建 NAT 网关。使用上一步返回的分配 ID。

      ```
      aws ec2 create-nat-gateway --subnet-id subnet-id-public-subnet --allocation-id eipalloc-id
      ```

   1. （可选）如果您已经在第 5 步中为私有子网创建了路由表，请跳过这一步。否则，请使用下面的 [create-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route-table.html) 命令为您的私有子网创建路由表。该命令将返回新路由表的 ID。

      ```
      aws ec2 create-route-table --vpc-id vpc-1a2b3c4d5e6f1a2b3 --query RouteTable.RouteTableId --output text
      ```

   1. 使用以下 [create-route](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-route.html) 命令，在私有子网的路由表中创建一条会将所有 IPv4 流量发送到 NAT 网关的路由。使用您在这一步或第 5 步中为私有子网创建的路由表的 ID。

      ```
      aws ec2 create-route --route-table-id rtb-id-private --destination-cidr-block 0.0.0.0/0 --gateway-id nat-id
      ```

   1. （可选）如果您已在第 5 步中将路由表关联到私有子网，请跳过这一步。否则，请使用下面的 [associate-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-route-table.html) 命令将路由表关联到私有子网。使用您在这一步或第 5 步中为私有子网创建的路由表的 ID。

      ```
      aws ec2 associate-route-table --route-table-id rtb-id-private --subnet-id subnet-id-private-subnet
      ```

# 可视化 VPC 中的资源
<a name="view-vpc-resource-map"></a>

本节旨在介绍如何使用**资源地图**选项卡查看 VPC 中资源的可视化表示。资源图中可以看到以下资源：
+ VPC
+ 子网
  + 可用区用字母表示。
  + 公有子网为绿色。
  + 私有子网为蓝色。
+ 路由表
+ Internet 网关
+ 仅出口互联网网关
+ NAT 网关
+ 网关端点（Amazon S3 和 Amazon DynamoDB）

资源图会显示 VPC 内部资源之间的关系，以及流量如何从子网流向 NAT 网关、互联网网关和网关端点。

通过资源地图，您可以了解 VPC 的架构布局，查看子网数量、哪些子网与哪些路由表相关联以及哪些路由表具有通往 NAT 网关、互联网网关和网关端点的路由。

此外，您还可以通过资源地图发现不良或错误配置，例如与 NAT 网关断开连接的私有子网，或具有直接通往互联网网关的路由的私有子网。您可以在资源地图中选择路由表等资源，并编辑这些资源的配置。

**可视化 VPC 中的资源**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **VPC**。

1. 选择 VPC。

1. 选择**资源地图**选项卡以直观地显示资源。

1. 选择**显示详细信息**，以查看除默认显示的资源 ID 和区域以外的其他详细信息。
   + **VPC**：分配给 VPC 的 IPv4 和 IPv6 网址范围。
   + **子网**：分配给每个子网的 IPv4 和 IPv6 CIDR 范围。
   + **路由表**：子网关联和路由表中的路由数量。
   + **网络连接**：与每种连接类型相关的详细信息：
     + 如果 VPC 中有公有子网，则存在互联网网关资源，其中包含路由数量以及使用互联网网关的流量的源子网和目标子网。
     + 如果有仅出口互联网网关，则存在仅出口互联网网关资源，其中包含路由数量以及使用仅出口互联网网关的流量的源子网和目标子网。
     + 如果有 NAT 网关，则存在 NAT 网关资源，其中包含 NAT 网关的网络接口数量以及弹性 IP 地址。
     + 如果有网关端点，则存在网关端点资源，其中包含您可以使用该端点连接的 AWS 服务（Amazon S3 或 Amazon DynamoDB）的名称。

1. 将鼠标指针悬停在资源上可查看资源之间的关系。实线表示资源之间的关系。虚线表示指向网络连接的网络流量。

# 将 CIDR 块添加到 VPC 或从中删除
<a name="add-ipv4-cidr"></a>

本节旨在介绍如何将 IPv4 和 IPv6 CIDR 块添加到 VPC 或从中删除。

**重要**  
默认情况下，您的 VPC 可以最多有 5 个 IPv4 CIDR 块和 5 个 IPv6 CIDR 块，但此限额可调整。有关更多信息，请参阅 [Amazon VPC 配额](amazon-vpc-limits.md)。有关 VPC 的 CIDR 块限制的信息，请参阅 [VPC CIDR 块](vpc-cidr-blocks.md)。
如果您的 VPC 关联了多个 IPv4 CIDR 块，则可以取消一个 IPv4 CIDR 块与 VPC 的关联。您不能将主 IPv4 CIDR 块取消关联。您只能将整个 CIDR 块取消关联；不能将 CIDR 块的子集或 CIDR 块的合并范围取消关联。必须首先删除 CIDR 块中的所有子网。
如果不再需要在 VPC 中支持 IPv6，但需要继续使用 VPC 来创建 IPv4 资源并与之通信，则可以移除 IPv6 CIDR 块。
要移除 IPv6 CIDR 块，您必须首先将分配给子网中任何实例的任何 IPv6 地址取消分配。
移除 IPv6 CIDR 块关联不会自动删除您为 IPv6 网络配置的任何安全组规则、网络 ACL 规则或路由表路由。您必须手动修改或删除这些规则或路由。

**使用控制台将 CIDR 块添加到 VPC 或从中删除**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Your VPCs**（您的 VPC）。

1. 选择所需的 VPC，然后选择 **Actions**（操作）、**Edit CIDRs**（编辑 CIDR）。

1. 要删除 CIDR，选择 CIDR 旁的**删除**。

1. 要添加 CIDR，选择**添加新的 IPv4 CIDR**或**添加新的 IPv6 CIDR**。

1. 要为 **IPv4 CIDR 块**添加 CIDR，请执行以下操作之一：
   + 选择 **IPv4 CIDR manual input**（IPv4 CIDR 手动输入），然后输入 IPv4 CIDR 块。
   + 选择 **IPAM-allocated IPv4 CIDR**（IPAM 分配的 IPv4 CIDR），然后从 IPv4 IPAM 池中选择 CIDR。
   + 选择**保存**。

1. 要为 **IPv6 CIDR 块**添加 CIDR，请执行以下操作：
   + 如果使用 Amazon VPC IP 地址管理器，并且需要从 IPAM 池预置 IPv6 CIDR，则选择 **IPAM 分配的 IPv6 CIDR 块**。您可以通过两个选项，在 **CIDR 块**下为 VPC 预置一个 IP 地址范围：
     + **网络掩码长度**：选择此选项可为 CIDR 选择网络掩码长度。请执行以下操作之一：
       + 如果已为 IPAM 池选择默认网络掩码长度，则可以选择**默认为 IPAM 网络掩码长度**，以使用 IPAM 管理员为 IPAM 池设置的默认网络掩码长度。有关可选默认网络掩码长度分配规则的更多信息，请参阅《Amazon VPC IPAM 用户指南》**中的[创建区域 IPv6 池](https://docs.aws.amazon.com/vpc/latest/ipam/create-ipv6-reg-pool.html)。
       + 如果未为 IPAM 池选择默认网络掩码长度，则选择一个比 IPAM 池 CIDR 的网络掩码长度更具体的网络掩码长度。例如，假设 IPAM 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。
     + **选择 CIDR**：选择此选项可手动输入 IPv6 地址。您只能选择比 IPAM 池 CIDR 的网络掩码长度更具体的网络掩码长度。例如，假设 IPAM 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的 IPv6 网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。
   + 选择 **Amazon 提供的 IPv6 CIDR 块**，以从 Amazon 的 IPv6 地址池请求 IPv6 CIDR 块。对于 **Network Border Group**（网络边界组），选择 AWS 从中通告 IP 地址的组。Amazon 提供 **/56** 固定大小的 IPv6 CIDR 块。
   + 选择**我拥有的 IPv6 CIDR**，以预置您已经带到 AWS 的 IPv6 CIDR。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[在 Amazon EC2 中使用您自己的 IP 地址（BYOIP）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html)。您可以通过两个选项，在 **CIDR 块**下为 VPC 预置一个 IP 地址范围：
     + **无偏好**：选择此选项使用 **/56** 的网络掩码长度。
     + **选择 CIDR**：选择此选项可手动输入 IPv6 地址，然后选择比 BYOIP CIDR 的大小更具体的网络掩码长度。例如，假设 BYOIP 池 CIDR 为 /50，则可以为 VPC 选择介于 **/52** 至 **/60** 之间的网络掩码长度。可能的 IPv6 网络掩码长度介于 **/44** 和 **/60** 之间，增量为 /4。
     + 完成此操作后，选择**选择 CIDR**。

1. 选择**关闭**。

1. 将 CIDR 块添加到 VPC 后，您可以创建使用该新 CIDR 块的子网。有关更多信息，请参阅 [创建子网](create-subnets.md)。

**使用 AWS CLI 将 CIDR 块与 VPC 关联或取消关联**  
使用 [associate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-vpc-cidr-block.html) 和 [disassociate-vpc-cidr-block](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-vpc-cidr-block.html) 命令。

# Amazon VPC 中的 DHCP 选项集
<a name="VPC_DHCP_Options"></a>

VPC 中的网络设备使用动态主机配置协议（DHCP）。您可以使用 DHCP 选项集控制虚拟网络中网络配置的以下方面：
+ VPC 中设备使用的 DNS 服务器、域名或网络时间协议（NTP）服务器。
+ 您的 VPC 是否启用了 DNS 解析。

**Topics**
+ [什么是 DHCP？](#DHCPOptionSets)
+ [DHCP 选项集概念](DHCPOptionSetConcepts.md)
+ [使用 DHCP 选项集](DHCPOptionSet.md)

## 什么是 DHCP？
<a name="DHCPOptionSets"></a>

TCP/IP 网络上的每台设备都需要一个 IP 地址才能通过网络进行通信。过去，IP 地址必须手动为网络中的每台设备分配。如今，您可以由 DHCP 服务器使用动态主机配置协议（DHCP）来动态分配 IP 地址。

在 EC2 实例上运行的应用程序可以根据需要与 Amazon DHCP 服务器通信，以检索其 IP 地址租约或其他网络配置信息（例如 Amazon DNS 服务器的 IP 地址或 VPC 中路由器的 IP 地址）。

您可以通过使用 DHCP 选项集指定 Amazon DHCP 服务器提供的网络配置。

如果 VPC 配置要求应用程序直接向 Amazon IPv6 DHCP 服务器发出请求，请注意以下各项：
+ 双堆栈子网中的 EC2 实例只能从 IPv6 DHCP 服务器检索其 IPv6 地址。*它无法从 IPv6 DHCP 服务器检索任何其他联网配置，例如 DNS 服务器名称或域名。*
+ 仅使用 IPv6 的子网中的 EC2 实例可以从 IPv6 DHCP 服务器检索其 IPv6 地址，*并可以检索其他联网配置信息，例如 DNS 服务器名称和域名。*
+ 对于仅限 IPv6 子网中的 EC2 实例，如果 DHCP 选项集中明确提及“AmazonProvidedDNS”，则 IPv4 DHCP Server 将返回 169.254.169.253 作为域名服务器。如果选项集中缺少“AmazonProvidedDNS”，则无论选项集中是否提及其他 IPv4 域名服务器，IPv4 DHCP Server 都不会返回地址。

Amazon DHCP 服务器还可以使用前缀委派为 VPC 中的网络接口提供完整的 IPv4 或 IPv6 前缀（请参阅《*Amazon EC2 用户指南*》中的[为 Amazon EC2 网络接口分配前缀](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-prefix-eni.html)）。DHCP 响应中不提供 IPv4 前缀委派。可以使用 IMDS 检索分配给接口的 IPv4 前缀（请参阅《*Amazon EC2 用户指南*》中的[实例元数据类别](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories))。

# DHCP 选项集概念
<a name="DHCPOptionSetConcepts"></a>

*DHCP 选项集*是 VPC 中的资源实例使用的一组网络设置（例如 EC2 实例），以用于通过您的虚拟网络进行通信。

每个区域都有默认的 DHCP 选项集。除非您创建自定义 DHCP 选项集并将其与 VPC 关联，或者在未没有 DHCP 选项集的情况下配置 VPC，否则每个 VPC 都会使用其区域的默认 DHCP 选项集。

如果您的 VPC 未配置 DHCP 选项集：
+ 对[基于 Nitro System 构建的 EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-hypervisor-type)，AWS 将 `169.254.169.253` 配置为默认域名服务器。
+ 对[基于 Xen 构建的 EC2 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#instance-hypervisor-type)，将不配置域名服务器，并且由于 VPC 中的实例无法访问 DNS 服务器，这些实例将无法访问互联网。

您可以有将一个 DHCP 选项集与多个 VPC 关联，但每个 VPC 只能有一个关联的 DHCP 选项集。

如果您删除一个 VPC，与该 VPC 关联的 DHCP 选项集将与该 VPC 解除关联。

**Topics**
+ [默认 DHCP 选项集](#ArchitectureDiagram)
+ [自定义 DHCP 选项集](#CustomDHCPOptionSet)

## 默认 DHCP 选项集
<a name="ArchitectureDiagram"></a>

默认 DHCP 选项集包含了以下设置：
+ **域名服务器**：供网络接口用于域名解析的 DNS 服务器。对于默认 DHCP 选项集，这始终是 `AmazonProvidedDNS`。有关更多信息，请参阅 [Amazon DNS 服务器](AmazonDNS-concepts.md#AmazonDNS)。
+ **域名**：客户端通过域名系统（DNS）解析主机名时应使用的域名。有关用于 EC2 实例的域名的更多信息，请参阅 [Amazon EC2 实例主机名](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。
+ **IPv6 首选租赁时间**：为其分配了 IPv6 的正在运行的实例续订 DHCPv6 租约的频率。默认租赁时间为 140 秒。通常在租赁时间已过一半时进行租约续订。

当您使用默认的 DHCP 选项集时，不会使用以下设置，但是 EC2 实例有默认设置：
+ **NTP 服务器**：默认情况下，EC2 实例使用 [Amazon Time Sync Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html) 检索时间。
+ **NetBIOS 名称服务器**：对于运行 Windows 的 EC2 实例，NetBIOS 电脑名称是分配给实例的一个友好名称，用于在网络上识别它。NetBIOS 名称服务器负责维护 NetBIOS 电脑名称与使用 NetBIOS 作为命名服务的网络的网络地址之间的映射列表。
+ **NetBIOS 节点类型**：对于运行 Windows 的 EC2 实例，这是这些实例用于将 NetBIOS 名称解析为 IP 地址的方法。

如果使用原定设置的选项集，Amazon DHCP 服务器将使用原定设置选项集中的网络设置。当您在 VPC 中启动实例时，他们将执行下图中显示的操作：(1) 与 DHCP 服务器交互，(2) 与 Amazon DNS 服务器交互，(3) 然后通过 VPC 的路由器连接到网络中的其他设备。这些实例可以随时与 Amazon DHCP 服务器进行交互，以获取其 IP 地址租赁和其他网络设置。

![\[默认 DHCP 选项集\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/dhcp-default-update-new.png)


## 自定义 DHCP 选项集
<a name="CustomDHCPOptionSet"></a>

您可以使用以下设置创建自定义 DHCP 选项集，然后将此选项集与 VPC 关联：
+ **域名服务器**：供网络接口用于域名解析的 DNS 服务器。
+ **域名**：客户端通过域名系统（DNS）解析主机名时应使用的域名。
+ **NTP 服务器**：为实例提供时间的 NTP 服务器。
+ **NetBIOS 名称服务器**：对于运行 Windows 的 EC2 实例，NetBIOS 电脑名称是分配给实例的一个友好名称，用于在网络上识别它。NetBIOS 名称服务器负责维护 NetBIOS 电脑名称与使用 NetBIOS 作为命名服务的网络的网络地址之间的映射列表。
+ **NetBIOS 节点类型**：对于运行 Windows 的 EC2 实例，即这些实例用于将 NetBIOS 名称解析为 IP 地址的方法。
+ **IPv6 首选租赁时间**（可选）：为其分配了 IPv6 的正在运行的实例续订 DHCPv6 租约的频率值（以秒、分钟、小时或年为单位）。可接受的值介于 140 到 4294967295 秒（大约 138 年）之间。如果未输入值，则默租赁时间为 140 秒。如果您对 EC2 实例使用长期寻址，则可以增加租赁时间，避免频繁的租约续订请求。通常在租赁时间已过一半时进行租约续订。

如果您使用自定义选项集，在 VPC 中启动的实例将执行如图所示的以下操作：(1) 使用自定义 DHCP 选项集中的网络设置，(2) 与自定义 DHCP 选项集中指定的 DNS、NTP 和 NetBIOS 服务器进行交互，然后 (3) 通过 VPC 的路由器连接到网络中的其他设备。

![\[自定义 DHCP 选项集\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/dhcp-custom-update-new.png)


**相关任务**
+ [创建 DHCP 选项集](DHCPOptionSet.md#CreatingaDHCPOptionSet)
+ [更改与 VPC 关联的选项集。](DHCPOptionSet.md#ChangingDHCPOptionsofaVPC)

# 使用 DHCP 选项集
<a name="DHCPOptionSet"></a>

使用以下过程查看 DHCP 选项集，并进行使用。有关 DHCP 选项集工作原理的更多信息，请参阅 [DHCP 选项集概念](DHCPOptionSetConcepts.md)。

**Topics**
+ [创建 DHCP 选项集](#CreatingaDHCPOptionSet)
+ [更改与 VPC 关联的选项集。](#ChangingDHCPOptionsofaVPC)
+ [删除 DHCP 选项集](#DeletingaDHCPOptionSet)

## 创建 DHCP 选项集
<a name="CreatingaDHCPOptionSet"></a>

借助自定义 DHCP 选项集，您可以使用自己的 DNS 服务器、域名等来自定义 VPC。您可以根据需要，任意创建额外 DHCP 选项集。但是，您一次只能将一个 VPC 与一个 DHCP 选项集相关联。

**注意**  
在您创建 DHCP 选项集之后，您便无法再对其进行修改。要为您的 VPC 更新 DHCP 选项，您必须创建新的 DHCP 选项集，然后将其关联到您的 VPC。

**要使用控制台创建 DHCP 选项集**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中，选择 **DHCP option sets**（DHCP 选项集）。

1. 选择 **Create DHCP options set**（创建 DHCP 选项集）。

1. 对于 **Tag settings**（标签设置），根据需要输入 DHCP 选项集的名称。如果输入一个值，将会自动为 DHCP 选项集创建一个名称标签。

1. 对于**DHCP 选项**，提供所需的配置参数。
   + **域名**（可选）：输入客户端使用 DNS 解析主机名时应使用的域名。如果您未使用 AmazonProvidedDNS，您的自定义域名服务器必须正确解析主机名。如果您使用 Amazon Route 53 私有托管区域，则可以使用 AmazonProvidedDNS。有关更多信息，请参阅 [VPC 中的 DNS 属性](vpc-dns.md)。
**注意**  
仅使用您完全控制的域名。

     某些 Linux 操作系统接受由空格分隔的多个域名。但是，Windows 以及其他 Linux 操作系统将该值视为单个域，因而会导致意外行为。如果您的 DHCP 选项集与其中实例所运行操作系统将该值视为单个域的 VPC 关联，请仅指定一个域名。
   + **Domain name servers**（域名服务器，可选）：输入将用于将主机名称解析为主机 IP 地址的 DNS 服务器。

     您可以输入 **AmazonProvidedDNS** 或自定义域名服务器。使用两者都可能会导致意外行为。您最多可以输入四个 IPv4 域名服务器（或最多三个 IPv4 域名服务器和 **AmazonProvidedDNS**）和四个 IPv6 域名服务器的 IP 地址，用逗号分隔。尽管最多可以指定八个域名服务器，但某些操作系统可能会施加较低的限制。有关 **AmazonProvidedDNS** 和 Amazon DNS 服务器的更多信息，请参阅 [Amazon DNS 服务器](AmazonDNS-concepts.md#AmazonDNS)。
**重要**  
如果您的 VPC 有互联网网关，确保指定您自己的 DNS 服务器或 Amazon DNS 服务器 (AmazonProvidedDNS) 作为**域名服务器**值。否则，VPC 中的实例将无法访问 DNS，这样会禁用互联网访问。
   + **NTP servers**（NTP 服务器，可选）：输入最多八个网络时间协议（NTP）服务器的 IP 地址（四个 IPv4 地址和四个 IPv6 地址）。

      NTP 服务器为您的网络提供时间。您可以在 IPv4 地址 `169.254.169.123` 或 IPv6 地址 `fd00:ec2::123` 指定 Amazon Time Sync Service。原定设置下，实例与 Amazon Time Sync Service 通信。请注意，IPv6 地址只能在[基于 Nitro 系统构建的 EC2 实例](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)上访问。

     有关 NTP 服务器选项的更多信息，请参阅 [RFC 2132](https://datatracker.ietf.org/doc/html/rfc2132#section-8.3)。有关 Amazon Time Sync Service 的更多信息，请参阅《*Amazon EC2 用户指南*》中的[为您的实例设置时间](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)。
   + **NetBIOS name servers**（NetBIOS 名称服务器，可选）：输入最多四个 NetBIOS 名称服务器的 IP 地址。

     对于运行 Windows 操作系统的 EC2 实例，NetBIOS 电脑名称是分配给实例的一个友好名称，用于在网络上识别它。NetBIOS 名称服务器负责维护 NetBIOS 电脑名称与使用 NetBIOS 作为命名服务的网络的网络地址之间的映射列表。
   + **NetBIOS node type**（NetBIOS 节点类型，可选）：输入 **1**、**2**、**4** 或 **8**。我们建议您指定 **2**（点对点或 P 节点）。目前不支持广播和多播。有关这些节点类型的更多信息，请参阅 [RFC 2132](https://tools.ietf.org/html/rfc2132) 的第 8.7 节，以及 [RFC1001](https://tools.ietf.org/html/rfc1001) 的第 10 节。

     对于运行 Windows 操作系统的 EC2 实例，这是这些实例用于将 NetBIOS 名称解析为 IP 地址的方法。在原定设置选项集中，NetBIOS 节点类型没有值。
   + **IPv6 首选租赁时间**（可选）：为其分配了 IPv6 的正在运行的实例续订 DHCPv6 租约的频率值（以秒、分钟、小时或年为单位）。可接受的值介于 140 到 2147483647 秒（大约 68 年）之间。如果未输入值，则默租赁时间为 140 秒。如果您对 EC2 实例使用长期寻址，则可以增加租赁时间，避免频繁的租约续订请求。通常在租赁时间已过一半时进行租约续订。

1. 添加 **Tags**（标签）。

1. 选择 **Create DHCP options set**（创建 DHCP 选项集）。将新 DHCP 选项集的名称或 ID 记录下来。

1. 要配置您的 VPC 以使用新的选项集，请参阅 [更改与 VPC 关联的选项集。](#ChangingDHCPOptionsofaVPC)。

**要使用命令行为您的 VPC 创建 DHCP 选项集**
+ [create-dhcp-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-dhcp-options.html) (AWS CLI)
+ [New-EC2DhcpOption](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2DhcpOption.html) (AWS Tools for Windows PowerShell)

## 更改与 VPC 关联的选项集。
<a name="ChangingDHCPOptionsofaVPC"></a>

创建 DHCP 选项集之后，您可以将其与一个或多个 VPC 关联。您一次只能将一个 DHCP 选项集与一个 VPC 相关联。如果您未将 DHCP 选项集与 VPC 关联，则这样会禁用 VPC 中的域名解析。

在您将新的 DHCP 选项集与 VPC 关联时，任何现有实例以及您在 VPC 内启动的所有新实例都将使用新选项。无需重新开始或重新启动您的实例。根据实例更新 DHCP 租赁权的频率，实例会在几个小时内自动拾取更改。如果您愿意，您也可以使用实例上的操作系统，直接更新租赁权。

**要使用控制台更改与 VPC 相关联的 DHCP 选项集**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Your VPCs**(您的 VPC)。

1. 选择 VPC 的复选框，然后依次选择 **Actions**（操作）、**Edit VPC settings**（编辑 VPC 设置）。

1. 对于 **DHCP options set**（DHCP 选项集），选择新的 DHCP 选项集。或者，选择**没有 DHCP 选项集**以禁用 VPC 的域名解析。

1. 选择**保存**。

**要使用命令行更改与 VPC 相关联的 DHCP 选项集**
+ [associate-dhcp-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-dhcp-options.html) (AWS CLI)
+ [Register-EC2DhcpOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2DhcpOption.html) (AWS Tools for Windows PowerShell)

## 删除 DHCP 选项集
<a name="DeletingaDHCPOptionSet"></a>

当您不再需要 DHCP 选项集时，您可以使按照以下步骤删除 DHCP 选项集。如果正在使用 DHCP 选项集，则无法将其删除。对于要删除的每个与 DHCP 选项集关联的 VPC，您必须将不同的 DHCP 选项集与该 VPC 关联或将 VPC 配置为不使用 DHCP 选项集。有关更多信息，请参阅 [更改与 VPC 关联的选项集。](#ChangingDHCPOptionsofaVPC)。

**要使用控制台删除 DHCP 选项集**

1. 通过 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 打开 Amazon VPC 控制台。

1. 在导航窗格中，选择 **DHCP option sets**（DHCP 选项集）。

1. 选择 DHCP 选项集的单选按钮，然后依次选择**操作**、**删除 DHCP 选项集**。

1. 提示进行确认时，输入 **delete**，然后**选择删除 DHCP 选项集**。

**要使用命令行删除 DHCP 选项集**
+ [delete-dhcp-options](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-dhcp-options.html) (AWS CLI)
+ [Remove-EC2DhcpOption](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2DhcpOption.html) (AWS Tools for Windows PowerShell)

# VPC 中的 DNS 属性
<a name="vpc-dns"></a>

域名系统 (DNS) 是 Internet 中名称使用的标准，以将名称解析到各自相应的 IP 地址。DNS 主机名是可以唯一并绝对区分计算机的名称；它由主机名和域名组成。DNS 服务器会将 DNS 主机名称解析到其相应的 IP 地址。

公有 IPv4 地址可实现 Internet 间的通信，而私有 IPv4 地址可实现实例网络内的通信。有关更多信息，请参阅 [为 VPC 和子网分配 IP 地址](vpc-ip-addressing.md)。

Amazon 为您的 VPC 提供 DNS 服务器（[Amazon Route 53 Resolver](AmazonDNS-concepts.md#AmazonDNS)）。要使用您自己的 DNS 服务器，请为您的 VPC 创建一组新的 DHCP 选项。有关更多信息，请参阅 [Amazon VPC 中的 DHCP 选项集](VPC_DHCP_Options.md)。

**Topics**
+ [了解 Amazon DNS](AmazonDNS-concepts.md)
+ [查看您的 EC2 实例的 DNS 主机名称](vpc-dns-viewing.md)
+ [查看和更新 VPC 的 DNS 属性](vpc-dns-updating.md)

# 了解 Amazon DNS
<a name="AmazonDNS-concepts"></a>

身为 AWS 架构师或管理员，您会遇到的一种基本联网组件是 Amazon DNS 服务器，也称为 Route 53 Resolver。此 DNS 解析器服务原生集成到您所在 AWS 区域的每个可用区中，可为虚拟私有云（VPC）中的域名解析提供可靠且可扩展的解决方案。在本节中，您会了解到 Amazon DNS 服务器的 IP 地址、Amazon DNS 服务器可以解析的私有 DNS 主机名以及管理着 Amazon DNS 服务器使用的规则。

**Topics**
+ [Amazon DNS 服务器](#AmazonDNS)
+ [规则和注意事项](#amazon-dns-rules)
+ [EC2 实例的 DNS 主机名称](#vpc-dns-hostnames)
+ [VPC 中的 DNS 属性](#vpc-dns-support)
+ [DNS 配额](#vpc-dns-limits)
+ [私有托管区域](#vpc-private-hosted-zones)

## Amazon DNS 服务器
<a name="AmazonDNS"></a>

Route 53 Resolver（也称“Amazon DNS 服务器”或“AmazonProvidedDNS”）是一种 DNS 解析程序服务，内置于 AWS 区域内的每个可用区中。Route 53 Resolver 位于 `169.254.169.253`（IPv4）、`fd00:ec2::253`（IPv6）以及预置到“VPC\$12”的主要私有 IPV4 CIDR 范围。例如，如果您 VPC 的 IPv4 CIDR 为 `10.0.0.0/16`、IPv6 CIDR 为 `2001:db8::/32`，则可通过 `169.254.169.253`（IPv4）、`fd00:ec2::253`（IPv6）或 `10.0.0.2`（IPv4）访问 Route 53 Resolver。VPC 内的资源使用[链路本地地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#link-local-addresses)进行 DNS 查询。这些查询会私下传输到 Route 53 Resolver，但在网络上不可见。在仅限 IPv6 子网中，只要“AmazonProvidedDNS”是 DHCP 选项集中的域名服务器，便仍可访问 IPv4 链路本地地址（169.254.169.253）。

当您将实例启动到 VPC 中时，我们会为该实例提供一个私有 DNS 主机名。如果该实例配置了一个公有 IPv4 地址并且启用了 VPC DNS 属性，我们还会提供一个公有 DNS 主机名。

私有 DNS 主机名的格式取决于您在启动 EC2 实例时如何配置它。有关私有 DNS 主机名类型的更多信息，请参阅《*Amazon EC2 用户指南*》中的 [Amazon EC2 实例主机名类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。

您的 VPC 中的 Amazon DNS 服务器用于解析您在 Route 53 中的私有托管区域中指定的 DNS 域名。有关私有托管区域的更多信息，请参阅 *Amazon Route 53 开发人员指南* 中的[使用私有托管区域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

## 规则和注意事项
<a name="amazon-dns-rules"></a>

使用 Amazon DNS 服务器时，适用以下规则和注意事项。
+ 您无法使用网络 ACL 或安全组筛选进出 Amazon DNS 服务器的流量。
+ 使用 Hadoop 框架的服务（如 Amazon EMR）要求实例解析自己的完全限定域名 (FQDN)。这种情况下，如果 `domain-name-servers` 选项设置为自定义值，则 DNS 解析可能会失败。要确保正确解析 DNS，请考虑在您的 DNS 服务器添加条件转发服务器，将针对域 `region-name.compute.internal` 的查询转发到 Amazon DNS 服务器。有关更多信息，请参阅 *Amazon EMR 管理指南*中的[设置 VPC 以托管集群](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-vpc-host-job-flows.html)。
+ Amazon Route 53 Resolver 只支持递归 DNS 查询。

## EC2 实例的 DNS 主机名称
<a name="vpc-dns-hostnames"></a>

当您启动实例时，实例始终会收到一个私有 IPv4 地址和一个与其私有 IPv4 地址对应的私有 DNS 主机名。如果您的实例具有公有 IPv4 地址，则该实例 VPC 的 DNS 属性决定实例是否接收与公有 IPv4 地址对应的公有 DNS 主机名。有关更多信息，请参阅 [VPC 中的 DNS 属性](#vpc-dns-support)。

启用 Amazon 提供的 DNS 服务器后，DNS 主机名按如下方式解析。

**私有 IPv4 DNS 名称**  
实例的私有 IPv4 DNS 主机名解析为私有 IPv4 地址。您可以使用私有 IPv4 DNS 主机名，在同一 VPC 中或连接的 VPC 中的实例之间进行通信。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[私有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-private-addresses)。

**公有 IPv4 DNS 名称**  
实例的公有 IPv4 DNS 主机名解析为（该实例网络外）的公有 IPv4 地址或（该实例网络内）的私有 IPv4 地址。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[公有 IPv4 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#concepts-public-addresses)。

要通过 VPC 对等连接将公有 IPv4 DNS 名称解析为私有 IPv4 地址，必须启用对等连接的 DNS 解析功能。有关更多信息，请参阅[实现对 VPC 对等连接的 DNS 解析](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-dns.html)。

**私有资源 DNS 名称**  
基于 RBN 的 DNS 名称，它可以解析为此实例选择的 A 和 AAAA DNS 记录。此 DNS 主机名在双堆栈和仅 IPv6 子网中的实例的实例详细信息中可见。有关 RBN 的更多信息，请参阅《Amazon EC2 用户指南》**中的 [EC2 实例主机名类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-naming.html)。

## VPC 中的 DNS 属性
<a name="vpc-dns-support"></a>

以下 VPC 属性决定了为您的 VPC 提供的 DNS 支持。如果两项属性均启用，则如果在创建时为启动到 VPC 内的实例分配了公有 IPv4 地址或弹性 IP 地址，则该实例会接收公有 DNS 主机名。如果您为之前未启用两项属性的 VPC 启用这两项属性，则已经启动至该 VPC 的实例将接收公有 DNS 主机名（如果它们具有公有 IPv4 地址或弹性 IP 地址）。

要检查是否为 VPC 启用了这些属性，请参阅[查看和更新 VPC 的 DNS 属性](vpc-dns-updating.md)。


| 属性 | 描述 | 
| --- | --- | 
| enableDnsHostnames |  确定 VPC 是否支持将公有 DNS 主机名分配给具有公有 IP 地址的实例。 除非 VPC 是默认 VPC，否则此属性的默认值为 `false`。请注意下面此属性的**规则和注意事项**。  | 
| enableDnsSupport |  确定 VPC 是否支持通过 Amazon 提供的 DNS 服务器进行 DNS 解析。 如果此属性是 `true`，对 Amazon 提供的 DNS 服务器的查询成功。有关更多信息，请参阅 [Amazon DNS 服务器](#AmazonDNS)。 此属性的默认值为 `true`。请注意下面此属性的**规则和注意事项**。  | 

**规则和注意事项**
+ 如果两个属性都设置为 `true`，则会发生以下情况：
  + 具有公有 IP 地址的实例会收到对应的公有 DNS 主机名。
  + Route 53 Resolver 服务器可以解析 Amazon 提供的私有 DNS 主机名。
+ 如果至少将某个属性设置为 `false`，将出现以下情况：
  + 具有公有 IP 地址的实例不会收到对应的公有 DNS 主机名。
  + Route 53 Resolver 无法解析 Amazon 提供的私有 DNS 主机名。
  + 如果 [DHCP 选项集](VPC_DHCP_Options.md)中存在自定义域名，则实例会收到自定义私有 DNS 主机名。如果未使用 Route 53 Resolver 服务器，您的自定义域名服务器必须正确解析主机名。
+ 如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名，或者使用具有接口 VPC 端点的私有 DNS (AWS PrivateLink)，则必须将 `enableDnsHostnames` 和 `enableDnsSupport` 属性设置为 `true`。
+ Route 53 Resolver 可以将私有 DNS 主机名解析为全部地址空间内的私有 IPv4 地址，包括您的 VPC 的 IPv4 地址范围不在 [RFC 1918](https://tools.ietf.org/html/rfc1918) 指定的私有 IPv4 地址范围内的情况。但是，如果您在 2016 年 10 月之前创建了 VPC，并且您的 VPC 的 IPv4 地址范围不在这些地址范围内，则 Route 53 Resolver 将无法解析私有 DNS 主机名。要支持这种情况，请联系 [支持](https://aws.amazon.com/contact-us/)。

## DNS 配额
<a name="vpc-dns-limits"></a>

对于使用[本地链路](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#link-local-addresses)地址的服务，每秒数据包数（PPS）限制为 1024 个。此限制是 Route 53 Resolver DNS 查询、[实例元数据服务（IMDS）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)请求、[Amazon Time Service 网络时间协议（NTP）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html)请求和 [Windows 许可服务（适用于基于 Microsoft Windows 的实例）](https://aws.amazon.com/windows/resources/licensing/)请求的总和。无法提高此配额。

由 Route 53 Resolver 支持的每秒 DNS 查询数量因查询类型、响应大小和所用协议而异。有关可扩展 DNS 架构的更多信息和建议，请参阅[具有 Active Directory 的 AWS 混合 DNS](https://d1.awsstatic.com/whitepapers/aws-hybrid-dns-with-active-directory.pdf) 技术指南。

如果您达到配额，Route 53 Resolver 将拒绝流量。达到配额的部分原因可能是 DNS 节流问题，或者是使用 Route 53 Resolver 网络接口的实例元数据查询。有关如何解决 VPC DNS 节流问题的信息，请参阅[如何确定我对 Amazon 提供的 DNS 服务器的 DNS 查询是否由于 VPC DNS 节流而失败](https://repost.aws/knowledge-center/vpc-find-cause-of-failed-dns-queries)。有关实例元数据检索的更多信息，请参阅《*Amazon EC2 用户指南*》中的[检索实例元数据](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html)。

## 私有托管区域
<a name="vpc-private-hosted-zones"></a>

要使用自定义 DNS 域名（如 `example.com`）而不是使用私有 IPv4 地址或AWS提供的私有 DNS 主机名来访问您的 VPC 中的资源，您可以在 Route 53 中创建一个私有托管区域。私有托管区域就是一个容器，其中包含的信息说明您希望如何在一个或多个 VPC 中为某个域及其子域路由流量而不将您的资源公开到 Internet。您可以创建 Route 53 资源记录集，用来确定 Route 53 将如何响应对您的域及其子域的查询。例如，如果您希望将对 example.com 的浏览器请求路由到您 VPC 中的某个 Web 服务器，可以在您的私有托管区域中创建一条 A 记录并指定该 Web 服务器的 IP 地址。有关创建私有托管区域的更多信息，请参阅 *Amazon Route 53 开发人员指南* 中的[使用私有托管区域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

要使用自定义 DNS 域名访问资源，必须连接到您的 VPC 中的实例。在您的实例中，您可通过使用 `ping` 命令来测试是否可从私有托管区域中的资源的自定义 DNS 名称访问该资源；例如，`ping mywebserver.example.com`。(您必须确保您的实例的安全组规则允许入站 ICMP 流量才能使 `ping` 命令正常运行。)

私有托管区域不支持 VPC 外的传递关系；例如，您不能使用资源的自定义私有 DNS 名称从 VPN 连接的另一端访问资源。

**重要**  
如果您使用在 Amazon Route 53 中的私有托管区域中定义的自定义 DNS 域名，则必须将 `enableDnsHostnames` 和 `enableDnsSupport` 属性设置为 `true`。

# 查看您的 EC2 实例的 DNS 主机名称
<a name="vpc-dns-viewing"></a>

您可以使用 Amazon EC2 控制台或命令行查看运行实例或网络接口的 DNS 主机名。知道这些主机名对于连接到您的资源非常重要。

为与实例关联的 VPC 启用了 DNS 选项时，**公有 DNS (IPv4)** 和**私有 DNS 字段**可用。有关更多信息，请参阅 [VPC 中的 DNS 属性](AmazonDNS-concepts.md#vpc-dns-support)。

## 实例
<a name="instance-dns"></a>

**使用控制台查看实例的 DNS 主机名称**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Instances (实例)**。

1. 从列表中选择您的 实例。

1. 在详细信息窗格中，**Public DNS (IPv4)** 和 **Private DNS** 字段显示 DNS 主机名 (如适用)。

**使用命令行查看实例的 DNS 主机名**
+ [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)（AWS CLI）
+ [Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html)AWS Tools for Windows PowerShell

## 网络接口
<a name="eni-dns"></a>

**使用控制台查看网络接口的私有 DNS 主机名**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Network Interfaces**。

1. 从列表中选择网络接口。

1. 在详细信息窗格中，**私有 DNS (IPv4)** 字段显示私有 DNS 主机名。

**使用命令行查看网络接口的 DNS 主机名**
+ [describe-network-interfaces](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-network-interfaces.html) (AWS CLI)
+ [Get-EC2NetworkInterface](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2NetworkInterface.html) (AWS Tools for Windows PowerShell)

# 查看和更新 VPC 的 DNS 属性
<a name="vpc-dns-updating"></a>

您可以通过 Amazon VPC 控制台查看并更新您的 VPC 中的 DNS 支持属性。这些设置控制着实例能否获得公有 DNS 主机名以及 Amazon DNS 服务器能否解析私有 DNS 名称。正确配置这些属性对于确保 VPC 内部的无缝通信至关重要。

**使用控制台描述和更新 VPC 的 DNS 支持**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Your VPCs**(您的 VPC)。

1. 选中该 VPC 的复选框。

1. 查看 **Details (详细信息)** 中的信息。在此示例中，已同时启用 **DNS hostnames (DNS 主机名)** 和 **DNS resolution (DNS 解析)**。  
![\[“DNS Settings (DNS 设置)”选项卡\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/dns-settings.png)

1. 要更新这些设置，请选择 **Actions**（操作），然后选择 **Edit VPC settings**（编辑 VPC 设置）。在相应的 DNS 属性上选择或清除 **Enable**（启用），然后选择 **Save changes**（保存更改）。

**使用命令行说明 VPC 的 DNS 支持**
+ [describe-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-attribute.html) (AWS CLI)
+ [Get-EC2VpcAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2VpcAttribute.html) (AWS Tools for Windows PowerShell)

**使用命令行更新 VPC 的 DNS 支持**
+ [modify-vpc-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-vpc-attribute.html) (AWS CLI)
+ [Edit-EC2VpcAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2VpcAttribute.html) (AWS Tools for Windows PowerShell)

# VPC 的网络地址用量
<a name="network-address-usage"></a>

网络地址用量（NAU）是应用于虚拟网络中资源的指标，可以帮助您规划和监控 VPC 的大小。每个 NAU 单元都会计入表示 VPC 大小的总数。

务必了解构成 VPC 的 NAU 单元总数，因为以下 VPC 限额会限制 VPC 的大小：
+ [网络地址用量](amazon-vpc-limits.md#vpc-size-limits) – 单个 VPC 可以拥有的最大 NAU 单元数。默认情况下，每个 VPC 最多可以有 64,000 个 NAU 单元。您可以请求将限额提高到 256,000。
+ [对等网络地址用量](amazon-vpc-limits.md#vpc-size-limits) – VPC 及其所有对等 VPC 的最大 NAU 单元数。如果一个 VPC 与同一区域中的其他 VPC 对等，则在默认情况下，组合的 VPC 最多可以有 128,000 个 NAU 单元。您可以请求将限额提高到 512,000。跨不同区域的对等 VPC 不会影响此限制。

您可以通过以下方式使用 NAU：
+ 在创建虚拟网络之前，计算 NAU 单元以帮助您决定是否应将工作负载分散到多个 VPC 上。
+ 创建 VPC 后，使用 Amazon CloudWatch 监控 VPC 的 NAU 用量，避免其超过 NAU 限额限制。有关更多信息，请参阅 [VPC 的 CloudWatch 指标](vpc-cloudwatch.md)。

## NAU 的计算方式
<a name="nau-calculation"></a>

了解 NAU 的计算方式可以帮助您进行 VPC 扩缩计划。

下表说明了构成 VPC 中 NAU 计数的资源，以及每种资源所使用的 NAU 单元数。部分 AWS 资源表示为单个 NAU 单元，部分资源表示为多个 NAU 单元。您可以使用该表来了解 NAU 的计算方式。


| 资源 | NAU 单元 | 
| --- | --- | 
| 分配给 VPC 中 EC2 实例网络接口的每个私有或公有 IPv4 地址以及每个 IPv6 地址 | 1 | 
| 附加到 EC2 实例的其他网络接口 | 1 | 
| 分配给网络接口的前缀 | 1 | 
| 每个 AZ 的网络负载均衡器 | 6 | 
| 每个可用区的网关负载均衡器 | 6 | 
| 每个 AZ 的 VPC 端点 | 6 | 
| 中转网关挂载 | 6 | 
| Lambda 函数 | 6 | 
| NAT 网关 | 6 | 
| EFS 挂载目标 | 6 | 
|  EFA 接口（带 ENA 设备的 EFA）或仅 EFA 的接口  | 1 | 
|  Amazon EKS 容器组（pod）  | 1 | 

## NAU 示例
<a name="nau-calculation-examples"></a>

以下示例说明了 NAU 的计算方式。

**示例 1 – 使用 VPC 对等连接的两个 VPC**  
同一区域中的对等 VPC 会占用 NAU 组合限额。
+ VPC 1
  + 2 个子网分布于独立的可用区内，有 50 个网络负载均衡器 – 600 个 NAU 单元
  + 一个子网中的 5,000 个实例（每个实例都具有一 IPv4 地址和 IPv6 地址），另一个子网中的 5,000 个实例（每个实例都具有 IPv4 地址和 IPv6 地址）- 20,000 个单位
  + 100 个 Lambda 函数 – 600 个 NAU 单元
+ VPC 2
  + 2 个子网分布于独立的可用区内，有 50 个网络负载均衡器 – 600 个 NAU 单元
  + 一个子网中的 5,000 个实例（每个实例都具有一 IPv4 地址和 IPv6 地址），另一个子网中的 5,000 个实例（每个实例都具有 IPv4 地址和 IPv6 地址）- 20,000 个单位
  + 100 个 Lambda 函数 – 600 个 NAU 单元
+ 对等 NAU 总数：42,400 个单元
+ 对等 NAU 默认限额：128,000 个单元

**示例 2 – 使用中转网关连接的两个 VPC**  
与对等 VPC 不同，使用中转网关连接的 VPC 不会占用 NAU 组合限额。
+ VPC 1
  + 2 个子网分布于独立的可用区内，有 50 个网络负载均衡器 – 600 个 NAU 单元
  + 一个子网中的 5,000 个实例（每个实例都具有一 IPv4 地址和 IPv6 地址），另一个子网中的 5,000 个实例（每个实例都具有 IPv4 地址和 IPv6 地址）- 20,000 个单位
  + 100 个 Lambda 函数 – 600 个 NAU 单元
+ VPC 2
  + 2 个子网分布于独立的可用区内，有 50 个网络负载均衡器 – 600 个 NAU 单元
  + 一个子网中的 5,000 个实例（每个实例都具有一 IPv4 地址和 IPv6 地址），另一个子网中的 5,000 个实例（每个实例都具有 IPv4 地址和 IPv6 地址）- 20,000 个单位
  + 100 个 Lambda 函数 – 600 个 NAU 单元
+ 每个 VPC 的 NAU 总数：21,200 个单元
+ 每个 VPC 的 NAU 默认限额：64,000 个单元

# 与其他账户共享 VPC 子网
<a name="vpc-sharing"></a>

VPC 子网共享允许多个 AWS 账户将其应用程序资源 [例如 Amazon EC2 实例、Amazon Relational Database Service（RDS）数据库、Amazon Redshift 集群和 AWS Lambda 函数] 创建到共享的集中管理式 Virtual Private Cloud（VPC）中。在此模型中，拥有 VPC 的账户（拥有者）与属于 AWS Organizations 中同一企业的其他账户（参与者）共享一个或多个子网。共享子网之后，参与者可以查看、创建、修改和删除与他们共享的子网中的应用程序资源。参与者无法查看、修改或删除属于其他参与者或 VPC 拥有者的资源。

您可以共享您的 VPC 子网，以针对需要高度互连且位于相同的信任边界内的应用程序，利用 VPC 内的隐式路由。这可减少您创建和管理的 VPC 数量，同时使用单独的账户进行计费和访问控制。您可以通过使用连接功能（例如 AWS PrivateLink、中转网关和 VPC 对等连接）互连共享的 Amazon VPC 子网来进一步简化网络拓扑。有关 VPC 子网共享优点的更多信息，请参阅 [VPC 共享：多账户和 VPC 管理的新方法](https://aws.amazon.com/blogs/networking-and-content-delivery/vpc-sharing-a-new-approach-to-multiple-accounts-and-vpc-management/)。

VPC 子网共享存在相关的限额。有关更多信息，请参阅 [VPC 子网共享](amazon-vpc-limits.md#vpc-share-limits)。

**Topics**
+ [共享子网的先决条件](vpc-share-prerequisites.md)
+ [使用共享子网](vpc-sharing-share-subnet-working-with.md)
+ [拥有者与参与者的计费和计量](vpc-share-billing.md)
+ [所有者和参与者的责任和权限](vpc-share-limitations.md)
+ [AWS 资源和共享 VPC 子网](vpc-sharing-service-behavior.md)

# 共享子网的先决条件
<a name="vpc-share-prerequisites"></a>

本节旨在介绍使用共享子网的先决条件：
+ VPC 所有者和参与者的账户必须由 AWS Organizations 管理。
+ 您必须从组织的管理账户在 AWS RAM 控制台中启用资源共享。有关更多信息，请参阅《AWS RAM 用户指南》**中的[允许在 AWS Organizations 内共享资源](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)。
+ 您必须创建一个资源共享。您可以在创建资源共享时指定要共享的子网，也可以稍后使用下一节中的过程将子网添加到资源共享中。有关更多信息，请参阅《*AWS RAM 用户指南*》中的 [Create a resource share](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-create)。

# 使用共享子网
<a name="vpc-sharing-share-subnet-working-with"></a>

本节旨在介绍如何在 AWS 控制台和 AWS CLI 中使用共享子网。

**Topics**
+ [共享子网](#vpc-sharing-share-subnet)
+ [将共享的子网取消共享](#vpc-sharing-stop-share-subnet)
+ [确定共享子网的拥有者](#vpc-sharing-view-owner)

## 共享子网
<a name="vpc-sharing-share-subnet"></a>

您可以与组织内的其他账户共享非默认子网，如下所示。此外，您还可以跨 AWS Organizations 共享安全组。有关更多信息，请参阅 [与 AWS Organizations 共享安全组](security-group-sharing.md)。

**使用控制台共享子网**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Subnets (子网)**。

1. 选择您的子网，然后选择**操作**、**共享子网**。

1. 选择您的资源共享，然后选择**共享子网**。

**使用 AWS CLI 共享子网**  
使用 [create-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html) 和 [associate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/associate-resource-share.html) 命令。

### 跨可用区映射子网
<a name="vpc-share-subnets-map-availability-zone"></a>

为确保资源分配到区域的各可用区，我们将可用区独立映射到每个账户的名称。例如，您的 `us-east-1a` 账户的可用区 AWS 可能与另一 `us-east-1a` 账户的 AWS 不在同一位置。

要跨账户协调可用区以便进行 VPC 共享，您必须使用 *AZ ID*（可用区的唯一、一致的标识符）。例如，`use1-az1` 为 `us-east-1` 区域中的其中一个可用区的 AZ ID。使用 AZ ID 确定一个账户中的资源相对于另一个账户的位置。您可以在 Amazon VPC 控制台中查看每个子网的 AZ ID。

下图阐明了两个账户，它们具有不同的可用区代码到 AZ ID 的映射。

![\[两个账户，它们具有不同的可用区代码到 AZ ID 的映射。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/availability-zone-mapping.png)


## 将共享的子网取消共享
<a name="vpc-sharing-stop-share-subnet"></a>

拥有者随时可以将与参与者共享的子网取消共享。在拥有者将共享的子网取消共享后，将应用以下规则：
+ 现有参与者资源将继续在已取消共享的子网中运行。具有自动化/托管工作流（如auto 扩展或节点替换）的 AWS 托管服务（例如，Elastic Load Balancing）可能需要持续访问某些资源的共享子网。
+ 参与者在已取消共享的子网中无法再创建新资源。
+ 参与者可以修改、描述和删除其位于子网中的资源。
+ 如果参与者在已取消共享的子网中仍具有资源，则拥有者无法删除共享子网或共享子网 VPC。仅当参与者删除已取消共享的子网中的所有资源之后，拥有者才能删除子网或共享子网 VPC。

**使用控制台取消共享子网**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Subnets (子网)**。

1. 选择您的子网，然后选择**操作**、**共享子网**。

1. 依次选择**操作**、**停止共享**。

**使用 AWS CLI 取消共享子网**  
使用 [disassociate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html) 命令。

## 确定共享子网的拥有者
<a name="vpc-sharing-view-owner"></a>

参与者可以通过使用 Amazon VPC 控制台或命令行工具来查看已与其共享的子网。

**使用控制台确定子网拥有者**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Subnets (子网)**。**拥有者**列显示子网拥有者。

**使用 AWS CLI 确定子网拥有者**  
使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 和 [describe-vpcs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpcs.html) 命令，这两条命令的输出中将包括拥有者的 ID。

# 拥有者与参与者的计费和计量
<a name="vpc-share-billing"></a>

本节旨在介绍面向共享子网的拥有者与共享子网的使用者的计费和计量详细信息：
+ 在共享 VPC 中，每个参与者为其应用程序资源付费，包括 Amazon EC2 实例、Amazon Relational Database Service 数据库、Amazon Redshift 集群和 AWS Lambda 函数。参与者还支付与可用区间数据传输以及跨 VPC 对等连接、跨互联网网关和跨 AWS Direct Connect 网关的数据传输关联的数据传输费用。
+ VPC 拥有者支付每小时费用（如果适用），跨 NAT 网关、虚拟私有网关、中转网关、AWS PrivateLink 和 VPC 终端节点的数据处理和数据传输费用。此外，共享 VPC 中使用的公有 IPv4 地址将向 VPC 所有者收费。有关公有 IPv4 地址定价的更多信息，请参阅 [Amazon VPC 定价页面](https://aws.amazon.com/vpc/pricing/)中的**公有 IPv4 地址定价**选项卡。
+ 在同一个可用区域（使用 AZ-ID 进行唯一标识）内数据传输是免费的，而不考虑通信资源的账户所有权。

# 所有者和参与者的责任和权限
<a name="vpc-share-limitations"></a>

本节旨在详细介绍拥有共享子网之人（拥有者）与使用共享子网之人（参与者）的责任和权限。

## 拥有者资源
<a name="vpc-owner-permissions"></a>

拥有者对其拥有的 VPC 资源负责。VPC 拥有者负责创建、管理和删除与共享 VPC 相关的资源。其中包括子网、路由表、网络 ACL、对等连接、网关端点、接口端点、Route 53 Resolver 端点、互联网网关、NAT 网关、虚拟私有网关和中转网关连接。

## 参与者资源
<a name="vpc-participant-permissions"></a>

参与者对其拥有的 VPC 资源负责。参与者可以在共享 VPC 中创建一组有限的 VPC 资源。例如，参与者可以创建网络接口和安全组，此外还可为其拥有的网络接口启用 VPC 流日志。参与者创建的 VPC 资源将计入参与者账户中的 VPC 限额，而不是所有者账户的限额。有关更多信息，请参阅 [VPC 子网共享](amazon-vpc-limits.md#vpc-share-limits)。

## VPC 资源
<a name="vpc-resource-permissions"></a>

使用共享 VPC 子网时，以下责任和权限适用于 VPC 资源：

**流日志**
+ 参与者可以在共享 VPC 子网中为他们拥有的网络接口创建、删除和描述流日志。
+ 参与者不能在共享 VPC 子网中为他们不拥有的网络接口创建、删除或描述流日志。
+ 参与者不能为共享 VPC 子网创建、删除或描述流日志。
+ VPC 所有者能在共享 VPC 子网中为他们不拥有的网络接口创建、删除和描述流日志。
+ VPC 所有者能为共享 VPC 子网创建、删除和描述流日志。
+ VPC 所有者无法描述或删除参与者创建的流日志。

**互联网网关和仅出口互联网网关**
+ 参与者无法在共享 VPC 子网中创建、附加或删除互联网网关和仅出口互联网网关。参与者可以在共享 VPC 子网中描述互联网网关。参与者无法在共享 VPC 子网中描述仅出口互联网网关。

**NAT 网关**
+ 参与者无法在共享 VPC 子网中创建、删除或描述 NAT 网关。

**网络访问控制列表（NACL）**
+  参与者无法在共享 VPC 子网中创建、删除或替换 NACL。参与者可以在共享 VPC 子网中描述 VPC 所有者创建的 NACL。

**网络接口**
+ 参与者可以在共享 VPC 子网中创建网络接口。参与者无法以任何其他方式（例如附加、分离或修改网络接口）在共享 VPC 子网中使用 VPC 所有者创建的网络接口。参与者可以在他们创建的共享 VPC 中修改或删除网络接口。例如，参与者可以将 IP 地址与他们创建的网络接口关联或解除关联。
+ VPC 所有者可以在共享 VPC 子网中描述参与者拥有的网络接口。VPC 所有者无法以任何其他方式（例如附加、分离或修改网络接口）在共享 VPC 子网中使用参与者拥有的网络接口。

**路由表**
+ 参与者无法在共享 VPC 子网中使用路由表（例如，创建、删除或关联路由表）。参与者可以在共享 VPC 子网中描述路由表。

**安全组**
+ 参与者可以在共享 VPC 子网中使用其拥有的安全组（创建、删除、描述、修改或创建传入和传出规则）。如果 [VPC 所有者与参与者共享安全组](security-group-sharing.md)，则参与者可以使用 VPC 所有者创建的安全组。
+ 参与者可以在其拥有的安全组中创建规则，并引用属于其他参与者或 VPC 所有者的安全组，如下所示：account-number/security-group-id 
+ 参与者无法使用 VPC 的默认安全组启动实例，因为此安全组属于所有者。
+ 参与者无法使用 VPC 所有者或其他参与者拥有的非默认安全组启动实例，除非[与他们共享](security-group-sharing.md)安全组。
+ VPC 所有者可以在共享 VPC 子网中描述参与者创建的安全组。VPC 所有者无法以任何其他方式使用参与者创建的安全组。例如，VPC 所有者无法使用参与者创建的安全组启动实例。

**子网**
+  参与者无法修改共享子网或这些子网的相关属性。只有 VPC 所有者可以。参与者可以在共享 VPC 子网中描述子网。
+  VPC 所有者只能通过 AWS Organizations 与同一组织的其他账户或组织单位共享子网。VPC 所有者无法共享位于默认 VPC 中的子网。

**中转网关**
+ 只有 VPC 所有者可以将中转网关附加到共享 VPC 子网。参与者不能。

**VPC**
+  参与者无法修改 VPC 或 VPC 的相关属性。只有 VPC 所有者可以。参与者可以描述 VPC、VPC 属性和 DHCP 选项集。
+  VPC 标签和共享 VPC 内资源的标签不会与参与者共享。
+ 参与者可以将自己的安全组与共享 VPC 关联。这样参与者便可将安全组与其在共享 VPC 中拥有的弹性网络接口一起使用。

# AWS 资源和共享 VPC 子网
<a name="vpc-sharing-service-behavior"></a>

以下 AWS 服务 支持共享 VPC 子网中的资源。有关更多信息，请访问相应服务文档的链接。
+ [Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Shared_subnets)
+ [AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_ReplicationInstance.VPC.html#CHAP_ReplicationInstance.VPC.Configurations.ScenarioVPCShared)
+ [Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#ec2-shared-VPC-subnets)
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-regions-zones.html)
+ Amazon ElastiCache（Redis OSS）
+ [Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/mount-fs-diff-account-same-vpc.html)
+ [Amazon Elastic Kubernetes Service](https://docs.aws.amazon.com/eks/latest/userguide/network-reqs.html#network-requirements-shared)
+ Elastic Load Balancing
  + [应用程序负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-register-targets.html#register-targets-shared-subnets)
  + [网关负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html#prerequisites)
  + [网络负载均衡器](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/target-group-register-targets.html#register-targets-shared-subnets)
+ [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-clusters-in-a-vpc.html#emr-vpc-shared-subnet)
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/shared-vpc.html)
+ AWS Lambda
+ 运行 Apache MQ（而非 Rabbit MQ）的 Amazon MQ
+ Amazon MSK
+ AWS Network Manager
  + [AWS Cloud WAN](https://docs.aws.amazon.com/network-manager/latest/cloudwan/cloudwan-vpc-attachment.html#cloudwan-vpc-attachments-shared-subnets)
  + [网络访问分析器](https://docs.aws.amazon.com/vpc/latest/network-access-analyzer/how-network-access-analyzer-works.html#analyzer-limitations)
  + [Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/how-reachability-analyzer-works.html#considerations)
+ Amazon OpenSearch Service
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#interface-endpoint-shared-subnets)†
+ [Amazon Relational Database Service (RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html#USER_VPC.Shared_subnets)
+ [Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/rs-shared-subnet-vpc.html)
+ [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zone-private-associate-vpcs-different-accounts.html)
+ [Amazon SageMaker 融通式合作开发工作室](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/adminguide/create-domain-sagemaker-unified-studio-quick.html)
+ [AWS Transit Gateway](https://docs.aws.amazon.com/vpc/latest/tgw/working-with-transit-gateways.html#transit-gateway-shared-subnets)
+ [AWS Verified Access](https://docs.aws.amazon.com/verified-access/latest/ug/verified-access-endpoints.html#shared-vpc)
+ Amazon VPC
  + [对等连接](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-basics.html#vpc-peering-limitations)
  + [流量镜像](https://docs.aws.amazon.com/vpc/latest/mirroring/traffic-mirroring-network-limitations.html)
+ [Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/create-target-group.html#target-group-shared-subnets)

† 您可以使用共享 VPC 中的 VPC 端点连接到支持 PrivateLink 的所有 AWS 服务。有关支持 PrivateLink 的服务列表，请参阅《*AWS PrivateLink 指南*》中的[与 AWS PrivateLink 集成的 AWS 服务](https://docs.aws.amazon.com/vpc/latest/privatelink/aws-services-privatelink-support.html)。

此列表旨在列出所有支持在共享 VPC 子网中启动资源的服务。尽管我们已尽最大努力，但仍可能还有其他未在此列出的服务支持在共享 VPC 子网中启动资源。如有疑问，建议您提交文档反馈。

# 将 VPC 扩展到本地区域、Wavelength 区域或 Outpost
<a name="Extend_VPCs"></a>

您可以在全球多个位置托管 VPC 资源（如子网）。这些位置由“区域”、“可用区”、“本地区域”和“Wavelength 区域”组成。每个*区域*都是一个单独的地理区域。
+ 可用区是每个区域内的多个相互隔离的位置。
+ 本地区域允许您在多个离终端用户较近的位置放置资源（如计算和存储）。
+ AWS Outposts 可将本机 AWS 服务、基础设施和运营模式引入几乎任何数据中心、主机托管空间或本地设施。
+ 利用 Wavelength 区域，开发人员可以为 5G 设备和最终用户打造具有超低延迟的应用程序。Wavelength 可以将标准 AWS 计算和存储服务部署到电信运营商的 5G 网络边缘。

AWS运行着具有高可用性的先进数据中心。数据中心有时会发生影响托管于同一位置的所有实例的可用性的故障，虽然这种故障极少发生。如果您将所有实例都托管在受故障影响的同一个位置，则您的所有实例都将不可用。

# AWS Local Zones 中的子网
<a name="local-zone"></a>

AWS Local Zones 允许您在靠近用户的位置放置资源，并且使用熟悉的 API 和工具集无缝连接到 AWS 区域中的各种服务。当您在本地区域中创建子网时，您也会将 VPC 扩展到该本地区域。

要使用 Local Zone，您需要遵循以下流程：
+ 选择加入 Local Zone。
+ 在本地扩展区中创建子网。
+ 在 Local Zone 子网中启动资源，以确保您的应用程序靠近用户。

下图演示的 VPC 位于美国西部（俄勒冈州）(`us-west-2`) 区域，横跨多个可用区和一个 Local Zone。

![\[横跨多个可用区和一个 Local Zone 的 VPC。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/region-with-lzs.png)


创建 VPC 时，您可以选择为 VPC 分配一组由 Amazon 提供的公有 IP 地址。您还可以为这些地址设置网络边界组，以将地址限制到该组。设置网络边界组时，IP 地址不能在网络边界组间移动。本地区域网络流量将直接进入互联网或接入网点 (PoP)，无需遍历本地区域的父区域，从而能够访问低延迟计算。对于 Local Zones 及其相应父区域的完整列表，请参阅 *AWS Local Zones 用户指南*中的[可用的 Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/available-local-zones.html)。

以下规则适用于本地区域：
+ 本地区域子网遵循与可用区子网相同的路由规则，包括路由表、安全组和网络 ACL。
+ 出站互联网流量从本地区域内部离开。
+ 您必须预配置公有 IP 地址以便在本地区域中使用。分配地址时，您可以指定通告其中 IP 地址的位置。我们将其称为网络边界组，您可以设置此参数，将地址限制到此位置。预置 IP 地址后，您无法在本地区域与父区域之间移动这些地址（例如，从 `us-west-2-lax-1a` 到 `us-west-2`）。
+ 如果 Local Zone 支持 IPv6，您可以请求 Amazon 提供的 IPv6 IP 地址，并将其与新 VPC 或现有 VPC 的网络边界组关联。有关支持 IPv6 的 Local Zones 列表，请参阅 *AWS Local Zones 用户指南*中的[注意事项](https://docs.aws.amazon.com/local-zones/latest/ug/how-local-zones-work.html#considerations)
+ 您无法在 Local Zone 子网内创建 VPC 端点。

有关使用 Local Zones 的更多信息，请参阅 [AWS Local Zones 用户指南](https://docs.aws.amazon.com/local-zones/latest/ug/)。

## 互联网网关的注意事项
<a name="internet-gateway-local-zone-considerations"></a>

在本地区域中使用（父区域中的）互联网网关时，请考虑以下信息：
+ 您可以在本地区域中使用具有弹性 IP 地址或 Amazon 自动分配的公有 IP 地址的互联网网关。您关联的弹性 IP 地址必须包括本地区域的网络边界组。有关更多信息，请参阅 [将弹性 IP 地址关联到 VPC 中的资源](vpc-eips.md)。

  您不能关联为该区域设置的弹性 IP 地址。
+ 本地区域中使用的弹性 IP 地址与区域中的弹性 IP 地址在配额上相同。有关更多信息，请参阅 [弹性 IP 地址](amazon-vpc-limits.md#vpc-limits-eips)。
+ 您可以在与本地区域资源关联的路由表中使用互联网网关。有关更多信息，请参阅 [路由到互联网网关](route-table-options.md#route-tables-internet-gateway)。

## 使用 Direct Connect 网关访问本地区域
<a name="access-local-zone"></a>

考虑一下您希望本地数据中心访问本地扩展区中的资源的情况。您可以将虚拟私有网关用于与本地区域关联的 VPC，以连接到 Direct Connect 网关。Direct Connect 网关连接到区域中的 Direct Connect 站点。本地部署数据中心拥有与该 Direct Connect 位置的 Direct Connect 连接。

**注意**  
使用 Direct Connect 发往本地区域子网的流量不会通过本地区域的父区域。相反，流量会采用最短路径到达本地区域。这可以减少延迟，并有助于提高应用程序的响应速度。

对于此配置，可以配置以下资源：
+ 与本地扩展区子网关联的 VPC 的虚拟私有网关。您可以在 Amazon VPC 控制台的子网详细信息页面上查看子网的 VPC，也可以使用 [describe-subnets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-subnets.html) 命令。

  有关如何创建虚拟私有网关的信息，请参阅《*AWS Site-to-Site VPN 用户指南*》中的[创建目标网关](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html#vpn-create-target-gateway)。
+ Direct Connect 连接。为了获得最佳延迟性能，AWS 建议您使用要将子网扩展到的最靠近本地区域的 Direct Connect 站点。

  有关如何订购连接的信息，请参阅《*Direct Connect 用户指南*》中的[交叉连接](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Colocation.html#cross-connect-us-west-1)。
+ 一个 Direct Connect 网关。有关如何创建 Direct Connect 网关的信息，请参阅《*Direct Connect 用户指南*》中的[创建 Direct Connect 网关](https://docs.aws.amazon.com/directconnect/latest/UserGuide/direct-connect-gateways-intro.html#create-direct-connect-gateway)。
+ 将 VPC 连接到 Direct Connect 网关的虚拟私有网关关联。有关如何创建虚拟私有网关关联的信息，请参阅《*Direct Connect 用户指南*》中的[关联和取消关联虚拟私有网关](https://docs.aws.amazon.com/directconnect/latest/UserGuide/virtualgateways.html#associate-vgw-with-direct-connect-gateway)。
+ 从 Direct Connect 站点到本地部署数据中心的连接上的私有虚拟接口。有关如何创建 Direct Connect 网关的信息，请参阅《*Direct Connect 用户指南*》中的[创建到 Direct Connect 网关的私有虚拟接口](https://docs.aws.amazon.com/directconnect/latest/UserGuide/virtualgateways.html#create-private-vif-for-gateway)。

## 将本地扩展区子网连接到中转网关
<a name="connect-local-zone-tgw"></a>

您无法为本地区域中的子网创建中转网关连接。下图显示了如何配置网络，以便本地区域中的子网通过父可用区连接到中转网关。在本地区域中创建子网，并在父可用区中创建子网。将父可用区域中的子网连接到中转网关，然后在路由表中为每个 VPC 创建一个路由，该路由将用于其他 VPC CIDR 的流量路由到中转网关连接的网络接口。

**注意**  
从中转网关发往本地区域中子网的流量将首先遍历父区域。

![\[本地扩展区到中转网关\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/lz-tgw.png)


为此场景创建以下资源：
+ 每个父可用区中的子网。有关更多信息，请参阅 [创建子网](create-subnets.md)。
+ 中转网关。有关更多信息，请参阅 *Amazon VPC Transit Gateway* 中的[创建中转网关](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-transit-gateways.html#create-tgw)。
+ 使用父可用区的每个 VPC 的中转网关连接。有关更多信息，请参阅《*Amazon VPC Transit Gateway*》中的 [Create a transit gateway attachment to a VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html#create-vpc-attachment)。
+ 与中转网关连接关联的中转网关路由表。有关更多信息，请参阅 *Amazon VPC Transit Gateway*中的[中转网关路由表](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html)。
+ 对于每个 VPC，在本地区域子网的子网路由表中创建一个条目，该条目需将另一个 VPC CIDR 作为目的地，并将中转网关连接的网络接口 ID 作为目标。要查找中转网关连接的网络接口，请在网络接口的说明中搜索中转网关连接的 ID。有关更多信息，请参阅 [中转网关的路由](route-table-options.md#route-tables-tgw)。

以下是 VPC 1 的示例路由表。


| 目标位置 | 目标 | 
| --- | --- | 
|  *VPC 1 CIDR*  |  *本地*  | 
|  *VPC 2 CIDR*  |  *vpc1-attachment-network-interface-id*  | 

以下是 VPC 2 的示例路由表。


| 目标位置 | 目标 | 
| --- | --- | 
|  *VPC 2 CIDR*  |  *本地*  | 
|  *VPC 1 CIDR*  | vpc2-attachment-network-interface-id | 

以下是中转网关路由表的示例。每个 VPC 的 CIDR 块将传播到中转网关路由表。


| CIDR | 附件 | 路由类型 | 
| --- | --- | --- | 
|  *VPC 1 CIDR*  |  *VPC 1 的挂载*  |  传播  | 
|  *VPC 2 CIDR*  |  *VPC 2 的挂载*  |  传播  | 

# AWS Wavelength 中的子网
<a name="subnet-wavelength"></a>

利用 *AWS Wavelength*，开发人员可以为移动设备和最终用户打造具有超低延迟的应用程序。Wavelength 可以将标准 AWS 计算和存储服务部署到电信运营商的 5G 网络边缘。开发人员可以将虚拟私有云（VPC）扩展到一个或多个 Wavelength Zone，然后使用 Amazon EC2 实例等 AWS 资源来运行需要超低延迟并连接到区域中的 AWS 服务的应用程序。

要使用 Wavelength 区域，必须首先选择加入区域。接下来，在 Wavelength 区域中创建子网。您可以在 Wavelength 区域中创建 Amazon EC2 实例、Amazon EBS 卷和 Amazon VPC 子集和 Carrier Gateway。此外，您还可以使用通过 EC2、EBS 和 VPC 编排或搭配使用的服务，如 Amazon EC2 Auto Scaling、Amazon EKS 集群、Amazon ECS 集群、Amazon EC2 Systems Manager、Amazon CloudWatch、AWS CloudTrail 和 CloudFormation。Wavelength 中的服务是 VPC 的一部分，它通过可靠的高带宽连接至 AWS 区域，以便轻松访问包括 Amazon DynamoDB 和 Amazon RDS 在内的服务。

以下规则适用于 Wavelength 区域：
+ 当您在 VPC 中创建子网并将其与 Wavelength 区域关联时，VPC 将扩展到 Wavelength 区域。
+ 默认情况下，您在跨越某个 Wavelength 区域的 VPC 中创建的每个子网都会继承主 VPC 路由表，包括本地路由。
+ 当您在 Wavelength 区域的子网中启动 EC2 实例时，您将为其分配运营商 IP 地址。运营商网关将地址用于从接口到 Internet 或移动设备的流量。运营商网关使用 NAT 转换地址，然后将流量发送到目的地。来自电信运营商网络的流量通过运营商网关路由。
+ 您可以将 VPC 路由表或 Wavelength 区域中的子网路由表的目标设置为运营商网关，从而允许来自特定位置的运营商网络的入站流量，以及向运营商网络和 Internet 发送出站流量。有关 Wavelength 区域中的路由选项的更多信息，请参阅《*AWS Wavelength 开发人员指南*》中的[路由](https://docs.aws.amazon.com/wavelength/latest/developerguide/how-wavelengths-work.html#wavelength-routing-overview)。
+ Wavelength 区域中的子网与可用区中的子网具有相同的网络组件，包括 IPv4 地址、DHCP 选项集和网络 ACL。
+ 您无法为 Wavelength 区域中的子网创建中转网关连接。但可以通过父可用区中的子网创建附件，然后通过 Transit Gateway 将流量路由到所需目的地。有关示例，请参阅下一节。

## 存在多个 Wavelength 区域时的注意事项
<a name="multiple-wavelength-zones"></a>

不允许位于同一 VPC 中不同 Wavelength 区域内的 EC2 实例之间相互通信。如果您需要在不同 Wavelength 区域之间进行通信，AWS 建议您使用多个 VPC，每个 Wavelength 区域一个。您可以使用中转网关连接这些 VPC。此配置允许这些 Wavelength 区域中的实例之间相互通信。

Wavelength 区域到 Wavelength 区域的流量传输会经过 AWS 区域。有关更多信息，请参阅 [AWS Transit Gateway](https://aws.amazon.com/transit-gateway/)。

下图显示了如何配置网络以支持两个不同 Wavelength 区域中的实例相互通信。您有两个 Wavelength 区域（Wavelength 区域 A 和 Wavelength 区域 B）。您需要创建以下资源才能支持通信：
+ 对于每个 Wavelength 区域，创建一个位于其父可用区中的子网。在示例中，您创建了子网 1 和子网 2。有关创建子网的信息，请参阅 [创建子网](create-subnets.md)。使用 [describe-availability-zones](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-availability-zones.html) 命令查找父区域。
+ 中转网关。中转网关连接 VPC。有关如何创建中转网关的信息，请参阅《*Amazon VPC Transit Gateway 指南*》中的[创建中转网关](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-transit-gateways.html#create-tgw)。
+ 对于每个 VPC，VPC 挂载到 Wavelength 区域父可用区的 Transit Gateway 中。有关更多信息，请参阅《*Amazon VPC Transit Gateway 指南*》中的 [Transit gateway attachments to a VPC](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-vpc-attachments.html)。
+ 中转网关路由表中每个 VPC 的条目。有关如何创建 Transit Gateway 路由的信息，请参阅《*Amazon VPC Transit Gateway 指南*》中的[中转网关路由表](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-route-tables.html)。
+ 对于每个 VPC，在 VPC 路由表中创建一个条目，该条目需将另一个 VPC CIDR 作为目的地，并将中转网关 ID 作为目标。有关更多信息，请参阅 [中转网关的路由](route-table-options.md#route-tables-tgw)。

  在示例中，VPC 1 的路由表包含以下条目：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/subnet-wavelength.html)

  VPC 2 的路由表包含以下条目：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/subnet-wavelength.html)

![\[多个 Wavelength 区域\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/mult-wavelength-zones.png)


# AWS Outposts 中的子网
<a name="outposts"></a>

AWS Outposts 为您提供相同的 AWS 硬件基础设施、服务、API 和工具，用于在本地和云中构建并运行您的应用程序。AWS Outposts 非常适合需要以低延迟方式访问本地应用程序或系统的工作负载，以及需要在本地存储和处理数据的工作负载。有关 AWS Outposts 的更多信息，请参阅。[AWS Outposts](https://aws.amazon.com/outposts/)

VPC 涵盖一个 AWS 区域中的所有可用区。将您的 Outpost 连接到其父级区域后，您可以在该 VPC 中为您的 Outpost 创建子网，从而将该区域中的所有 VPC 都扩展到您的 Outpost。

以下规则适用于 AWS Outposts：
+ 子网必须位于一个 Outposts 位置。
+ 要为 Outpost 创建子网，请在创建子网时指定 Outpost 的Amazon 资源名称（ARN）。
+ Outposts 机架 – 由本地网关处理 VPC 与本地网络之间的网络连接。有关更多信息，请参阅《AWS Outposts 用户指南》中的 [本地网关](https://docs.aws.amazon.com/outposts/latest/userguide/outposts-local-gateways.html)**。
+ Outposts 服务器 – 由本地网络接口处理 VPC 与本地网络之间的网络连接。有关更多信息，请参阅《适用于 Outposts 服务器的 AWS Outposts 用户指南》中的 [本地网络接口](https://docs.aws.amazon.com/outposts/latest/server-userguide/local-network-interface.html)**。
+ 默认情况下，您在 VPC 中创建的每个子网（包括为您的 Outpost 创建的子网），都会隐式与 VPC 的主路由表关联。您还可以将自定义路由表与 VPC 中的子网显式关联，并将本地网关作为指向本地网络的所有流量的下一跳目标。

![\[具有可用区和 Outpost 的 VPC。\]](http://docs.aws.amazon.com/zh_cn/vpc/latest/userguide/images/region-with-outpost.png)


# 删除您的 VPC
<a name="delete-vpc"></a>

用完 VPC 后可以将其删除。

**要求**  
在删除 VPC 之前，必须先终止或删除在 VPC 中创建了[请求者托管式网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/requester-managed-eni.html)的任何资源。例如，您必须终止 EC2 实例并删除负载均衡器、NAT 网关、中转网关 VPC 挂载和接口 VPC 端点。

**注意**  
如果您已为要删除的 VPC 创建了[流日志](flow-logs.md)，请注意，已删除的 VPC 的流日志最终会自动删除。

**Topics**
+ [使用控制台删除 VPC](#delete-vpc-console)
+ [使用命令行删除 VPC](#delete-vpc-cli)

## 使用控制台删除 VPC
<a name="delete-vpc-console"></a>

如果您使用 Amazon VPC 控制台删除 VPC，我们还会为您删除以下 VPC 组件：
+ DHCP 选项
+ 仅出口互联网网关
+ 网关端点
+ 互联网网关
+ 网络 ACL
+ 路由表
+ 安全组
+ 子网

**使用控制台删除 VPC**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 终止 VPC 中的所有实例。有关更多信息，请参阅《*Amazon EC2 用户指南*》中的[终止实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)。

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择 **Your VPCs**（您的 VPC）。

1. 选择要删除的 VPC，然后依次选择 **Actions**（操作）、**Delete VPC**（删除 VPC）。

1. 如果存在您必须首先删除或终止的资源，然后我们才能删除 VPC，则我们会显示这些资源。请删除或终止这些资源，然后重试。否则，我们将显示除 VPC 之外还要删除的资源。检查列表，然后继续执行下一步操作。

1. （可选）如果您有 Site-to-Site VPN 连接，则可以选择此选项以将其删除。如果您计划在另一个 VPC 中使用客户网关，我们建议您保留 Site-to-Site VPN 连接和网关。否则，您必须在创建新的 Site-to-Site VPN 连接后再次配置客户网关设备。

1. 提示进行确认时，输入 **delete**，然后选择 **Delete**（删除）。

## 使用命令行删除 VPC
<a name="delete-vpc-cli"></a>

在使用命令行删除 VPC 之前，必须先终止或删除在 VPC 中创建了请求者托管式网络接口的任何资源。您还必须删除或分离您创建的所有资源，例如子网、安全组、网络 ACL、路由表、互联网网关和仅限出口的互联网网关。您无需删除默认安全组、默认路由表或默认网络 ACL。

以下过程演示了用于删除常见 VPC 资源，然后删除 VPC 的命令。您必须按照以下顺序使用这些命令。如果您创建了其他 VPC 资源，则还需要使用其相应的删除命令，然后才能删除 VPC。

**使用 AWS CLI 删除 VPC**

1. 使用 [delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html) 命令删除安全组。

   ```
   aws ec2 delete-security-group --group-id sg-id
   ```

1. 使用 [delete-network-acl](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-network-acl.html) 命令删除每个网络 ACL。

   ```
   aws ec2 delete-network-acl --network-acl-id acl-id
   ```

1. 使用 [delete-subnet](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-subnet.html) 命令删除每个子网。

   ```
   aws ec2 delete-subnet --subnet-id subnet-id
   ```

1. 使用 [delete-route-table](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-route-table.html) 命令删除每个自定义路由表。

   ```
   aws ec2 delete-route-table --route-table-id rtb-id
   ```

1. 使用 [detach-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/detach-internet-gateway.html) 命令将互联网网关与 VPC 分离。

   ```
   aws ec2 detach-internet-gateway --internet-gateway-id igw-id --vpc-id vpc-id
   ```

1. 使用 [delete-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-internet-gateway.html) 命令删除互联网网关。

   ```
   aws ec2 delete-internet-gateway --internet-gateway-id igw-id
   ```

1. [双堆栈 VPC] 使用 [delete-egress-only-internet-gateway](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-egress-only-internet-gateway.html) 命令删除仅限出口的互联网网关。

   ```
   aws ec2 delete-egress-only-internet-gateway --egress-only-internet-gateway-id eigw-id
   ```

1. 使用 [delete-vpc](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc.html) 命令删除 VPC。

   ```
   aws ec2 delete-vpc --vpc-id vpc-id
   ```

# 使用 Console-to-Code，通过您的 VPC 控制台操作生成基础设施即代码
<a name="vpcs-automate-c2c"></a>

控制台提供了一条用来创建资源和测试原型的引导式路径。如果希望大规模创建相同的资源，则您需要使用自动化代码。Console-to-Code 是 Amazon Q 开发者版的一项功能，可以帮助您开始使用自动化代码。Console-to-Code 会记录您的控制台操作，包括默认值和兼容参数。随后，其利用生成式人工智能，以您首选的基础设施即代码（IaC）格式，为您要执行的操作提供代码建议。由于控制台工作流程可确保您指定的参数值同时有效，因此，您使用 Console-to-Code 生成的代码具有兼容的参数值。您可以将此代码用作一个起点，然后对其进行自定义，以使它可用于您的特定使用案例的生产。

例如，通过 Console-to-Code，您可以使用 VPC 控制台记录自己创建子网、安全组、NACL、自定义路由表和互联网网关，并生成 CloudFormation JSON 格式的代码。然后，您可以复制该代码并对其进行自定义，以便在 CloudFormation 模板中使用。

Console-to-Code 目前能够以下列语言和格式生成基础设施即代码（IaC）：
+ CDK Java
+ CDK Python
+ CDK TypeScript
+ CloudFormation JSON
+ CloudFormation YAML

有关如何使用 Console-to-Code 的更多信息和说明，请参阅《Amazon Q Developer User Guide》**中的 [Automating AWS services with Amazon Q Developer Console-to-Code](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/console-to-code.html)。