

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 VPC 端点服务的 DNS 名称
<a name="manage-dns-names"></a>

服务提供商可为其端点服务配置私有 DNS 名称。假设服务提供商通过公有端点将其服务作为端点服务提供。如果服务提供商使用公有端点的 DNS 名称作为端点服务的私有 DNS 名称，则服务使用者无需修改即可使用相同的客户端应用程序访问公有端点或端点服务。如果请求来自服务使用者 VPC，则私有 DNS 服务器会将 DNS 名称解析为端点网络接口的 IP 地址。否则，公有 DNS 服务器会将 DNS 名称解析为公有端点。

您必须先通过执行域所有权验证检查来证明您拥有该域，然后才能为端点服务配置私有 DNS 名称。

**注意事项**
+ 端点服务只能有一个私有 DNS 名称。
+ 当使用者创建接口端点以连接到您的服务时，我们会创建私有托管区并将其与服务使用者 VPC 关联。我们在私有托管区中创建 CNAME 记录，该记录将端点服务的私有 DNS 名称映射到 VPC 端点的区域 DNS 名称。当使用者向服务的公有 DNS 名称发送请求时，私有 DNS 服务器会将请求解析到端点网络接口的 IP 地址。
+ 要验证域，您必须拥有公有托管名称或公有 DNS 提供商。
+ 您可以验证子域的域。例如，您可以验证 *example.com*，而不是 *a.example.com*。每个 DNS 标签最多可包含 63 个字符，域名总长度不得超过 255 个字符。

  如果添加其他子域，则必须验证子域或域。例如，假设您有 *.example.com* 并验证了 *example.com*。您现在添加 *b.example.com* 作为私有 DNS 名称。在服务使用者可以使用该名称之前，您必须验证 *example.com* 或 *b.example.com*。
+ 网关负载均衡器端点不支持私有 DNS 名称。

## 域所有权验证
<a name="verify-domain-ownership"></a>

您的域与一组域名服务（DNS）记录相关联，这些记录由您的 DNS 提供商管理。TXT 记录是一种 DNS 记录，可提供有关您的域的其他信息。其中包含一个名称和一个值。作为验证过程的一部分，您必须将 TXT 记录添加到公有域的 DNS 服务器。

当我们检测到域的 DNS 设置中存在 TXT 记录时，即完成域所有权验证。

添加记录后，您可以使用 Amazon VPC 控制台检查域验证过程的状态。在导航窗格中，选择 **Endpoint services**（端点服务）。选择端点服务，并在 **Details**（详细信息）选项卡中检查 **Domain verification status**（域验证状态）的值。如果域验证正在等待处理，请等待几分钟，然后刷新屏幕。如果需要，您可以手动启动验证过程。依次选择 **Actions**（操作）、**Verify domain ownership for private DNS name**（验证私有 DNS 名称的域所有权）。

如果验证状态为 **verified**（已验证），则私有 DNS 名称可供服务使用者使用。如果验证状态发生变化，新的连接请求将被拒绝，但现有连接不会受到影响。

