可設定的 PTR 記錄可讓您定義與 VM 執行個體外部 IP 位址相關聯的反向 DNS 記錄,使依賴於這些記錄的應用程式可以正常運作。
一些應用程式需要反向 DNS 記錄 (PTR 記錄) 來將 IP 位址解析為網域名稱。例如,使用 SMTP 的應用程式需要指向傳送電子郵件之來源網域的 PTR 記錄。若沒有這個記錄,垃圾郵件篩選器可以將電子郵件標示為聲譽不佳,進而導致電子郵件最終產生垃圾郵件資料夾,或根本不會傳送。
您只能將 PTR 記錄新增至 VM 執行個體的主要網路介面。這不適用於負載平衡器或其他靜態 IP。
事前準備
- 如要使用本指南中的指令列範例,請完成下列事項:
- 安裝或更新至最新版 gcloud 指令列工具。
- 設定預設地區和區域。
- 如要使用本指南中的 API 範例,請設定 API 存取權。
定價
適用 Compute Engine 機器類型定價。 將 PTR 記錄與您的執行個體搭配使用不需支付額外費用。
驗證您的網域擁有權
在您建立具有自訂 PTR 記錄的 VM 之前,請驗證您是否擁有網域名稱。驗證擁有權是一項安全措施,可向 Google 證明您是網域擁有者。
- 開啟網站管理員中心,並使用您要用來將 PTR 記錄新增至執行個體的 Google Cloud 帳戶登入。您可以使用多個帳戶驗證網域擁有權。
- 按一下 [Add a property] (新增屬性)。
- 輸入 PTR 網域名稱。
- 按一下 [繼續]。
- 按照操作說明進行操作,並按一下 [驗證詳細資料]。
驗證網域擁有權後,網站管理員中心會列出驗證嘗試與已驗證擁有者。
如果您的網域名稱並未立即驗證,請使用建議的方法來取得驗證。
建立具有 PTR 記錄的執行個體
當您建立新執行個體時,可以指定 PTR 記錄。如果您想將 PTR 記錄新增至現有執行個體,請參閱更新執行個體以啟用 PTR 記錄一文。
透過 Google Cloud Platform 主控台、gcloud
工具或 API 建立具有 PTR 記錄的新執行個體。
主控台
透過 Google Cloud Platform 主控台建立具有 PTR 記錄的新執行個體:
- 開啟建立執行個體頁面。
- 按一下 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用),展開執行個體的進階設定。
- 按一下 [Networking] (網路),選取執行個體網路設定。
- 建立一或多個網路介面以與這個執行個體搭配使用。或者,您也可以使用預設網路介面。
- 在「Network Interfaces」(網路介面) 選單中,按一下您想與 PTR 記錄建立關聯的第一個網路介面中的編輯工具。只有預設網路介面可以擁有 PTR 記錄。
- 按一下 [Enable Public DNS PTR Record] (啟用公開 DNS PTR 記錄)。
- 在 PTR 網域名稱欄位中輸入您的網域名稱。
- 按一下 [Done] (完成),確認網路介面設定。
- 為您需要的新介面設定剩餘屬性。
- 在建立執行個體頁面底部,按一下 [Create] (建立) 以建立執行個體。
在執行個體啟動之後,對您執行個體的外部 IP 位址執行反向 DNS 查詢以確認 PTR 記錄如預期般運作。
gcloud
使用 gcloud instances create
指令建立具有關聯 PTR 記錄的新執行個體。
gcloud compute instances create [INSTANCE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT] \
--public-ptr --public-ptr-domain [DOMAIN_NAME]
其中:
API
在 API 中,建構 POST
要求來建立執行個體 (具有 PTR 記錄)。針對指定網路存取權設定,新增 setPublicPtr
與 publicPtrDomainName
參數。
POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
{
"machineType": "zones/[ZONE]/machineTypes/[MACHINE_TYPE]",
"name": "[INSTANCE_NAME]",
"disks":
[
{
"initializeParams":
{
"sourceImage": "projects/debian-cloud/global/images/family/debian-9"
},
"boot": true
}
],
"networkInterfaces":
[
{
"network": "[NETWORK]",
"accessConfigs":
[
{
"publicPtrDomainName": "[DOMAIN_NAME]",
"setPublicPtr": true,
"type": "ONE_TO_ONE_NAT",
"name": "External IP"
}
]
}
]
}
其中:
[PROJECT_ID]
是您的專案 ID。[ZONE]
是您的執行個體與新磁碟所在的區域。[MACHINE_TYPE]
是機器類型。[INSTANCE_NAME]
是虛擬機器執行個體的名稱。[NETWORK]
是指向您網路資源的網址。[DOMAIN_NAME]
是您要新增至這個執行個體的網域名稱。
外部 IP 位址會解析為自訂網域名稱。
更新執行個體以啟用 PTR 記錄
如果您的 VM 執行個體使用主要網路介面,則可以針對 VM 執行個體,更新主要網路介面「nic0」上的存取權設定,來啟用或停用 PTR 記錄。
如果未設定您的網路存取權,請新增存取權設定,然後在網路介面選單內啟用 PTR 記錄。
主控台
透過 Google Cloud Platform 主控台,更新存取權設定或將存取權設定新增至您的執行個體:
- 前往 VM 執行個體頁面。
- 按一下您要編輯的執行個體。
- 按一下頂端選單中的 [編輯] 工具。
- 點選主要網路介面旁邊的編輯工具。
- 按一下 [外部 IP] 下拉式選單。
- 設定 [外部 IP] 以啟用 PTR 記錄。
- 勾選「公開 DNS PTR 記錄」的 [啟用] 方塊。
- 輸入您的網域名稱。
- 按一下 [完成]。
- 點選頁面底部的 [儲存],儲存您的設定。
gcloud
使用 gcloud
工具更新現有存取權設定:
使用 gcloud compute instances updateAccessConfig
指令,將 PTR 記錄新增至現有存取權設定。
gcloud compute instances update-access-config [INSTANCE_NAME]
--public-ptr --public-ptr-domain [DOMAIN_NAME]
使用 gcloud instances updateAccessConfig
指令,透過移除 PTR 記錄更新現有存取權設定。
gcloud compute instances update-access-config [INSTANCE_NAME]
--no-public-ptr
如果您的執行個體沒有存取權設定,您可以使用 gcloud instances addAccessConfig
指令新增具有 PTR 記錄的存取權設定。
gcloud compute instances add-access-config [INSTANCE_NAME]
--public-ptr --public-ptr-domain [DOMAIN_NAME]
其中:
[INSTANCE_NAME]
是虛擬機器執行個體的名稱。[DOMAIN_NAME]
是您要新增至這個執行個體做為 PTR 記錄的網域名稱。
API
在 API 中,對 updateAccessConfig
方法建構 POST 要求,針對「A」或「PTR」記錄啟用公開 DNS 支援。這個要求會保留現有外部 IP 位址,但會針對指定網路存取權設定新增 setPublicPtr
與 publicPtrDomainName
參數。
POST https://www.googleapis.comm/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/updateAccessConfig?networkInterface=nic0
{
"setPublicPtr": true,
"publicPtrDomainName": "[DOMAIN_NAME]"
}
其中:
[PROJECT_ID]
是您的專案 ID。[ZONE]
是您的執行個體與新磁碟所在的區域。[INSTANCE_NAME]
是這個要求的執行個體名稱。[DOMAIN_NAME]
是您要新增至這個執行個體做為 PTR 記錄的網域名稱。
或者,如果您的執行個體沒有具有存取權設定的網路介面,請使用 addAccessConfig
方法建構類似的 POST 要求,來針對您的網路介面建立新的存取權設定。
後續步驟
- 保留靜態外部 IP 位址,瞭解如何為您的資源設定和管理靜態外部 IP 位址的概況。