管理地区

本页面说明如何创建 Cloud DNS 托管地区。 使用此页面之前,请先熟悉 Cloud DNS 概念

准备工作

Cloud DNS API 会要求您创建 Cloud DNS 项目并启用 Cloud DNS API。

如果您要创建使用 REST API 的应用,则还必须创建一个 OAuth 2.0 客户端 ID。

  1. 如果您还没有 Google 帐号,请注册一个帐号
  2. 在 Cloud Console 中启用 Cloud DNS API。您可以选择现有的 Compute Engine 或 App Engine 项目,也可以创建一个新项目。
  3. 如果您需要向 REST API 发出请求,则需要创建 OAuth 2.0 ID(请参阅设置 OAuth 2.0)。
  4. 请记录项目中的以下信息,后续步骤将需要输入这些信息:
    • 客户端 ID (xxxxxx.apps.googleusercontent.com)。
    • 您希望使用的项目 ID。您可以在 Cloud Console 的概览页面顶部找到此 ID。您也可以要求用户提供其要在您的应用中使用的项目名称。

如果您之前未运行过 gcloud 命令行工具,则必须运行以下命令来指定项目名称并进行 Cloud Console 身份验证:

gcloud auth login

如果您想要针对其他项目中的 Google Cloud 资源运行 gcloud 命令,请为此命令以及本页面所述其他 glcoud 命令指定 --project 选项。

创建托管地区

您创建的每个托管地区都与一个 Google Cloud 项目相关联。 以下几个部分介绍如何创建 Cloud DNS 支持的托管地区类型。

创建公开地区

如需创建新的托管地区,请执行以下操作:

控制台

  1. 转到 Cloud Console 中的“创建 DNS 地区”页面。

    转到“创建 DNS 地区”页面

  2. 选择 Public 作为地区类型

  3. 输入地区名称。例如 my-new-zone

  4. 使用一个您拥有的域名输入该地区的 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如:example.com

  5. DNSSEC 下,选择 OffOnTransfer。如需了解详情,请参阅 DNSSEC 配置

  6. 点击创建。随即系统将显示地区详情页面。

gcloud

如需创建新的托管地区,请使用 dns managed-zones create 命令:

gcloud dns managed-zones create name \
    --description=description \
    --dns-name=dns-suffix \
    --labels=labels \
    --visibility=public

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.com
  • labels:键值对的可选逗号分隔列表,例如 Dept:MarketingProject:project1。如需了解详情,请参阅 SDK 文档

API

如需使用 API 创建托管地区,请使用 managedZones.create 方法发送 POST 请求:

POST https://www.googleapis.com/dns/v1/projects/project-id/managedZones
{
  "name": "name",
  "description": "description",
  "dnsName": "dns-name",
  "visibility": "public"
}

替换以下命令选项:

  • project-id:创建托管地区的项目的 ID
  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.com

创建专用地区

如需创建专用 DNS 记录由 Cloud DNS 管理的新托管专用地区,请按照以下说明操作。如需了解其他信息,请参阅 Cloud DNS 专用地区最佳做法

控制台

  1. 转到 Cloud Console 中的“创建 DNS 地区”页面。

    转到“创建 DNS 地区”页面

  2. 选择 Private 作为地区类型

  3. 输入地区名称。例如 my-new-zone

  4. 为专用地区输入 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如:example.private

  5. (可选)添加说明

  6. 选择可以看见专用地区的 VPC 网络。 只有您选择的 VPC 网络才有权查询该地区中的记录。

  7. 点击创建

gcloud

如需创建新的托管专用地区,请使用 dns managed-zones create 命令:

gcloud dns managed-zones create name \
    --description=description \
    --dns-name=dns-suffix \
    --networks=vpc-network-list \
    --labels=labels \
    --visibility=private

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.private
  • vpc-network-list:有权查询地区的 VPC 网络的逗号分隔列表。这些网络必须与地区位于同一项目中。
  • labels:键值对的可选逗号分隔列表,例如 Dept:MarketingProject:project1。如需了解详情,请参阅 SDK 文档

API

如需使用 API 创建托管专用地区,请使用 managedZones.create 方法发送 POST 请求:

