可設定的 PTR 記錄可讓您定義與 VM 執行個體外部 IP 位址相關聯的反向 DNS 記錄,使依賴這些記錄的應用程式可以正常運作。
一些應用程式需要反向 DNS 記錄 (PTR 記錄) 來將 IP 位址解析為網域名稱。例如,使用 SMTP 的應用程式需要指向傳送電子郵件之來源網域的 PTR 記錄。若沒有這個記錄,垃圾郵件篩選器可以將電子郵件標示為聲譽不佳,進而導致電子郵件最終進入垃圾郵件資料夾,或根本不會寄出。
您只能將 PTR 記錄新增至 VM 執行個體的主要網路介面。PTR 記錄不適用於負載平衡器前端、Cloud NAT 或其他非 VM IP 位址。
只有在執行個體的主要網路介面連線至具有外部 IPv6 位址範圍的雙重堆疊或僅限 IPv6 的子網路時,才能使用 IPv6 PTR 記錄。如果是雙重堆疊網路介面,您可以使用不同的 IPv4 和 IPv6 PTR 記錄。
如要建立自訂 PTR 記錄以覆寫自動建立的內部 DNS PTR 名稱,請參閱受管理的反向查詢區域。
事前準備
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
驗證您的網域擁有權
在您建立具有自訂 PTR 記錄的 VM 之前,請驗證您是否擁有網域名稱。驗證擁有權是一項安全措施,可向 Google 證明您是網域擁有者。
您可以透過下列 2 種方式驗證網域名稱:
- 如果你有 Google 帳戶,可以使用 Search Console 進行驗證。
- 如果您有 Google 或非 Google 帳戶,可以將 VM 的 IP 位址新增至 DNS 設定,即可進行驗證。
使用 Search Console 驗證
- 開啟 Search Console,並使用您要用來將 PTR 記錄新增至執行個體的 Google 帳戶登入。您可以使用多個帳戶驗證網域擁有權。
- 輸入 PTR 網域名稱。
- 按一下 [繼續]。
- 按照指示操作,然後點按「前往資源」。
- 按一下「設定」 (位於左側選單底部附近),然後點選「驗證擁有權」。
驗證網域擁有權後,請在「設定」窗格中按一下「使用者」,查看其他已驗證的擁有者。如要在其他網域中新增 PTR 記錄,請按一下左側顯示目前網域的屬性挑選器。按一下「新增屬性」即可新增這些網域。
如果您的網域名稱並未立即驗證,請使用建議的方法來取得驗證。
將 VM IP 位址新增至 DNS 設定,以便驗證
- 如果您的 VM 尚未存在,請預約地區性靜態外部 IP 位址,並在稍後建立 VM 時使用。
- 將含有 VM 外部 IP 位址的「A」記錄新增至網域的 DNS 設定。
建立具有 PTR 記錄的 VM 執行個體
您可以在建立新執行個體時指定 PTR 記錄。如要為現有執行個體新增 PTR 記錄,請參閱「新增 PTR 記錄」。
主控台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
指定 VM 詳細資料。
展開「進階選項」部分,然後執行下列操作:
- 展開「Networking」(網路) 區段。
- 建立一或多個網路介面,以便與這個 VM 搭配使用。或者,您也可以使用預設網路介面。
- 在「Network interfaces」(網路介面) 專區中,展開第一個網路介面 (即主要網路介面)。
- 在「Public DNS PTR record」部分,選取要新增的每個 PTR 記錄類型。
- 在「PTR 網域名稱」欄位中,輸入要新增的每個 PTR 記錄類型的網域名稱。
- 在「External IPv4 address」(外部 IPv4 位址) 或「External IPv6 address」(外部 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 記錄
您可以更新 VM 執行個體的主要網路介面 nic0
的存取權設定,藉此新增 PTR 記錄。
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要編輯的執行個體。
按一下 [編輯]。
在「Network interfaces」(網路介面) 區段中,按一下主要網路介面。
在「公開 DNS PTR 記錄」部分,選取要新增的每種類型 PTR 記錄。
在「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_NAME
IPv6:
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-ptr
IPv6:
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
:執行個體名稱。
限制
當 VM 在維護事件期間進行即時遷移程序時遷移至其他主機時,PTR 記錄邏輯無法正確處理某些邊緣情況,並將 DNS PTR 記錄還原為完整網域名稱 (FQDN)
googleusercontent.com
。如要恢復功能,請再次套用 PTR 記錄。當您停止含有 IPv6 PTR 記錄的 VM 時,IPv6 PTR 記錄會暫時取消註冊,且不會顯示在 VM 上。重新啟動 VM 時,系統會自動重新加入記錄。
後續步驟
- 如要瞭解如何為資源設定及管理靜態外部 IP 位址,請參閱「保留靜態外部 IP 位址」。
- 如要瞭解如何建立及管理虛擬機器執行個體,請參閱「建立及啟動 VM 執行個體」。