管理区域

本页面介绍如何创建、更新、列出和删除 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 命令,请为此命令和本页中的其他 gcloud 命令指定 --project 选项。

创建托管区域

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

创建公开地区

如需创建新的代管可用区,请完成以下步骤。

控制台

  1. 在 Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择公开

  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_SUFFIX:您的可用区的 DNS 后缀,例如 example.com
  • LABELS:(可选)以英文逗号分隔的键值对列表,例如 dept=marketingproject=project1;如需了解详情,请参阅 SDK 文档

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

创建专用地区

如需使用 Cloud DNS 管理的专用 DNS 记录创建新的代管专用可用区,请完成以下步骤。如需了解详情,请参阅 Cloud DNS 专用可用区的最佳做法

控制台

  1. 在 Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择专用

  3. 输入可用区名称,例如 my-new-zone

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

  5. 可选:添加说明。

  6. 选项下,选择默认(专用)

  7. 选择专用可用区必须可见的 Virtual Private Cloud (VPC) 网络。只有您选择的 VPC 网络才有权查询该地区中的记录。

  8. 点击创建

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_SUFFIX:您的可用区的 DNS 后缀,例如 example.private
  • VPC_NETWORK_LIST:有权查询可用区的 VPC 网络(以英文逗号分隔)的列表;这些网络必须与可用区位于同一项目中
  • LABELS:(可选)以英文逗号分隔的键值对列表,例如 dept=marketingproject=project1;如需了解详情,请参阅 SDK 文档

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)"
    

创建 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. 对于可用区类型,请选择专用

  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. 选项下,选择代管反向查找可用区

  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_SUFFIX:反向可用区的 DNS 后缀,必须以 .in-addr.arpa 结尾;通常情况下,反向可用区采用以下格式:${ip_block_in_reverse}.in-addr.arpa
  • VPC_NETWORK_LIST:包含 PTR 记录所解析成的 Google Cloud 资源的 VPC 网络的英文逗号分隔列表

创建转发地区

如需创建新的代管专用转发可用区,请完成以下步骤。

在开始之前,请确保您了解以下内容:

控制台

  1. 在 Cloud Console 中,转到创建 DNS 可用区页面。

    转到“创建 DNS 可用区”

  2. 对于可用区类型,请选择专用

  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_SUFFIX:您的可用区的 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

使用 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": 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. 对于可用区类型,请选择专用

  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_SUFFIX:您的可用区的 DNS 后缀,例如 example.com
    • CONSUMER_VPC_NETWORK:使用方 VPC 网络的名称
    • SERVICE_ACCOUNT:步骤 1 中标识的使用方 VPC 网络所属项目中的服务帐号;如果省略,gcloud 工具会使用当前有效的 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 设置,例如 OffOnTransfer

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

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

  3. 点击 修改

  4. 选择专用可用区必须在其中公开的 VPC 网络。只有您选择的 VPC 网络才有权查询该地区中的记录。

  5. 点击保存

gcloud

运行 dns managed-zones update 命令:

gcloud dns managed-zones update NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST

请替换以下内容:

  • NAME:您的可用区的名称
  • DESCRIPTION:您的可用区的说明
  • VPC_NETWORK_LIST:有权查询可用区的 VPC 网络(以英文逗号分隔)的列表;这些网络必须与可用区位于同一项目中

更新标签

如需在代管可用区中添加新标签、更改现有标签、移除所选标签或清除所有标签,请完成以下步骤。

gcloud

运行 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 可用区

  2. 在右侧窗格中查看代管可用区。

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 网络中的 Google Cloud 虚拟机的内部 IP 地址

类型 2 目标

本地系统的 IP 地址,使用 Cloud VPN 或 Cloud Interconnect 连接到有权使用转发可用区的 VPC 网络。

35.199.192.0/19

Cloud DNS 对所有客户使用 35.199.192.0/19 来源范围。 此范围只能从 Google Cloud VPC 网络或连接到 VPC 网络的本地网络访问。

类型 3 目标

可供互联网或 Google Cloud 资源的外部 IP 地址访问的 DNS 域名服务器的外部 IP 地址例如,另一个 VPC 网络中虚拟机的外部 IP 地址。

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 网络,但它们可以使用同一网络中的任何 Cloud VPN 隧道或 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 使用标准路由访问外部 IP 地址时,它要求备用域名服务器是互联网上的系统、可公开访问或 Google Cloud 资源的外部 IP 地址。

例如,类型 3 目标包括其他 VPC 网络中虚拟机的外部 IP 地址。

不支持通过专用路由发送到类型 3 目标。

后续步骤