通过可配置的 PTR 记录,您可以定义与虚拟机实例的外部 IP 地址关联的反向 DNS 记录,以使依赖这些记录的应用可以按预期运行。
某些应用需要使用反向 DNS 记录(PTR 记录)才能将 IP 地址解析为域名。例如,采用 SMTP 的应用需要使用指向发送电子邮件所用的网域的 PTR 记录。 如果没有该记录,垃圾邮件过滤器会将电子邮件标记为信誉较低,这将导致电子邮件最终被递送到垃圾邮件文件夹,或根本不会发送。
您只能将 PTR 记录添加到虚拟机实例的主要网络接口。PTR 记录不适用于负载均衡器前端、Cloud NAT 或其他非虚拟机 IP 地址。
仅当实例的主要网络接口连接到具有外部 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 如果您有 Google 账号,可以使用 Search Console 进行验证。
- 如果您拥有 Google 或非 Google 账号,则可以通过将虚拟机的 IP 地址添加到 DNS 配置进行验证。
- 打开 Search Console,然后使用您将 PTR 记录添加到实例中所用的 Google 账号登录。当然,您可以使用多个账号验证域名所有权。
- 输入 PTR 域名。
- 点击继续。
- 按照说明操作,然后点击 Go to Property(前往属性)。
- 点击设置(位于底部附近的左侧菜单中),然后点击所有权验证。
- 如果您的虚拟机尚不存在,请预留区域静态外部 IP 地址,并稍后在虚拟机创建期间使用该地址。
- 将具有虚拟机外部 IP 地址的 A 记录添加到网域的 DNS 配置。
在 Google Cloud 控制台中,转到创建实例页面。
指定虚拟机详情。
展开高级选项部分,然后执行以下操作:
- 展开网络部分。
- 创建一个或多个用于此虚拟机的网络接口。 或者,您也可以使用默认网络接口。
- 在网络接口部分中,展开第一个网络接口,即主要网络接口。
- 在公共 DNS PTR 记录部分中,选择要添加的每种 PTR 记录类型。
- 在 PTR 域名字段中,为要添加的每种 PTR 记录输入域名。
- 在外部 IPv4 地址或外部 IPv6 地址字段中,选择您之前预留的 IP 地址。如果您已通过 DNS 配置验证虚拟机的 IP 地址,则必须指定该地址。
- 要确认网络接口设置,请点击完成。
为新虚拟机配置其余属性。
点击页面底部的创建。
如需创建具有关联 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
:新虚拟机实例的名称。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 记录的新实例,请执行以下操作:
在 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-domain DOMAIN_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
:要添加的域名。
在 Google Cloud 控制台中,转到虚拟机实例页面。
点击您要修改的实例。
点击修改。
在网络接口部分中,点击主要网络接口。
在公共 DNS PTR 记录部分中,取消选中要移除的每种 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
对于 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 地址。
- 如需了解如何创建和管理虚拟机实例,请参阅创建和启动虚拟机实例。
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 证明您就是域名的所有者。
您可以通过以下两种方式验证域名:
使用 Search Console 进行验证
验证您对域名的所有权后,请在设置窗格中,点击用户以查看其他经过验证的所有者。如需在其他域名中添加 PTR 记录,请点击左侧的属性选择器以显示当前域名。点击添加属性以添加这些域名。
如果您的域名未立即通过验证,请使用推荐的方法完成验证。
通过将虚拟机的 IP 地址添加到 DNS 配置进行验证
创建具有 PTR 记录的虚拟机实例
您可以在创建新实例时指定 PTR 记录。如需为现有实例添加 PTR 记录,请参阅添加 PTR 记录。
控制台
在虚拟机启动后,您可以对虚拟机的外部 IP 地址运行反向 DNS 查找,以确认 PTR 记录是否按预期工作。
gcloud
REST
添加 PTR 记录
您可以通过更新虚拟机实例的主要网络接口
nic0
上的访问权限配置来配置 PTR 记录。控制台
gcloud
REST
移除 PTR 记录
如需移除 PTR 记录,请更新虚拟机实例的主要网络接口
nic0
上的访问权限配置。移除 PTR 记录后,Google Cloud 会使用默认的完全限定的域名googleusercontent.com
响应 DNS 反向查找。控制台
gcloud
如需移除 PTR 记录,请使用
gcloud compute instances update-access-config
命令。如需同时移除 IPv4 和 IPv6 PTR 记录,请单独使用以下命令。将
INSTANCE_NAME
替换为要更新的实例的名称。REST
如需移除 PTR 记录,请向
instances.updateAccessConfig
方法发出POST
请求。如需同时移除 IPv4 和 IPv6 PTR 记录,请分别发出以下请求。请替换以下内容:
限制
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-