可設定的 PTR 記錄可讓您定義與 VM 執行個體外部 IP 位址相關聯的反向 DNS 記錄,以便依賴這些記錄的應用程式能正常運作。
一些應用程式需要反向 DNS 記錄 (PTR 記錄) 來將 IP 位址解析為網域名稱。例如,使用 SMTP 的應用程式需要指向傳送電子郵件之來源網域的 PTR 記錄。若沒有這個記錄,垃圾郵件篩選器可以將電子郵件標示為聲譽不佳,進而導致電子郵件最終進入垃圾郵件資料夾,或根本不會寄出。
您只能為 VM 執行個體的主要網路介面新增 PTR 記錄。負載平衡器前端、Cloud NAT 或其他非 VM IP 位址無法使用 PTR 記錄。
只有在執行個體的主要網路介面連線至具有外部 IPv6 位址範圍的雙重堆疊或僅限 IPv6 子網路時,才能使用 IPv6 PTR 記錄。如果是雙重堆疊網路介面,您可以分別設定 IPv4 和 IPv6 PTR 記錄。
如要建立自訂 PTR 記錄,覆寫自動建立的內部 DNS PTR 名稱,請參閱「受管理的反向查詢區域」。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:
gcloud init
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
驗證您的網域擁有權
在您建立具有自訂 PTR 記錄的 VM 之前,請驗證您是否擁有網域名稱。驗證擁有權是安全措施,可向 Google 證明您是網域擁有者。
驗證網域名稱的方式有 2 種:
- 如果您有 Google 帳戶,可以使用 Search Console 進行驗證。
- 如果您有 Google 或非 Google 帳戶,可以將 VM 的 IP 位址新增至 DNS 設定,藉此完成驗證。
使用 Search Console 驗證
- 開啟 Search Console,然後使用要為執行個體新增 PTR 記錄的 Google 帳戶登入。您可以使用多個帳戶驗證網域擁有權。
- 輸入 PTR 網域名稱。
- 按一下「繼續」。
- 按照指示操作,然後按一下「前往資源」。
- 按一下「設定」 (位於左側選單底部附近),然後點選「擁有權驗證」。
驗證網域擁有權後,請在「設定」窗格中按一下「使用者」,即可查看其他已驗證擁有者。如要在其他網域中新增 PTR 記錄,請按一下左側的資源挑選器,該挑選器會顯示目前的網域。按一下「新增資源」即可新增這些網域。
如果您的網域名稱並未立即驗證,請使用建議的方法來取得驗證。
在 DNS 設定中新增 VM 的 IP 位址,藉此進行驗證
- 如果 VM 尚未建立,請保留區域靜態外部 IP 位址,並在稍後建立 VM 時使用。
- 在網域的 DNS 設定中,新增含有 VM 外部 IP 位址的「A」記錄。
建立含有 PTR 記錄的 VM 執行個體
建立新執行個體時,您可以指定 PTR 記錄。如要為現有執行個體新增 PTR 記錄,請參閱「新增 PTR 記錄」。
控制台
前往 Google Cloud 控制台的「建立執行個體」頁面。
指定 VM 詳細資料。
展開「Advanced options」(進階選項) 區段,然後執行下列操作:
- 展開「Networking」(網路) 區段。
- 建立一或多個網路介面,供這個 VM 使用。 或者,您也可以使用預設網路介面。
- 在「Network interfaces」(網路介面) 部分中,展開第一個網路介面 (主要網路介面)。
- 在「公開 DNS PTR 記錄」部分,選取要新增的各類型 PTR 記錄。
- 在「PTR domain name」(PTR 網域名稱) 欄位中,為要新增的每種 PTR 記錄輸入網域名稱。
- 在「外部 IPv4 位址」或「外部 IPv6 位址」欄位中,選擇先前預留的 IP 位址。如果您已透過 DNS 設定驗證 VM 的 IP 位址,則必須指定該位址。
- 如要確認網路介面設定,請按一下「Done」(完成)。
設定新 VM 的其餘屬性。
按一下頁面底部的 [Create] (建立)。
VM 啟動後,您可以對 VM 的外部 IP 位址執行反向 DNS 查詢,確認 PTR 記錄是否正常運作。
gcloud
如要建立新的執行個體並建立相關聯的 IPv4 PTR 記錄,請使用
gcloud instances create指令。gcloud compute instances create INSTANCE_NAME \ --image-family IMAGE_FAMILY \ --image-project IMAGE_PROJECT \ --public-ptr \ --public-ptr-domain DOMAIN_NAME \ --address=IP_ADDRESS更改下列內容:
INSTANCE_NAME:新 VM 執行個體的名稱。IMAGE_FAMILY:可用的映像檔系列之一。IMAGE_PROJECT:用來解析所有映像檔和映像檔系列參照的 Google Cloud 專案。如未提供專案名稱,系統會使用目前的預設專案。DOMAIN_NAME:要新增至這個執行個體的網域名稱。IP_ADDRESS:先前預留的 IP 位址。如果您已透過 DNS 設定驗證 VM 的 IP 位址,則必須指定該位址。
如要建立與 IPv6 PTR 記錄相關聯的新執行個體,請按照下列步驟操作:
REST
如要建立含有 IPv4 PTR 記錄的新執行個體,請對
instances.insert方法發出POST要求。POST https://compute.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-10" }, "boot": true } ], "networkInterfaces": [ { "network": "NETWORK", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External NAT", "natIP": "IP_ADDRESS", "publicPtrDomainName": "DOMAIN_NAME", "setPublicPtr": true } ] } ] }更改下列內容:
PROJECT_ID:專案的 ID。ZONE:執行個體的可用區。MACHINE_TYPE:機型。INSTANCE_NAME:執行個體的名稱。NETWORK:聯播網的網址。IP_ADDRESS:先前預留的 IP 位址。如果您已透過 DNS 設定驗證 VM 的 IP 位址,則必須指定該位址。DOMAIN_NAME:要新增的網域名稱。
如要建立具有 IPv6 PTR 記錄的新執行個體,請按照下列步驟操作:
新增 PTR 記錄
如要新增 PTR 記錄,請更新 VM 執行個體主要網路介面 (nic0) 的存取權設定。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要編輯的執行個體。
按一下 [編輯]。
在「網路介面」部分,按一下主要網路介面。
在「公開 DNS PTR 記錄」部分,選取要新增的各類型 PTR 記錄。
在「PTR domain name」(PTR 網域名稱) 欄位中,為要新增的每種 PTR 記錄輸入網域名稱。
依序按一下 [完成] 及 [儲存]。
gcloud
如果 VM 沒有存取設定,請使用
gcloud compute instances add-access-config指令新增。gcloud compute instances add-access-config INSTANCE_NAME
將
INSTANCE_NAME替換為執行個體名稱。使用
gcloud compute instances update-access-config指令更新存取權設定,新增 PTR 記錄。 如要同時新增 IPv4 和 IPv6 PTR 記錄,請分別使用下列指令。IPv4:
gcloud compute instances update-access-config INSTANCE_NAME \ --public-ptr \ --public-ptr-domain DOMAIN_NAMEIPv6:
gcloud compute instances update-access-config INSTANCE_NAME \ --ipv6-public-ptr-domain=DOMAIN_NAME
更改下列內容:
INSTANCE_NAME:要更新的執行個體名稱。DOMAIN_NAME:要新增的網域名稱。
REST
如果 VM 沒有存取權設定,請對
instances.addAccessConfig方法發出POST要求,新增存取權設定 。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/addAccessConfig?networkInterface="nic0"
更新存取權設定,方法是向
instances.updateAccessConfig方法發出POST要求,新增 PTR 記錄。如要同時新增 IPv4 和 IPv6 PTR 記錄,請分別提出下列要求。IPv4:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0 { "setPublicPtr": true, "publicPtrDomainName": "DOMAIN_NAME", "type": "ONE_TO_ONE_NAT" }IPv6:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0 { "publicPtrDomainName": "DOMAIN_NAME", "type": "DIRECT_IPV6" }
更改下列內容:
PROJECT_ID:專案 ID。ZONE:執行個體的可用區。INSTANCE_NAME:執行個體名稱。DOMAIN_NAME:要新增的網域名稱。
移除 PTR 記錄
如要移除 PTR 記錄,請更新 VM 執行個體主要網路介面 (nic0) 的存取權設定。移除 PTR 記錄後, Google Cloud 會以 googleusercontent.com 的預設完整網域名稱回應反向 DNS 查詢。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要編輯的執行個體。
按一下 [編輯]。
在「網路介面」部分,按一下主要網路介面。
在「公開 DNS PTR 記錄」部分中,取消勾選要移除的每種 PTR 記錄的核取方塊。
依序按一下 [完成] 及 [儲存]。
gcloud
如要移除 PTR 記錄,請使用 gcloud compute instances update-access-config 指令。如要移除 IPv4 和 IPv6 PTR 記錄,請分別使用下列指令。
IPv4:
gcloud compute instances update-access-config INSTANCE_NAME \ --no-public-ptrIPv6:
gcloud compute instances update-access-config INSTANCE_NAME \ --no-ipv6-public-ptr
將 INSTANCE_NAME 替換為要更新的執行個體名稱。
REST
如要移除 PTR 記錄,請向 instances.updateAccessConfig 方法發出 POST 要求。如要移除 IPv4 和 IPv6 PTR 記錄,請分別提出下列要求。
IPv4:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0 { "setPublicPtr": false, "type": "ONE_TO_ONE_NAT" }IPv6:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/updateAccessConfig?networkInterface=nic0 { "publicPtrDomainName": "", "type": "DIRECT_IPV6" }
更改下列內容:
PROJECT_ID:專案 ID。ZONE:執行個體的可用區。INSTANCE_NAME:執行個體名稱。
限制
PTR 記錄邏輯無法正確處理某些極端情況,且會將 DNS PTR 記錄還原為完整網域名稱 (FQDN)
googleusercontent.com。可能原因如下:- 在維護事件期間,VM 會遷移至其他主機,這是即時遷移程序的一部分。
- 發生罕見的非預期主機錯誤時。
如要還原功能,請再次套用 PTR 記錄。
停止具有 IPv6 PTR 記錄的 VM 時,系統會暫時取消註冊 IPv6 PTR 記錄,且該記錄不會顯示在 VM 上。重新啟動 VM 時,系統會自動重新新增記錄。
後續步驟
- 如要瞭解如何為資源設定及管理靜態外部 IP 位址,請參閱「預留靜態外部 IP 位址」。
- 如要瞭解如何建立及管理虛擬機器執行個體,請參閱「建立並啟動 VM 執行個體」。