如果验证状态为 **failed**（失败），请参阅 [解决域验证问题](#troubleshoot-domain-verification)。

## 获取名称和值
<a name="get-name-and-value"></a>

我们为您提供您在 TXT 记录中使用的名称和值。例如，在 AWS 管理控制台中提供信息。选择端点服务，并在端点服务的 **Details**（详细信息）选项卡中查看 **Domain verification name**（域验证名称）和 **Domain verification value**（域验证值）。您还可以使用以下 [describe-vpc-endpoint-service-configur](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoint-service-configurations.html) ation AWS CLI s命令检索有关指定终端节点服务的私有 DNS 名称配置的信息。

```
aws ec2 describe-vpc-endpoint-service-configurations \
    --service-ids vpce-svc-071afff70666e61e0 \
    --query ServiceConfigurations[*].PrivateDnsNameConfiguration
```

下面是示例输出。创建 TXT 记录时，您需要使用 `Value` 和 `Name`。

```
[
    {
        "State": "pendingVerification",
        "Type": "TXT",
        "Value": "vpce:l6p0ERxlTt45jevFwOCp",
        "Name": "_6e86v84tqgqubxbwii1m"
    }
]
```

例如，假设您的域名是 *example.com*，并且 `Value` 和 `Name` 如前面的示例输出所示。下表是 TXT 记录设置的示例。


| Name | Type | 值 | 
| --- | --- | --- | 
|  \$16e86v84tqgqubxbwii1m.example.com  |  TXT  |  vpce: l6p0 tt45jevfW ERxl OCp  | 

建议您使用 `Name` 作为记录子域，因为基本域名可能已在使用中。但是，如果您的 DNS 提供商不允许 DNS 记录名称包含下划线，则可省略“\$16e86v84tqgqubxbwii1m”，并且只需在 TXT 记录中使用“example.com”。

在我们验证“\$16e86v84tqgqubxbwii1m.example.com”之后，服务使用者可使用“example.com”或子域（例如“service.example.com”或“my.service.example.com”）。

## 将 TXT 记录添加到您的域的 DNS 服务器
<a name="add-txt-record-to-dns-server"></a>

将 TXT 记录添加到您的域的 DNS 服务器的过程取决于为您提供 DNS 服务的组织。您的 DNS 提供商可能是 Amazon Route 53 或其他域名注册商。

### Amazon Route 53
<a name="add-txt-record-route53"></a>

使用简单路由策略为公有托管区创建记录。使用以下值：
+ 对于 **Record name**（记录名称），输入域或子域。
+ 对于 **Record type**（记录类型），选择 **TXT**。
+ 对于 **Value/Route traffic to**（值/流量路由至），输入域验证值。
+ 对于 **TTL (seconds)** [TTL（秒）]，输入 **1800**。

有关更多信息，请参阅 *Amazon Route 53 开发人员指南*中的[使用控制台创建记录](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)。

### 一般过程
<a name="add-txt-record-general"></a>

前往 DNS 提供商网站并登录您的账户。查找该页面以更新域的 DNS 记录。使用我们提供的名称和值来添加 TXT 记录。DNS 记录更新最长需要 48 小时生效，但通常情况下生效时间要早很多。

有关更具体的说明，请查阅 DNS 提供商提供的文档。下表提供了指向几个常用 DNS 提供商的文档链接。此列表并不全面，也并非旨在推荐这些公司提供的产品或服务。


| DNS/托管提供商 | 文档链接 | 
| --- | --- | 
|  GoDaddy  |  [添加 TXT 记录](https://www.godaddy.com/help/add-a-txt-record-19232)  | 
|  Dreamhost  |  [添加自定义 DNS 记录](https://help.dreamhost.com/hc/en-us/articles/360035516812-Adding-custom-DNS-records)  | 
|  Cloudflare  |  [管理 DNS 记录](https://developers.cloudflare.com/dns/manage-dns-records/how-to/create-dns-records/)  | 
|  HostGator  |  [使用 HostGator /eNOM 管理 DNS 记录](https://www.hostgator.com/help/article/manage-dns-records-with-hostgatorenom)  | 
|  Namecheap  |  [如何为我的域名添加TXT/SPF/DKIM/DMARC记录？](https://www.namecheap.com/support/knowledgebase/article.aspx/317/2237/how-do-i-add-txtspfdkimdmarc-records-for-my-domain/)  | 
|  Names.co.uk  |  [更改域的 DNS 设置](https://www.names.co.uk/support/articles/changing-your-domains-dns-settings/)  | 
|  Wix  |  [在您的 Wix 账户中添加或更新 TXT 记录](https://support.wix.com/en/article/adding-or-updating-txt-records-in-your-wix-account)  | 

## 检查 TXT 记录是否已发布
<a name="verify-txt-record-publication"></a>

您可以使用以下步骤验证您的私有 DNS 名称域所有权验证 TXT 记录是否已正确发布到 DNS 服务器。您将运行 **nslookup** 命令，目前支持的平台有 Windows 和 Linux。

您将查询为您的域名提供服务的 DNS 服务器，因为这些服务器包含的域 up-to-date信息最多。您的域信息需要一定时间才会传播到其他 DNS 服务器。

**验证您的 TXT 记录是否已发布到您的 DNS 服务器**

1. 使用以下命令查找您的域的名称服务器。

   ```
   nslookup -type=NS example.com
   ```

   此输出将列出可用于您的域的名称服务器。您将在下一步骤中查询这些服务器之一。

1. 使用以下命令验证 TXT 记录是否已正确发布，其中*name\$1server*是您在上一步中找到的域名服务器之一。

   ```
   nslookup -type=TXT  _6e86v84tqgqubxbwii1m.example.com name_server
   ```

1. 在上一步输出中，验证 `text =` 后面的字符串是否与 TXT 值匹配。

   在我们的示例中，如果记录正确发布，则输出包括以下内容。

   ```
   1. _6e86v84tqgqubxbwii1m.example.com text = "vpce:l6p0ERxlTt45jevFwOCp"
   ```

## 解决域验证问题
<a name="troubleshoot-domain-verification"></a>

如果域验证过程失败，以下信息可以帮助您解决问题。
+ 检查您的 DNS 提供商是否允许在 TXT 记录名称中使用下划线。如果您的 DNS 提供商不允许使用下划线，则您可以从 TXT 记录中省略域验证名称（例如“\$16e86v84tqgqubxbwii1m”）。
+ 检查您的 DNS 提供商是否将域名附加到 TXT 记录的末尾。某些 DNS 提供商会自动将您的域名附加到 TXT 记录的属性名称中。为避免域名重复，请在创建 TXT 记录时在域名结尾添加句点。此步骤告知 DNS 提供商没有必要将域名附加到 TXT 记录。
+ 检查您的 DNS 提供商是否将 DNS 记录值修改为仅使用小写字母。只有当验证记录的属性值与我们提供的值完全匹配时，我们才会验证您的域。如果 DNS 提供商将 TXT 记录值更改为仅使用小写字母，请联系他们获取帮助。
+ 由于您支持多个区域或多个 AWS 账户，因而您可能需要多次验证您的域。如果 DNS 提供商不允许您拥有多条具有相同属性名称的 TXT 记录，请检查 DNS 提供商是否允许您将多个属性值分配给同一条 TXT 记录。例如，如果 DNS 由 Amazon Route 53 管理，则您可以按照以下步骤进行操作。

  1. 在 Route 53 控制台中，选择在验证第一个区域中的域时创建的 TXT 记录。

  1. 对于 **Value**（值），转到现有属性值的末尾，然后按 Enter。

  1. 添加附加区域的属性值，然后保存记录集。

  如果 DNS 提供商不允许向同一条 TXT 记录分配多个值，则可以使用 TXT 记录的属性名称中的值来验证域一次，而另一次使用从属性名称中删除的值来验证域。但是，您只能对同一个域验证两次。