通过可配置的 PTR 记录,您可以定义与虚拟机实例的外部 IP 地址关联的反向 DNS 记录,以使依赖这些记录的应用可以按预期运行。
某些应用需要使用反向 DNS 记录(PTR 记录)才能将 IP 地址解析为域名。例如,采用 SMTP 的应用需要使用指向发送电子邮件所用的网域的 PTR 记录。 如果没有该记录,垃圾邮件过滤器会将电子邮件标记为信誉较低,这将导致电子邮件最终被递送到垃圾邮件文件夹,或根本不会发送。
您只能将 PTR 记录添加到虚拟机实例的主要网络接口。PTR 记录不适用于负载均衡器前端、Cloud NAT 或其他非虚拟机 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:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
-
验证域名所有权
在创建具有自定义 PTR 记录的虚拟机之前,验证您是该域名的所有者。验证所有权是一项安全措施,目的是向 Google 证明您就是域名的所有者。
您可以通过以下两种方式验证域名:
- 如果您有 Google 账号,可以使用 Search Console 进行验证。
- 如果您拥有 Google 或非 Google 账号,则可以通过将虚拟机的 IP 地址添加到 DNS 配置进行验证。
使用 Search Console 进行验证
- 打开 Search Console,然后使用您将 PTR 记录添加到实例中所用的 Google 账号登录。当然,您可以使用多个账号验证域名所有权。
- 输入 PTR 域名。
- 点击继续。
- 按照说明操作,然后点击 Go to Property(前往属性)。
- 点击设置(位于底部附近的左侧菜单中),然后点击所有权验证。
验证您对域名的所有权后,请在设置窗格中,点击用户以查看其他经过验证的所有者。如需在其他域名中添加 PTR 记录,请点击左侧的属性选择器以显示当前域名。点击添加属性以添加这些域名。
如果您的域名未立即通过验证,请使用推荐的方法完成验证。
通过将虚拟机的 IP 地址添加到 DNS 配置进行验证
- 如果您的虚拟机尚不存在,请预留区域静态外部 IP 地址,并稍后在虚拟机创建期间使用该地址。
- 将具有虚拟机外部 IP 地址的 A 记录添加到网域的 DNS 配置。
创建具有 PTR 记录的虚拟机实例
您可以在创建新实例时指定 PTR 记录。如需为现有实例添加 PTR 记录,请参阅添加 PTR 记录。
在 Google Cloud 控制台中,前往创建实例页面。
指定虚拟机详情。
展开高级选项部分,然后执行以下操作:
- 展开网络部分。
- 创建一个或多个用于此虚拟机的网络接口。 或者,您也可以使用默认网络接口。
- 在网络接口部分中,展开第一个网络接口,即主要网络接口。
- 在公共 DNS PTR 记录部分中,选择要添加的每种 PTR 记录类型。
- 在 PTR 域名字段中,为要添加的每种 PTR 记录输入域名。
- 在外部 IPv4 地址或外部 IPv6 地址字段中,选择您之前预留的 IP 地址。如果您已通过 DNS 配置验证虚拟机的 IP 地址,则必须指定该地址。
- 要确认网络接口设置,请点击完成。
为新虚拟机配置其余属性。
点击页面底部的创建。
在虚拟机启动后,您可以对虚拟机的外部 IP 地址运行反向 DNS 查找,以确认 PTR 记录是否按预期工作。
如需创建具有关联 IPv4 PTR 记录的新实例,请使用
gcloud instances create
命令。gcloud compute instances create
INSTANCE_NAME \ --image-familyIMAGE_FAMILY \ --image-projectIMAGE_PROJECT \ --public-ptr \ --public-ptr-domainDOMAIN_NAME \ --address=IP_ADDRESS 请替换以下内容:
INSTANCE_NAME
:新虚拟机实例的名称。IMAGE_FAMILY
:可用映像系列中的一种。IMAGE_PROJECT
:作为所有映像和映像系列引用的解析依据的 Google Cloud 项目。如果您未提供项目名称,则使用当前默认项目。DOMAIN_NAME
:要添加到此实例的域名。IP_ADDRESS
:您之前预留的 IP 地址。如果您已通过 DNS 配置验证虚拟机的 IP 地址,则必须指定该地址。
如需创建具有关联 IPv6 PTR 记录的新实例,请执行以下操作:
如需创建具有 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 配置验证虚拟机的 IP 地址,则必须指定该地址。DOMAIN_NAME
:要添加的域名。
如需创建具有 IPv6 PTR 记录的新实例,请执行以下操作:
添加 PTR 记录
您可以通过更新虚拟机实例的主要网络接口 nic0
上的访问权限配置来配置 PTR 记录。
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击您要修改的实例。
点击修改。
在网络接口部分中,点击主要网络接口。
在公共 DNS PTR 记录部分中,选择要添加的每种 PTR 记录类型。
在 PTR 域名字段中,为要添加的每种 PTR 记录输入域名。
点击完成,然后点击保存。
如果您的虚拟机没有访问权限配置,请使用
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-domainDOMAIN_NAME 对于 IPv6:
gcloud compute instances update-access-config
INSTANCE_NAME \ --ipv6-public-ptr-domain=DOMAIN_NAME
请替换以下内容:
INSTANCE_NAME
:要更新的实例的名称。DOMAIN_NAME
:要添加的域名。
如果您的虚拟机没有访问权限配置,请通过向
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 记录,请更新虚拟机实例的主要网络接口 nic0
上的访问权限配置。移除 PTR 记录后, Google Cloud 会使用默认的完全限定的域名 googleusercontent.com
响应 DNS 反向查找。
在 Google Cloud 控制台中,前往虚拟机实例页面。
点击您要修改的实例。
点击修改。
在网络接口部分中,点击主要网络接口。
在公共 DNS PTR 记录部分中,取消选中要移除的每种 PTR 记录对应的复选框。
点击完成,然后点击保存。
如需移除 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
替换为要更新的实例的名称。
如需移除 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 记录还原为
googleusercontent.com
完全限定域名 (FQDN)。如需恢复功能,请再次应用 PTR 记录。当您停止具有 IPv6 PTR 记录的虚拟机时,IPv6 PTR 记录会暂时取消注册,并且在虚拟机上不可见。重启虚拟机时,系统会自动重新添加记录。
后续步骤
- 如需简要了解如何为您的资源配置和管理静态外部 IP 地址,请参阅预留静态外部 IP 地址。
- 如需了解如何创建和管理虚拟机实例,请参阅创建和启动虚拟机实例。