POST https://www.googleapis.com/dns/v1/projects/project-id/managedZones
{

"name": "name",
"description": "description",
"dnsName": "dns-name",
"visibility": "private"
"privateVisibilityConfig": {
    "kind": "dns#managedZonePrivateVisibilityConfig",
    "networks": [{
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": vpc-network-1
        },
        {
            "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
            "networkUrl": vpc-network-2
        },
        ....
    ]
}

替换以下命令选项:

  • project-id:创建托管地区的项目的 ID
  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.private
  • vpc-network-1vpc-network-2:同一项目中可以查询此地区中记录的 VPC 网络的网址。您可以按照指示添加多个 VPC 网络。要确定 VPC 网络的网址,请使用以下 gcloud 命令,并将 vpc-network-name 替换为网络的名称:
gcloud compute networks describe vpc-network-name \
    --format="get(selfLink)"

创建 Service Directory DNS 地区

您可以创建一个 Service Directory 地区,以允许基于 Google Cloud 的服务通过 DNS 查询您的 Service Directory 命名空间。

如需详细了解如何创建 Service Directory DNS 地区,请参阅配置 Service Directory DNS 地区

如需了解如何使用 DNS 查询 Service Directory,请参阅使用 DNS 进行查询

创建托管反向查找专用地区

托管反向查找地区是具有特殊属性的专用地区,它指示 Cloud DNS 对 Compute Engine DNS 数据执行 PTR 查找。您必须为 Cloud DNS 设置托管反向查找地区才能正确解析虚拟机的非 RFC 1918 PTR 记录。

控制台

  1. 转到 Cloud Console 中的“创建 DNS 地区”页面。

    转到“创建 DNS 地区”页面

  2. 选择 Private 作为地区类型

  3. 输入地区名称。例如 my-new-zone

  4. 为地区输入 DNS 名称后缀。后缀必须in-addr.arpa 结尾才能成为反向地区。此 DNS 名称必须与您尝试通过 Cloud DNS 解析的非 RFC 1918 PTR 记录的反向查找名称相匹配。例如,如果您要尝试匹配 20.20.1.2 的 PTR 记录,则必须创建 DNS 名称为 2.1.20.20.in-addr.arpa 的反向查找地区。

  5. (可选)添加说明

  6. 选项下方,选择 Managed reverse lookup zone

  7. 选择可以看见专用地区的网络。

  8. 点击创建

gcloud

要创建新的托管反向查找专用地区,请使用 dns managed-zones create 命令:

gcloud dns managed-zones create name \
    --description=description \
    --dns-name=dns-suffix \
    --networks=vpc-network-list \
    --visibility=private \
    --managed-reverse-lookup=true

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:反向地区的 DNS 后缀。它必须以 .in-addr.arpa 结尾。通常,反向地区采用以下形式:${ip_block_in_reverse}.in-addr.arpa
  • vpc-network-list:包含 PTR 记录解析到的 Google Cloud 资源的 VPC 网络的逗号分隔列表

创建转发地区

如需创建新的托管专用转发地区,请按照以下说明操作。在开始之前,请务必了解标准路由和专用路由之间的区别以及转发目标的网络要求

如需了解其他信息,请参阅 Cloud DNS 转发地区的最佳做法

控制台

  1. 转到 Cloud Console 中的创建 DNS 地区页面。

    转到“创建 DNS 地区”页面

  2. 选择 Private 作为地区类型

  3. 输入地区名称。例如 my-new-zone

  4. 为专用地区输入 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如 example.private

  5. (可选)添加说明

  6. 选项下,选择将查询转发到其他服务器

  7. 选择可以看见专用地区的网络。

  8. 点击添加项目以添加转发目标的 IPv4 地址。您可以添加多个 IP 地址。

  9. 如需强制通过专用路由发送到转发目标,请选中专用转发启用旁边的复选框。关于路由到转发目标的方法,如需了解重要背景信息,请参阅转发目标和路由方法

  10. 点击创建

gcloud

如需创建新的托管专用转发地区,请使用 dns managed-zones create 命令:

gcloud dns managed-zones create name \
    --description=description \
    --dns-name=dns-suffix \
    --networks=vpc-network-list \
    --forwarding-targets=forwarding-targets-list \
    --private-forwarding-targets=private-forwarding-targets-list \
    --visibility=private

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.private
  • vpc-network-list:有权查询地区的 VPC 网络的逗号分隔列表。这些网络必须与地区位于同一项目中。
  • forwarding-targets-list:将查询发送到的 IP 地址的逗号分隔列表。使用此标志指定的 RFC 1918 IP 地址必须位于您的 VPC 网络,或者使用 Cloud VPN 或 Cloud Interconnect 连接到 Google Cloud 的本地网络。使用此标志指定的非 RFC 1918 IP 地址必须可通过互联网访问。如需了解重要的背景信息,请参阅转发目标和路由方法
  • private-forwarding-targets-list:将查询发送到的 IP 地址的逗号分隔列表。使用此标志指定的任何 IP 地址都必须位于您的 VPC 网络中或使用 Google Cloud 或 Cloud Interconnect 连接到 Google Cloud 的本地网络中。如需了解重要的背景信息,请参阅转发目标和路由方法

API

如需使用 API 创建托管专用转发地区,请使用 managedZones.create 方法发送 POST 请求:

POST https://www.googleapis.com/dns/v1/projects/project-id/managedZones
{

    "name": "name",
    "description": "description",
    "dnsName": "dns-name",
    "visibility": "private"
    "privateVisibilityConfig": {
        "kind": "dns#managedZonePrivateVisibilityConfig",
        "networks": [{
                "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
                "networkUrl": vpc-network-1
            },
            {
                "kind": "dns#managedZonePrivateVisibilityConfigNetwork",
                "networkUrl": vpc-network-2
            },
            ....
        ]
    },
    "forwardingConfig": {
        "kind": "dns#managedZoneForwardingConfig",
        "targetNameServers": [{
                "kind": "dns#managedZoneForwardingConfigNameServerTarget",
                "ipv4Address": <
                    var>forwarding-target-1
            },
            {
                "kind": "dns#managedZoneForwardingConfigNameServerTarget",
                "ipv4Address": forwarding-target-2
            },
            ....
        ]
    },
}

替换以下命令选项:

  • project-id:创建托管地区的项目的 ID
  • name:您的地区的名称
  • description:您的地区的说明
  • dns-name:您的地区的 DNS 后缀,如 example.private
  • vpc-network-1vpc-network-2:VPC 网络的网址,位于同一项目中,能够查询此地区中的记录。您可以按照指示添加多个 VPC 网络。要确定 VPC 网络的网址,请使用以下 gcloud 命令描述网络,并将 vpc-network-name 替换为网络的名称:

    gcloud compute networks describe vpc-network-name \
       --format="get(selfLink)"
    
  • forwarding-target-1forwarding-target-2:转发目标域名服务器的 IP 地址。您可以按照指示添加多个转发目标。此处指定的 RFC 1918 IP 地址必须位于您的 VPC 网络中或使用 Google Cloud 或 Cloud Interconnect 连接到 Google Cloud 的本地网络中。使用此标志指定的非 RFC 1918 IP 地址必须可通过互联网访问。如需了解重要的背景信息,请参阅转发目标和路由方法

创建对等互连地区

当您需要一个 VPC 网络(称为使用方网络)来查询另一个 VPC 网络(称为提供方网络)的 VPC 名称解析顺序时,请创建一个新的托管专用对等互连地区。如需了解重要的背景信息,请参阅 DNS 对等互连

控制台

  1. 转到 Cloud Console 中的“创建 DNS 地区”页面。

    转到“创建 DNS 地区”页面

  2. 选择 Private 作为地区类型

  3. 输入地区名称。例如 my-new-zone

  4. 为专用地区输入 DNS 名称后缀。该地区中的所有记录都具有此后缀,例如:example.private

  5. (可选)添加说明

  6. 选择专用地区必须在其中公开的网络。

  7. DNS 对等互连下,选中启用 DNS 对等互连旁边的复选框。

  8. 对等项目下,选择一个对等项目。

  9. 对等网络下,选择一个对等网络。

  10. 点击创建

gcloud

  1. 在使用方 VPC 网络所在项目中,找出或创建服务帐号

  2. DNS Peer 角色授予提供方 VPC 网络所在项目中的服务帐号(来自上一步)。

    gcloud projects add-iam-policy-binding producer-project-id \
       --member=service-account \
       --role=roles/dns.peer
    

    替换以下命令选项:

    • producer-project-id:包含制作者 VPC 网络的项目的 ID
    • service-account:在第一步中创建或标识的包含使用方 VPC 网络的项目中的服务帐号
  3. 在使用方 VPC 网络所在的项目中,使用 dns managed-zones create 命令创建新的托管专用对等互连地区:

    gcloud dns managed-zones create name \
      --description=description \
      --dns-name=dns-suffix \
      --networks=consumer-vpc-network \
      --account=service-account \
      --target-network=producer-vpc-network \
      --target-project=producer-project-id \
      --visibility=private
    

    替换以下命令选项:

    • name:您的地区的名称
    • description:您的地区的说明
    • dns-name:您的地区的 DNS 后缀,如 example.com
    • consumer-vpc-network:使用方 VPC 网络的名称
    • service-account:在第一步中标识的包含使用方 VPC 网络的项目中的服务帐号。如果省略,gcloud 命令行工具会使用当前处于活动状态的 Cloud IAM 成员,如 gcloud auth list 所示那样。
    • producer-vpc-network:制作者 VPC 网络的名称
    • producer-project-id:包含制作者 VPC 网络的项目的 ID

更新托管地区

Cloud DNS 允许您修改托管公开或托管专用地区的某些特性。

更新公开地区

您可以更改公开地区的说明或 DNSSEC 配置

控制台

  1. 转到 Cloud Console 中的 Cloud DNS 页面。

    转到 Cloud DNS 页面

  2. 点击您要更新的公开地区。

  3. 点击修改

  4. 如需更改 DNSSEC 设置,请在 DNSSEC 下,选择 OffOnTransfer。如需了解详情,请参阅 DNSSEC 配置

  5. (可选)更新说明。

  6. 点击保存

gcloud

如需更新托管地区,请使用 dns managed-zones update 命令:

gcloud dns managed-zones update name \
    --description=description \
    --dnssec-state=state

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • state:DNSSEC 状态。如需了解详情,请参阅 DNSSEC 配置SDK 文档

更新专用地区的授权网络

如需修改可以看见专用地区的 VPC 网络,请执行以下操作:

控制台

  1. 转到 Cloud Console 中的 Cloud DNS 页面。

    转到 Cloud DNS 页面

  2. 点击您要更新的专用地区。

  3. 点击修改

  4. 选择可以看见专用地区的 VPC 网络。 只有您选择的 VPC 网络才有权查询该地区中的记录。

  5. 点击保存

gcloud

如需更新托管专用地区的授权 VPC 网络,请使用 dns managed-zones update 命令:

gcloud dns managed-zones update name \
    --description=description \
    --networks=vpc-network-list

替换以下命令选项:

  • name:您的地区的名称
  • description:您的地区的说明
  • vpc-network-list:有权查询地区的 VPC 网络的逗号分隔列表。这些网络必须与地区位于同一项目中。

更新标签

如需在托管地区中添加新标签,更改现有标签,移除所选标签或清除所有标签,请按照如下所示,使用 dns managed-zones update 命令:

gcloud dns managed-zones update name \
    --update-labels=labels
gcloud dns managed-zones update name \
    --remove-labels=labels
gcloud dns managed-zones update name \
    --clear-labels

替换以下命令选项:

  • name:您的地区的名称
  • labels:键值对的可选逗号分隔列表,例如 Dept:MarketingProject:project1。如需了解详情,请参阅 SDK 文档

列出和描述托管地区

列出托管地区

如需列出项目中的所有地区,请执行以下操作:

控制台

  1. 托管地区会显示在 Cloud Console 的 Cloud DNS 地区页面上。

    转到 Cloud DNS 页面

gcloud

如需列出所有托管地区,请使用 dns managed-zones list 命令:

gcloud dns managed-zones list

如需列出所有托管地区,请按如下所示修改命令:

gcloud dns managed-zones list \
   --filter="visibility=public"

如需列出所有托管专用地区,请按如下所示修改命令:

gcloud dns managed-zones list \
   --filter="visibility=private"

描述托管地区

如需查看托管地区的特性,请执行以下操作:

控制台

  1. 转到 Cloud Console 中的 Cloud DNS 地区页面。

    转到 Cloud DNS 页面

  2. 点击要检查的地区。

gcloud

如需查看新托管地区的特性,请使用 dns managed-zones describe 命令:

gcloud dns managed-zones describe name

替换以下命令选项:

  • name:您的地区的名称

删除托管地区

控制台

  1. 转到 Cloud Console 中的 Cloud DNS 页面。

    转到 Cloud DNS 页面

  2. 点击要删除的托管地区。

  3. 移除该地区中除 SOANS 记录之外的所有记录。 如需了解详情,请参阅添加或移除记录

  4. 点击删除地区

gcloud

  1. 移除该地区中除 SOANS 记录之外的所有记录。 如需了解详情,请参阅添加或移除记录。 您可以通过将空文件导入记录集来快速清空整个地区。如需了解详情,请参阅导入和导出记录集。例如:

    touch empty-file
    gcloud dns record-sets import -z name \
       --delete-all-existing \
       empty-file
    rm empty-file
    

    替换以下命令选项:

    • name:您的地区的名称
  2. 如需删除新的托管专用地区,请使用 dns managed-zones delete 命令:

    gcloud dns managed-zones delete name
    

    替换以下命令选项:

    • name:您的地区的名称

转发目标网络要求

当 Cloud DNS 向转发目标发送请求时,将发送下表中列出的来源范围内的数据包。如需详细了解不同类型的目标,请参阅转发目标和路由方法

转发目标类型 来源范围
  • 类型 1 目标
    (VPC 网络中有权使用转发地区的虚拟机)
  • 类型 2 目标
    (在本地,连接到有权使用转发地区的 VPC 网络)
35.199.192.0/19
Cloud DNS 对所有客户使用 35.199.192.0/19 来源范围。此范围只能从 Google Cloud VPC 网络或连接到 VPC 网络的本地网络访问。
  • 类型 3 目标
    (可通过互联网访问)
Google 公共 DNS 来源范围

类型 1 和类型 2 目标

Cloud DNS 需要以下项才能访问类型 1 或类型 2 目标。无论目标是 RFC 1918 IP 地址,还是正在使用标准路由,或者您显式选择专用路由,这些要求都是一样的:

  • 35.199.192.0/19 的防火墙配置:对于类型 1 目标,为 TCP 和 UDP 端口 53 流量创建入站允许防火墙规则,以适用于每个授权 VPC 网络中的转发目标。对于类型 2 目标,请配置本地网络防火墙和类似设备,以允许 TCP 和 UDP 端口 53
  • 转发目标的路由:对于类型 1 目标,Cloud DNS 使用子网路由访问有权使用转发地区的 VPC 网络中的目标。对于类型 2 名称目标,Cloud DNS 使用自定义动态或自定义静态路由(标记的静态路由除外)访问转发目标。
  • 35.199.192.0/19 通过同一 VPC 网络的返回路由:对于类型 1 目标,Google Cloud 会为 35.199.192.0/19 目的地自动添加特殊返回路由。对于类型 2 目标,您的本地网络必须具有 35.199.192.0/19 目的地的路由,其下一个跃点位于发起请求的同一 VPC 网络和区域,经过 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN)。如需了解如何满足此要求,请参阅类型 2 目标的返回路由策略

  • 定向目标进行的响应:Cloud DNS 要求接收数据包的转发目标是将回复发送到 35.199.192.0/19 的转发目标。如果您的转发目标将请求发送到其他域名服务器,并且该域名服务器响应了 35.199.192.0/19,则 Cloud DNS 会忽略该响应。出于安全原因,Google Cloud 要求各目标域名服务器 DNS 回复的来源地址与该转发目标的 IP 地址相匹配。

类型 2 目标的返回路由策略

Cloud DNS 无法通过互联网、通过不同的 VPC 网络从类型 2 转发目标发送响应,或者发送到不同区域(即使位于同一 VPC 网络中)。响应必须返回到同一区域和 VPC 网络,但可以使用同一区域和同一网络中的任何 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN)。

  • 如果是使用静态路由的 Cloud VPN 隧道,请在本地网络中手动创建目的地为 35.199.192.0/19 且下一个跃点为 Cloud VPN 隧道的路由。如果是使用基于政策的路由的 Cloud VPN 隧道,请配置 Cloud VPN 的本地流量选择器和本地 VPN 网关的远程流量选择器,使其包含 35.199.192.0/19
  • 如果是使用动态路由或用于 Cloud Interconnect 的 Cloud VPN 隧道,请在管理该隧道或互连连接 (VLAN) 的 Cloud Router 的 BGP 会话上为 35.199.192.0/19 配置自定义路由通告

类型 3 目标

当 Cloud DNS 使用标准路由访问非 RFC 1918 IP 地址时,它希望转发目标可公开访问。

后续步骤