

# 验证域控制权
<a name="tutorials-byoip-ipam-domain-verification-methods"></a>

在将 IP 地址范围引入 AWS 之前，您必须使用本节中所述的一个选项来验证自己是否控制了 IP 地址空间。之后，如果将 IP 地址范围引入 AWS，AWS 会验证您是否控制了 IP 地址范围。该验证可确保客户无法使用属于他人的 IP 范围，防止出现路由和安全问题。

您可以通过两种方法来验证自己是否控制了相应范围：
+ **X.509 证书**：如果 IP 地址范围是在支持 RDAP 的互联网注册机构（例如 ARIN、RIPE 和 APNIC）注册，您可以使用 X.509 证书验证域的所有权。
+ **DNS TXT 记录**：无论互联网注册机构是否支持 RDAP，您都可以使用验证令牌和 DNS TXT 记录来验证域的所有权。

**Topics**
+ [

## 使用 X.509 证书验证域
](#tutorials-byoip-ipam-domain-verification-cert)
+ [

## 使用 DNS TXT 记录验证域
](#tutorials-byoip-ipam-domain-verification-dns-txt)

## 使用 X.509 证书验证域
<a name="tutorials-byoip-ipam-domain-verification-cert"></a>

本节旨在介绍在将 IP 地址范围引入 IPAM 之前，如何使用 X.509 证书验证域。

**使用 X.509 证书验证域**

1. 完成《*Amazon EC2 用户指南*》中的 [Amazon EC2 中 BYOIP 的先决条件](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/prepare-for-byoip.html)中的三个步骤。
**注意**  
创建 ROA 时，对于 IPv4 CIDR，您必须将 IP 地址前缀的最大长度设置为 `/24`。对于 IPv6 CIDR，如果要将它们添加到可传播池中，IP 地址前缀的最大长度必须为 `/48`。这可以确保您有充分的灵活性来跨 AWS 区域划分您的公有 IP 地址。IPAM 强制执行您设置的最大长度。最大长度是您对此路由允许的最小前缀长度公告。例如，如果您通过将最大长度设置为 `/20` 将 AWS CIDR 块带入 `/24` 中，您可以根据自己喜欢的方式划分较大的块（例如 `/21`、`/22` 或 `/24`）并将这些较小的 CIDR 块分发到任何区域。如果您要将最大长度设置为 `/23`，您将无法划分和传播来自较大块的 `/24`。另请注意，`/24` 是最小的 IPv4 块，`/48` 是您可以从区域向互联网广告的最小 IPv6 块。

1. 仅完成《Amazon EC2 用户指南》**中[在 AWS 中预置公开发布的地址范围](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-provision)下的步骤 1 和 2，**先不预置地址范围（步骤 3）**。保存 `text_message` 和 `signed_message`。本过程后面部分需要使用它们。

完成上述步骤后，继续[使用 AWS 管理控制台和 AWS CLI 自带 IP 到 IPAM 中](tutorials-byoip-ipam-console-intro.md)或[仅使用 AWS CLI 自带 IP CIDR 到 IPAM 中](tutorials-byoip-ipam-cli-only-intro.md)。

## 使用 DNS TXT 记录验证域
<a name="tutorials-byoip-ipam-domain-verification-dns-txt"></a>

在将 IP 地址范围引入 IPAM 之前，请先完成本节中的步骤，使用 DNS TXT 记录验证自己的域。

您可以使用 DNS TXT 记录来验证自己是否控制了公有 IP 地址范围。DNS TXT 记录是一种包含域名信息的 DNS 记录。该功能让您能够使用在任何互联网注册机构（例如 JPNIC、LACNIC 和 AFRINIC）注册的 IP 地址，而不仅仅是那些支持基于 RDAP（注册数据访问协议）记录的（例如 ARIN、RIPE 和 APNIC）的注册机构。

**重要**  
要想继续操作，必须先在免费或高级套餐中创建了 IPAM。如果没有 IPAM，请先完成[创建 IPAM](create-ipam.md)。

**Topics**
+ [

### 步骤 1：创建 ROA（若没有）
](#tutorials-byoip-ipam-domain-verification-dns-txt-roa)
+ [

### 步骤 2：创建验证令牌
](#tutorials-byoip-ipam-domain-verification-dns-txt-token)
+ [

### 步骤 3：设置 DNS 区域和 TXT 记录
](#tutorials-byoip-ipam-domain-verification-dns-txt-dns)

### 步骤 1：创建 ROA（若没有）
<a name="tutorials-byoip-ipam-domain-verification-dns-txt-roa"></a>

必须在区域互联网注册机构（RIR）中为自己要公开发布的 IP 地址范围创建路由来源授权（ROA）。如果 RIR 中没有 ROA，请先完成[ 《Amazon EC2 用户指南》**中的3. 在 RIR 中创建 ROA 对象](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-byoip.html#byoip-create-roa-object)。忽略其他步骤。

您可以引入的最具体 IPv4 地址范围是 /24。对于公开发布的 CIDR，可以引入的最具体 IPv6 地址范围是 /48；对于不公开发布的 CIDR，可以引入的最具体 IPv6 地址范围是 /60。

### 步骤 2：创建验证令牌
<a name="tutorials-byoip-ipam-domain-verification-dns-txt-token"></a>

验证令牌是 AWS 生成的随机值，可用于证明对外部资源的控制权。例如，当您将 IP 地址范围引入 AWS（BYOIP）时，可以使用验证令牌来验证自己是否控制了公有 IP 地址范围。

完成本节中的步骤，创建好验证令牌；在本教程的后续步骤中，您需要使用该令牌才能将自己的 IP 地址范围引入 IPAM。请按照以下说明，在 AWS 控制台或 AWS CLI 中继续操作。

------
#### [ AWS Management Console ]

**创建验证令牌**

1. 在 [https://console.aws.amazon.com/ipam/](https://console.aws.amazon.com/ipam/) 中打开 IPAM 控制台。

1. 在 AWS 管理控制台中，选择要在其中创建 IPAM 的 AWS 区域。

1. 在左侧导航窗格中，选择 **IPAM**。

1. 选择 IPAM，然后选择**验证令牌**选项卡。

1. 选择**创建验证令牌**。

1. 创建令牌后，让该浏览器选项卡保持打开状态。下一步会用到**令牌值**和**令牌名称**，而后续步骤会用到**令牌 ID**。

请注意以下几点：
+ 创建验证令牌后，您可以在 72 小时内将该令牌重复用于从 IPAM 预置的多个 BYOIP CIDR。若想在 72 小时后预置更多 CIDR，必须创建新令牌。
+ 最多可创建 100 个令牌。如果令牌数达到上限，请删除过期令牌。

------
#### [ Command line ]
+ 请求 IPAM 使用 [create-ipam-external-resource-verification-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-ipam-external-resource-verification-token.html) 创建一个可用于配置 DNS 的验证令牌：

  ```
  aws ec2 create-ipam-external-resource-verification-token --ipam-id ipam-id
  ```

  该指令会返回一个 IpamExternalResourceVerificationTokenId 和带有 `TokenName` 和 `TokenValue` 的令牌，以及该令牌的到期时间 (`NotAfter`)。

  ```
  { 
      "IpamExternalResourceVerificationToken": { 
          "IpamExternalResourceVerificationTokenId": "ipam-ext-res-ver-token-0309ce7f67a768cf0", 
          "IpamId": "ipam-0f9e8725ac3ae5754", 
          "TokenValue": "a34597c3-5317-4238-9ce7-50da5b6e6dc8", 
          "TokenName": "86950620", 
          "NotAfter": "2024-05-19T14:28:15.927000+00:00", 
          "Status": "valid", 
          "Tags": [], 
          "State": "create-in-progress" }
  }
  ```

请注意以下几点：
+ 创建验证令牌后，您可以在 72 小时内将该令牌重复用于从 IPAM 预置的多个 BYOIP CIDR。若想在 72 小时后预置更多 CIDR，必须创建新令牌。
+ 使用 [describe-ipam-external-resource-verification-tokens](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-ipam-external-resource-verification-tokens.html) 可以查看令牌。
+ 最多可创建 100 个令牌。如果令牌数达到上限，则可以使用 [delete-ipam-external-resource-verification-token](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/delete-ipam-external-resource-verification-token.html) 删除过期令牌。

------

### 步骤 3：设置 DNS 区域和 TXT 记录
<a name="tutorials-byoip-ipam-domain-verification-dns-txt-dns"></a>

完成本部分中的步骤，设置好 DNS 域和 TXT 记录。如果未使用 Route53 作为 DNS，则按照 DNS 提供商提供的文档设置好 DNS 区域并添加 TXT 记录。

如果使用的是 Route53，请注意以下几点：
+ 要在 AWS 控制台中创建反向查找区域，请参阅《Amazon Route 53 Developer Guide》**中的 [Creating a public hosted zone](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingHostedZone.html) 或使用 AWS CLI 命令 [create-hosted-zone](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-hosted-zone.html)。
+ 要在 AWS 控制台的反向查找区域中创建记录，请参阅《Amazon Route 53 Developer Guide》**中的 [Creating records by using the Amazon Route 53 console](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html) 或使用 AWS CLI 命令 [change-resource-record-sets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/change-resource-record-sets.html)。
+ 创建好托管区后，将托管区从 RIR 委托给 Route53 提供的域名服务器（例如 [LACNIC](https://www.lacnic.net/1017/2/lacnic/reverse-dns-resolution) 或 [APNIC](https://www.apnic.net/manage-ip/manage-resources/reverse-dns/)）。

无论使用的是 Route53 还是其他 DNS 提供商，在设置 TXT 记录时，都要注意以下几点：
+ 记录名称应为令牌名称。
+ 记录类型应为 TXT。
+ ResourceRecord 值应为令牌值。

示例：
+ **名称**：`86950620.113.0.203.in-addr.arpa`
+ **类型**：`TXT`
+ **ResourceRecords 值**：`a34597c3-5317-4238-9ce7-50da5b6e6dc8`

其中：
+ `86950620` 为验证令牌名称。
+ `113.0.203.in-addr.arpa` 为反向查找区域的名称。
+ `TXT` 为记录类型。
+ `a34597c3-5317-4238-9ce7-50da5b6e6dc8` 为验证令牌值。

**注意**  
根据要通过 BYOIP 引入 IPAM 的前缀大小，必须在 DNS 中创建一条或多条身份验证记录。这些身份验证记录的记录类型为 TXT，且必须放置在前缀本身或其父前缀的反向区域中。  
对于 IPv4，身份验证记录需要与构成前缀的八位字节边界的范围保持一致。  
**示例**
对于 198.18.123.0/24（已按八位字节边界对齐），您需要创建一条身份验证记录：  
`token-name.123.18.198.in-addr.arpa. IN TXT “token-value”`
对于 198.18.12.0/22（本身未按八位字节边界对齐），您需要创建四条身份验证记录。这些记录必须涵盖子网 198.18.12.0/24、198.18.13.0/24、198.18.14.0/24 和 198.18.15.0/24（这些子网均按八位字节边界对齐）。相应的 DNS 条目必须是：  
`token-name.12.18.198.in-addr.arpa. IN TXT “token-value”`
`token-name.13.18.198.in-addr.arpa. IN TXT “token-value”`
`token-name.14.18.198.in-addr.arpa. IN TXT “token-value”`
`token-name.15.18.198.in-addr.arpa. IN TXT “token-value”`
对于 198.18.0.0/16（已按八位字节边界对齐），您需要创建一条身份验证记录：  
`token-name.18.198.in-addr.arpa. IN TXT “token-value”`
对于 IPv6，身份验证记录需要与构成前缀的半字节边界的范围保持一致。有效的半字节数值包括 32、36、40、44、48、52、56 和 60。  
**示例**  
对于 2001:0db8::/40（已按半字节边界对齐），您需要创建一条身份验证记录：  
`token-name.0.0.8.b.d.0.1.0.0.2.ip6.arpa TXT “token-value”`
对于 2001:0db8:80::/42（本身未按半字节边界对齐），您需要创建四条身份验证记录。这些记录必须涵盖子网 2001:db8:80::/44、2001:db8:90::/44、2001:db8:a0::/44 和 2001:db8:b0::/44（这些子网均按半字节边界对齐）。相应的 DNS 条目必须是：  
`token-name.8.0.0.8.b.d.0.1.0.0.2.ip6.arpa TXT “token-value”`
`token-name.9.0.0.8.b.d.0.1.0.0.2.ip6.arpa TXT “token-value”`
`token-name.a.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
`token-name.b.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
对于非公开发布范围 2001:db8:0:1000::/54（该范围本身未按半字节边界对齐），您需要创建四条身份验证记录。这些记录必须涵盖子网 2001:db8:0:1000::/56、2001:db8:0:1100::/56、2001:db8:0:1200::/56 和 2001:db8:0:1300::/56（这些子网均按半字节边界对齐）。相应的 DNS 条目必须是：  
`token-name.0.1.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
`token-name.1.1.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
`token-name.2.1.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
`token-name.3.1.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa IN TXT “token-value”`
要验证 *token-nam* 和 ip6.arpa 字符串之间十六进制数字的正确数量，请将该数量乘以四。结果应与前缀长度一致。例如，对于 /56 前缀，应有 14 个十六进制数字。

完成上述步骤后，继续[使用 AWS 管理控制台和 AWS CLI 自带 IP 到 IPAM 中](tutorials-byoip-ipam-console-intro.md)或[仅使用 AWS CLI 自带 IP CIDR 到 IPAM 中](tutorials-byoip-ipam-cli-only-intro.md)。