

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 管理 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 個字元。

  如果您新增其他子網域，您必須驗證子網域或是網域。例如，假設您有一個 *a.example.com* 及已驗證的 *example.com*。您現在將 *b.example.com* 做為私有 DNS 名稱新增。您必須先驗證 *example.com* 或 *b.example.com*，服務消費者才能使用該名稱。
+ Gateway Load Balancer 端點不支援私有 DNS 名稱。

## 網域所有權驗證
<a name="verify-domain-ownership"></a>

您的網域與一組網域名稱服務 (DNS) 記錄相關，而您透過 DNS 提供者來管理這些記錄。TXT 記錄是一種 DNS 記錄類型，可提供關於您的網域的更多資訊。由名稱和值組成。在驗證過程中，您必須將 TXT 記錄新增至公有網域的 DNS 伺服器。

當我們在網域的 DNS 設定中偵測到存在 TXT 記錄時，網域所有權驗證便已完成。

新增記錄後，您可以使用 Amazon VPC 主控台檢查網域驗證程序的狀態。在導覽窗格中，選擇 **Endpoints 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-configurations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-vpc-endpoint-service-configurations.html) AWS CLI 命令來擷取指定端點服務之私有 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 記錄設定範例。


| 名稱 | 類型 | Value | 
| --- | --- | --- | 
| \_6e86v84tqgqubxbwii1m.example.com | TXT | vpce:l6p0ERxlTt45jevFwOCp | 

我們建議您使用 `Name` 作為記錄子網域，因為基礎網域名稱可能已在使用中。不過，如果您的 DNS 提供者不允許 DNS 記錄名稱包含底線，您可以省略 "\_6e86v84tqgqubxbwii1m"，而在 TXT 記錄中僅使用 "example.com"。

在我們驗證 "\_6e86v84tqgqubxbwii1m.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** (記錄名稱)，請輸入網域或子網域。
+ 對於 **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 伺服器。您將執行適用於 Windows 和 Linux 的 **nslookup**命令。

您將查詢為您的網域提供服務的 DNS 伺服器，因為這些伺服器包含您網域的最新資訊。網域資訊傳播到其他 DNS 伺服器可能需要一些時間。

**若要確認您的 TXT 記錄已發佈到您的 DNS 伺服器**

1. 使用以下命令來查找網域的名稱伺服器。

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

   輸出會列出提供您網域的名稱伺服器。您在下一步驟將查詢其中一個伺服器。

1. 使用以下命令，確認 TXT 記錄已正確發佈，其中 {{name\_server}} 是您在上一個步驟中找到的名稱伺服器之一。

   ```
   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 記錄中的網域驗證名稱 (例如，"\_6e86v84tqgqubxbwii1m")。
+ 確認您的 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 記錄屬性名稱中的值驗證一次網域，並在另一次驗證中從屬性名稱中移除該值。不過，您只能驗證相同的網域兩次。