管理地区

本页面说明如何创建 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://dns.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://dns.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)"

创建转发地区

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

如需了解其他信息,请参阅 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 网络中或使用 Google Cloud 或 Cloud Interconnect 连接的本地网络中。使用此标志指定的非 RFC 1918 IP 地址必须可通过互联网访问。 如需了解重要的背景信息,请参阅转发目标和路由方法
  • private-forwarding-targets-list:查询发送到的 IP 地址的列表,以英文逗号分隔。使用此标志指定的任何 IP 地址都必须位于您的 VPC 网络中或使用 Google Cloud 或 Cloud Interconnect 连接到 Google Cloud 的本地网络中。如需了解重要的背景信息,请参阅转发目标和路由方法

API

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

POST https://dns.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:第 1 步创建或找出的服务帐号,位于使用方 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:第 1 步中找出的服务帐号,位于使用方 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 向转发目标发送请求时,将发送下表中列出的来源范围内的数据包:

转发目标 来源范围
使用标准路由访问的 RFC 1918 转发目标
使用专用路由访问的任何转发目标
35.199.192.0/19
使用标准路由访问的非 RFC 1918 转发目标 Google 公共 DNS 来源范围

专用目标

当 Cloud DNS 使用标准路由访问 RFC 1918 转发目标时,或者当 Cloud DNS 使用专用路由访问任何目标时,您的本地网络必须满足以下要求:

  • 允许来自 35.199.192.0/19 的流量:您的本地网络防火墙和类似设备必须允许来自 35.199.192.0/19 的数据包。 Cloud DNS 对所有客户使用 35.199.192.0/19 来源范围。 35.199.192.0/19 地址范围只能通过 Google Cloud VPC 网络或连接到 VPC 网络的本地网络访问。
  • 通过 VPC 网络响应 35.199.192.0/19:您的本地网络必须具有通过 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN) 将以 35.199.192.0/19 为目标的响应流量定向回您的 VPC 网络的路由。 转发目标对 DNS 查询的响应不能通过互联网发送。如果您的本地网络通过互联网响应 35.199.192.0/19,则 Google Cloud 会忽略该响应。您可以通过以下两种方式中的其中一种来满足此路由要求:
    • 如果是使用静态路由的 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 上配置自定义路由通告
  • 定向来自转发目标的响应:Cloud DNS 要求接收数据包的转发目标域名服务器是向 35.199.192.0/19 发送回复的服务器。如果您的域名服务器将请求发送到其他域名服务器,并且该域名服务器响应了 35.199.192.0/19,则 Cloud DNS 会忽略该响应。出于安全原因,Google Cloud 要求每个转发目标的 DNS 回复的来源地址与该转发目标的 IP 地址相匹配。

公开目标

当 Cloud DNS 使用标准路由访问非 RFC 1918 转发目标时,它希望域名服务器能够公开访问。

后续步骤