为虚拟机实例创建 PTR 记录

通过可配置的 PTR 记录,您可以定义与虚拟机实例的外部 IP 地址关联的反向 DNS 记录,以使依赖这些记录的应用可以按预期运行。

某些应用需要使用反向 DNS 记录(PTR 记录)才能将 IP 地址解析为域名。例如,采用 SMTP 的应用需要使用指向发送电子邮件所用的网域的 PTR 记录。如果没有该记录,垃圾邮件过滤器会将电子邮件标记为信誉较低,这将导致电子邮件最终被递送到垃圾邮件文件夹,或根本不会发送。

您只能将 PTR 记录添加到虚拟机实例的主网络接口。PTR 记录不适用于负载平衡器或其他静态 IP。

准备工作

价格

您需要按照 Compute Engine 机器类型价格付费。在实例中使用 PTR 记录不会产生额外费用。

验证域名所有权

在使用自定义 PTR 记录创建虚拟机之前,验证您是该域名的所有者。验证所有权是一项安全措施,目的是向 Google 证明您就是域名的所有者。

  1. 打开网站站长中心,然后使用您将 PTR 记录添加到实例中所用的 Google Cloud 帐号登录。当然,您可以使用多个帐号验证域名所有权。
  2. 点击添加资源
  3. 输入 PTR 域名。
  4. 点击继续
  5. 按照说明操作,然后点击验证详情

验证域名所有权后,网站站长中心会列出尝试的验证和已通过验证的所有者。

如果您的域名未立即通过验证,请使用推荐的方法完成验证。

创建包含 PTR 记录的实例

您可以在创建新实例时指定 PTR 记录。如果您要将 PTR 记录添加到现有实例,请参阅更新实例以启用 PTR 记录

您可以通过 Google Cloud Platform Consolegcloud 工具API 创建包含 PTR 记录的新实例。

控制台

您可以使用 Google Cloud Platform Console 创建包含 PTR 记录的新实例,具体步骤如下所示:

  1. 打开“创建实例”页面。

    转到“创建实例”页面

  2. 点击管理、安全、磁盘、网络、单独租用以展开您的实例的高级设置。
  3. 点击网络以选择实例的网络设置。
  4. 创建一个或多个用于此实例的网络接口。或者,您也可以使用默认网络接口。
  5. 网络接口菜单中,点击要与之关联 PTR 记录的第一个网络接口对应的修改工具。请注意,只有默认网络接口才拥有 PTR 记录。
  6. 点击启用公共 DNS PTR 记录
  7. 在 PTR 域名字段中输入您的域名。
  8. 点击完成以确认网络接口设置。
  9. 为新实例配置所需的其余属性。
  10. 在“创建实例”页面的底部,点击创建以创建实例。

在实例启动后,请对实例的外部 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]

其中:

  • [INSTANCE_NAME] 是新虚拟机实例的名称。
  • [IMAGE_FAMILY]可用的映像系列之一。
  • [IMAGE_PROJECT] 是映像系列所属的映像项目
  • [DOMAIN_NAME] 是您要添加到此实例的域名。

API

在 API 中,您可以构建一个 POST 请求以创建一个包含 PTR 记录的实例。然后,您可以为指定的网络访问配置添加 setPublicPtrpublicPtrDomainName 参数。

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 记录

如果您的虚拟机实例使用的是主网络接口,您可以启用或停用 PTR 记录,只需更新虚拟机实例的主网络接口“nic0”的访问配置即可。

如果您未配置网络访问权限,请添加访问配置,然后在网络接口菜单中启用 PTR 记录。

控制台

您可以使用 Google Cloud Platform Console 更新访问配置或将访问配置添加到您的实例中,具体步骤如下所示:

  1. 转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击您要修改的实例。
  3. 点击顶部菜单中的修改工具。
  4. 点击主网络接口旁边的修改工具。
  5. 点击外部 IP 下拉菜单。
  6. 配置您的外部 IP 以启用 PTR 记录。
  7. 选中公开 DNS PTR 记录对应的启用框。
  8. 输入您的域名。
  9. 点击完成
  10. 点击页面底部的保存以保存您的设置。

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 地址,但为指定的网络访问配置添加 setPublicPtrpublicPtrDomainName 参数。

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 请求,以便为您的网络接口创建一个新的访问配置。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档