概览

本页面简要介绍 Cloud DNS 的特性和功能。如需开始使用 Cloud DNS,请参阅快速入门

简介

Cloud DNS 是一种高性能、高弹性的全球域名系统 (DNS) 服务,也是将您的域名发布到全球 DNS 的一种经济实惠的方式。

概念

DNS 是一个分布式的分层数据库,可供您存储 IP 地址和其他数据,以及按名称查找这些内容。 借助 Cloud DNS,您可以在 DNS 中发布地区和记录,而无需管理自己的 DNS 服务器和软件。

如需常规 DNS 术语的列表,请参阅常规 DNS 概览

Cloud DNS 提供公开地区专用的托管 DNS 地区。公开地区在公共互联网上可见,而专用地区仅在您指定的一个或多个 VPC 网络中可见。

Cloud DNS 术语

Cloud DNS API 围绕项目托管地区记录集和记录集更改构建而成。

项目
Google Cloud Console 项目是一个资源容器、一个访问权限控制网域,还是配置和汇总帐单的地方。如需了解详情,请参阅创建和管理项目
托管地区
托管地区保存具有相同 DNS 名称后缀(例如 example.com)的 DNS 记录。一个项目可以有多个托管地区,但这些地区必须各自有唯一的名称。在 Cloud DNS 中,托管地区是模仿 DNS 地区的资源。托管地区中的所有记录都托管在由 Google 运营的同一域名服务器上。这些域名服务器会根据托管地区的配置方式响应针对该地区的 DNS 查询。一个项目可以包含多个托管地区。 每个托管地区的费用按该地区的存在时间每天累计。托管地区支持标签,您可以用标签来整理您的帐单。
公开地区

公开地区在互联网上可见。Cloud DNS 具有公开的权威域名服务器,它们可以响应任意位置对公开地区的查询。您可以在公开地区中创建 DNS 记录,以将您的服务发布到互联网上。例如,您可以在公开地区 example.com 中为您的公开网站 www.example.com 创建以下记录。

DNS 名称 类型 TTL(秒) 数据
www.example.com A 300 198.51.100.0

创建公开区域时,Cloud DNS 会分配一组域名服务器。如需使公开区域中的 DNS 记录可通过互联网解析,您必须在注册商处更新网域注册的域名服务器设置

如需详细了解如何注册和设置网域,请参阅使用 Cloud DNS 设置网域

专用地区

通过专用地区,您可以管理虚拟机、负载平衡器和其他 Google Cloud 资源的自定义域名,而无需将底层 DNS 数据暴露给公共互联网。专用地区用于存放只能供您授权的一个或多个 VPC 网络查询的 DNS 记录。

专用地区只能供与该地区属于同一项目的资源查询。您授权的 VPC 网络必须与专用地区位于同一项目中。如果您需要查询其他项目中的托管专用地区中托管的记录,请使用 DNS 对等互连

创建或更新专用地区时,您必须指定获得授权的 VPC 网络(可以查询您的专用地区)的列表。只有获得授权的网络才可以查询您的专用地区;如果您没有指定任何获得授权的网络,则无法查询该专用地区。

您可以将专用地区与共享 VPC 一起使用。如需了解如何将专用地区与共享 VPC 一起使用,请参阅共享 VPC 注意事项

专用地区不支持 DNS 安全扩展程序 (DNSSEC) 或类型为 NS 的自定义资源记录集。

针对专用地区中 DNS 记录的请求必须通过元数据服务器 (169.254.169.254) 提交,该服务器是基于 Google 提供的映像创建的虚拟机的默认内部域名服务器。您可以从任何使用授权 VPC 网络的虚拟机向此域名服务器提交查询。

例如,您可以为 dev.gcp.example.com 创建一个专用地区,以此托管实验性应用的内部 DNS 记录。下表显示了该地区中的示例记录。数据库客户端可以使用其内部 DNS 名称(而不是其 IP 地址)连接到数据库服务器 (db-01.dev.gcp.example.com)。数据库客户端会使用虚拟机上的主机解析器解析此内部 DNS 名称,该解析器会将 DNS 查询提交到元数据服务器 (169.254.169.254)。元数据服务器充当递归解析器,用于对您的专用地区执行查询。

DNS 名称 类型 TTL(秒) 数据
db-01.dev.gcp.example.com A 5 10.128.1.35
instance-01.dev.gcp.example.com A 50 10.128.1.10

使用专用地区可以创建水平分割 DNS 配置。这是因为您可以创建具有不同记录集的专用地区,这些记录集将覆盖公开地区中的记录集。然后,您可以控制哪些 VPC 网络查询专用地区中的记录。如需查看示例,请参阅重叠地区

Service Directory

Service Directory 是 Google Cloud 的代管式服务注册表。除了使用传统 DNS 之外,它还让您可使用 HTTP 或 gRPC(使用其 Lookup API)注册和发现服务。您可以使用 Service Directory 注册 Google Cloud 和非 Google Cloud 服务。

Cloud DNS 允许您创建受 Service Directory 支持的地区,这是一种专用地区类型,包含有关您的服务和端点的信息。您不会将记录集添加到地区;而是根据与地区关联的 Service Directory 命名空间的配置自动推断。如需详细了解 Service Directory,请参阅 Service Directory 概览

Cloud DNS 和非 RFC 1918 地址

默认情况下,Cloud DNS 通过公共互联网转发到非 RFC 1918 地址。但是,Cloud DNS 还支持转发到专用地区的非 RFC 1918 地址。

将 VPC 网络配置为使用非 RFC 1918 地址后,必须将 Cloud DNS 专用地区配置为托管反向查找地区。此配置使 Cloud DNS 能够在本地解析非 RFC 1918 地址,而不是通过互联网发送这些地址。

Cloud DNS 还支持在 Google Cloud 中以私密方式路由这些地址,从而向非 RFC 1918 地址进行出站转发。要启用这种类型的出站转发,必须使用特定转发路径参数配置转发地区。如需了解详情,请参阅创建出站服务器政策

转发地区

转发地区是一种由 Cloud DNS 托管的专用地区,它会将对于该地区的请求发送至其转发目标的 IP 地址。 如需了解详情,请参阅 DNS 转发方法

对等互连地区

对等互连地区是一种由 Cloud DNS 托管的专用地区,这些地区遵循另一个 VPC 网络的名称解析顺序,可用于解析另外这个 VPC 网络中定义的名称。

地区操作

您对 Cloud DNS 托管地区所做的任何更改都会记录在操作集合中,该集合列出了托管地区更新(对说明、DNSSEC 状态或配置进行修改)。

国际化域名 (IDN)

国际化域名 (IDN) 是一种互联网域名,让世界各地的用户可在域名中使用特定于语言的文字或字母,如阿拉伯语、中文、西里尔文、梵文、希伯来语或基于拉丁字母的特殊字符。此转换是使用 Punycode(使用 ASCII 的 Unicode 字符表示法)实施的。例如,.ελ的 IDN 表示法是 .xn--qxam。某些浏览器、电子邮件客户端和应用可能会识别它,并代表您以 .ελ 的形式呈现它。请注意,应用国际化域名 (IDNA) 标准仅允许将长度足够短的 Unicode 字符串表示为有效 DNS 标签。如需了解如何将 IDN 与 Cloud DNS 搭配使用,请参阅创建具有国际化域名的区域

注册商

域名注册商是一个管理互联网域名预留的组织。 注册商必须经通用顶级网域 (gTLD) 域名注册管理机构或国家/地区代码顶级网域 (ccTLD) 域名注册管理机构认可。

内部 DNS

即便您不使用 Cloud DNS,Google Cloud 也会自动为虚拟机创建内部 DNS 名称。如需详细了解内部 DNS,请参阅内部 DNS 文档

委派子地区

DNS 允许地区所有者使用 NS 记录将子网域委派给不同的域名服务器。解析器会按照这些记录,将对子网域的查询发送到委派中指定的目标域名服务器。

资源记录集集合

资源记录集集合包含构成托管地区的 DNS 记录的当前状态。您可以读取此集合,但不能直接对其进行修改。如需修改托管地区中的资源记录集,您可以在更改集合中创建一个 Change 请求。资源记录集集合会立即反映您所做的全部更改。 但是,在 API 中进行的更改要经过一段延迟才会在您的权威 DNS 服务器上生效。如需了解如何管理记录,请参阅管理记录

资源记录更改

如需更改资源记录集集合,请提交一个包含添加或删除操作的 Change 请求。您可以通过一项原子化事务来执行批量添加和删除操作,使所做更改在各个权威 DNS 服务器中同时生效。

例如,如果您的 A 记录如下所示:

www  A  203.0.113.1 203.0.113.2

您运行了如下命令:

DEL  www  A  203.0.113.2
ADD  www  A  203.0.113.3

执行批量更改后,您的记录将如下所示:

www  A  203.0.113.1 203.0.113.3

ADD 和 DEL 同时发生。

SOA 序列号格式

随着使用 gcloud dns record-sets transaction 命令对地区记录集进行的每次事务性更改,在 Cloud DNS 托管地区中创建的 SOA 记录的序列号会单调递增。您可以随时将 SOA 记录的序列号手动更改为任意数字,但是,务必要包含 RFC 1912 中建议的 ISO 8601 格式的日期。例如,在以下 SOA 记录中:

ns-gcp-private.googledomains.com. cloud-dns-hostmaster.google.com. [serial number] 21600 3600 259200 300

您可以直接在 Google Cloud Console 中更改序列号,只需将所需值输入该记录的第三个空格分隔字段即可。

DNS 服务器政策

借助 DNS 服务器政策,您可以在带有入站转发的 VPC 网络中访问 Google Cloud 提供的名称解析服务,或者通过出站转发更改 VPC 名称解析顺序

网域、子网域和委派

大多数子网域只是父网域托管地区中的记录。如果子网域是通过在其父网域的地区中创建 NS(域名服务器)记录委派的,则子网域还需要拥有自己的地区。请先在 Cloud DNS 中为父网域创建托管地区,然后再为委托的子网域创建任何地区。即使父网域托管在其他 DNS 服务上也是如此。 如果您有多个子网域地区,但没有创建父地区,那么日后若想创建父地区以将其迁移到 Cloud DNS,则过程可能会非常复杂

DNSSEC

域名系统安全扩展程序 (DNSSEC) 是一套针对 DNS 的互联网工程任务组 (IETF) 扩展程序,用于验证对域名查找的响应。DNSSEC 不会为这些查找提供隐私保护,但会阻止攻击者操控对 DNS 请求的响应或对该响应进行投毒攻击。

DNSKEY 集合

DNSKEY 集合包含用于对启用了 DNSSEC 的托管地区进行签名的 DNSKEY 记录的当前状态。您只能读取此集合;对 DNSKEY 的所有更改均由 Cloud DNS 完成。DNSKEY 集合包含网域注册商激活 DNSSEC 所需的全部信息。

共享 VPC 注意事项

如需将 Cloud DNS 托管专用地区、Cloud DNS 转发地区或 Cloud DNS 对等互连地区与共享 VPC 搭配使用,您必须在宿主项目中创建地区,然后将相应的共享 VPC 网络添加到该地区已获授权的网络列表中。

如需了解详情,请参阅 Cloud DNS 专用地区的最佳做法

VPC 名称解析顺序

每个 VPC 网络都会为使用该网络的虚拟机实例提供 DNS 名称解析服务。如果虚拟机使用其元数据服务器 (169.254.169.254) 作为其域名服务器,Google Cloud 会按照以下顺序搜索 DNS 记录:

  • 如果您的 VPC 网络配置有出站服务器政策,Google Cloud 会将所有 DNS 查询转发到这些备用服务器。VPC 名称解析顺序仅包含此步骤。

  • 如果您的 VPC 网络没有配置出站服务器政策:

    1. Google Cloud 会尝试查找尽可能与所请求的记录相匹配(最长后缀匹配)的专用地区。这包括:
      • 搜索您在专用地区中创建的记录
      • 查询转发地区的转发目标
      • 使用对等互连地区查询其他 VPC 网络的名称解析顺序
    2. Google Cloud 会搜索为项目自动创建的 Compute Engine 内部 DNS 记录。
    3. Google Cloud 按照适当配置的起始授权机构 (SOA) 查询公开可用的地区,其中包括 Cloud DNS 公开地区。

DNS 转发方法

Google Cloud 为专用地区提供入站和出站 DNS 转发。

  • “入站转发”是指启用本地 DNS 客户端或服务器以向 Cloud DNS 发送 DNS 请求。然后,DNS 客户端或服务器可以根据 VPC 网络的名称解析顺序解析记录。入站转发可让本地客户端解析 VPC 网络已获授权的专用地区、转发地区和对等互连地区中的记录。本地客户端使用 Cloud VPN 或 Cloud Interconnect 连接到 VPC 网络。

  • “出站转发”是指在 Google Cloud 中启用虚拟机以将 DNS 请求发送到您选择的 DNS 域名服务器。域名服务器可以位于同一 VPC 网络,也可以位于本地网络或互联网上。

您可以通过创建转发地区或创建 Cloud DNS 服务器政策来配置 DNS 转发。下表就这两种方法进行了总结:

转发 Cloud DNS 方法
入站 如果您为某一 VPC 网络创建了入站服务器政策,则本地系统可以向该 VPC 网络发送请求以使用该网络的 VPC 名称解析顺序
出站 您可以将 VPC 网络中的虚拟机配置为:
  • 解析托管在域名服务器上的记录,该服务器配置为转发授权由您的 VPC 网络使用的转发地区的目标。如需了解 Google Cloud 如何将流量路由到转发目标的 IP 地址,请参阅转发目标和路由方法
  • 通过为 VPC 网络创建出站服务器政策,向所有 DNS 请求发送备用域名服务器。使用备用域名服务器时,VPC 网络中的虚拟机将无法再解析 Cloud DNS 专用地区、转发地区或对等互连地区中的记录。如需了解其他详情,请仔细查看 VPC 名称解析顺序

您可以同时为 VPC 网络配置入站和出站转发。借助双向转发,VPC 网络中的虚拟机可以解析本地网络或由其他云服务商托管的网络中的记录。此类转发还使本地网络中的主机能够为 Google Cloud 资源解析记录。

Cloud DNS 控制平面使用算法确定转发目标的响应能力。您的出站转发查询有时可能会导致 SERVFAIL 错误。如需了解如何解决此问题,请参阅“问题排查”文档中的相关部分

专用地区中的 PTR 记录

RFC 1918 地址的 PTR 记录

如需对 RFC 1918 地址的自定义 PTR 记录执行反向查找,您必须创建一个 Cloud DNS 专用地区,该专用地区至少与以下某个示例地区一样具体。这是 VPC 名称解析顺序中描述的最长后缀匹配造成的。

  • 10.in-addr.arpa.
  • 168.192.in-addr.arpa.
  • 16.172.in-addr.arpa.17.172.in-addr.arpa.、......一直到 31.172.in-addr.arpa.

如果您为 RFC 1918 地址创建了 Cloud DNS 专用地区,则您为该地区中的虚拟机创建的自定义 PTR 记录会被 Compute Engine 内部 DNS 自动创建的 PTR 记录覆盖。这是因为 Compute Engine 内部 DNS PTR 记录是在之前的、更具体的地区列表中创建的。

举例来说,假设您为 in-addr.arpa. 创建了托管专用地区,其 IP 地址为 10.1.1.1 的虚拟机具有以下 PTR 记录:

1.1.1.10.in-addr.arpa. -> test.example.domain

PTR 对 1.1.1.10.in-addr.arpa. 的查询将由更加具体的 10.in-addr.arpa. Compute Engine 内部 DNS 地区应答。系统将忽略您的 Cloud DNS 专用地区中针对 test.example.domain 的 PTR 记录。

如需替换针对虚拟机自动创建的 Compute Engine 内部 DNS PTR 记录,请务必在至少和本部分给出的其中一个地区一样具体的专用地区中创建您的自定义 PTR 记录。 例如,如果您在某个专用地区中为 10.in-addr.arpa. 创建以下 PTR 记录,则您的记录会替换自动生成的记录:

1.1.1.10.in-addr.arpa. -> test.example.domain

如果只需要替换一部分网络块,您还可以创建更加具体的反向 Cloud DNS 专用地区。例如,5.10.in-addr.arpa. 的专用地区可用于保留 PTR 记录,以覆盖为 IP 地址在 10.5.0.0/16 地址范围内的虚拟机自动创建的任何 Compute Engine 内部 DNS PTR 记录。

支持的 DNS 记录类型

Cloud DNS 支持以下类型的记录:

记录类型 说明
A

地址记录,用于将主机名映射到其 IPv4 地址。

AAAA

IPv6 地址记录,用于将主机名映射到其 IPv6 地址。

CAA

证书授权机构 (CA) 授权,用于指定允许哪些 CA 为网域创建证书。

CNAME

规范名称记录,用于指定别名。
Cloud DNS 不支持跨不同的托管专用地区以递归方式解析 CNAME(CNAME 追踪)。如需了解详情,请参阅问题排查

IPSECKEY

支持 IPSEC 的客户端的 IPSEC 隧道网关数据和公钥,用于实现随机加密

MX

邮件交换记录,用于将请求路由到邮件服务器。

NAPTR

域名授权机构指针记录(由 RFC 3403 定义)。

NS

域名服务器记录,用于将 DNS 地区委托给权威服务器。

PTR

指针记录,通常用于 DNS 反向查找。

SOA

起始授权机构记录,用于指定有关 DNS 地区的权威信息。创建托管地区时,系统会为您创建一条 SOA 资源记录。您可以根据需要修改此记录(例如,您可以将序列号更改为任意数字以支持基于日期的版本控制)。

SPF

发件人政策框架记录,此记录类型已被弃用,以前用于电子邮件验证系统(请改用 TXT 记录)。

SRV

服务定位器记录,用于某些 IP 语音、即时消息传递协议和其他应用。

SSHFP

SSH 客户端的 SSH 指纹,用于验证 SSH 服务器的公钥

TLSA

TLS 客户端的 TLS 身份验证记录,用于验证 X.509 服务器证书

TXT

文本记录,可包含任意文本,也可用于定义机器能识别的数据,例如安全或滥用行为防范信息。TXT 记录可以包含一个或多个文本字符串;每个字符串的最大长度为 255 个字符。邮件代理和其他软件代理会将多个字符串连接在一起。请用引号括起每个字符串。例如:


"Hello world" "Bye world"

管理记录介绍如何使用 DNS 记录。

通配符 DNS 记录

除 NS 记录外,其他所有记录类型均支持通配符记录。

DNSSEC

Cloud DNS 支持托管 DNSSEC,可保护您的网域免遭欺骗攻击和缓存投毒攻击。当您使用像 Google 公共 DNS 之类的验证解析器时,DNSSEC 会为网域查找提供增强式身份验证(但不会加密)。如需详细了解 DNSSEC,请参阅管理 DNSSEC 配置

转发地区

Cloud DNS 转发地区允许您为特定专用地区配置目标域名服务器。使用转发地区是从 VPC 网络实现出站 DNS 转发的一种方法。

Cloud DNS 转发地区是一种特殊类型的 Cloud DNS 专用地区。您可以指定一组转发目标,而不是在该地区内创建记录。每个转发目标都是 DNS 服务器的一个 IP 地址,DNS 服务器要么位于您的 VPC 网络,要么在通过 Cloud VPN 或 Cloud Interconnect 连接到 VPC 网络的本地网络中。

转发目标和路由方法

Cloud DNS 支持三种类型的目标,并提供标准或专用方法将流量路由到这些目标。

转发目标 说明 标准路由 专用路由 请求来源
类型 1 有权使用转发地区的同一 VPC 网络中的 Google Cloud 虚拟机的内部 IP 地址 必须是 RFC 1918 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 任何内部 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 35.199.192.0/19
类型 2 本地系统的 IP 地址,使用 Cloud VPN 或 Cloud Interconnect 连接到有权查询转发地区的 VPC 网络 必须是 RFC 1918 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 任何内部 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 35.199.192.0/19
类型 3 互联网上 DNS 域名服务器的外部 IP 地址。
包含 Google Cloud 资源的外部 IP 地址。
必须是互联网可路由地址 — 流量始终路由到互联网 专用路由不受支持。 Google 公共 DNS 来源范围

向转发地区添加转发目标时,您可以在以下两种路由方法中选择一种:

  • 标准路由:根据转发目标是否是 RFC 1918 IP 地址,通过获得授权的 VPC 网络或互联网路由流量。如果转发目标是 RFC 1918 IP 地址,则 Cloud DNS 会将该目标分类为类型 1类型 2 目标,并通过获得授权的 VPC 网络路由请求。如果目标不是 RFC 1918 IP 地址,则 Cloud DNS 会将目标分类为类型 3,并希望目标可从互联网访问。

  • 专用路由:无论目标的 IP 地址是什么(无论是否 RFC 1918),始终通过获得授权的 VPC 网络路由流量。因此,仅“类型 1”和“类型 2”目标受到支持。

要访问类型 1类型 2 转发目标,Cloud DNS 会使用 DNS 客户端所在的获得授权的 VPC 网络中的路由。这些路由定义指向转发目标的安全路径:

如需有关类型 1类型 2 目标的网络要求的更多指导,请参阅转发目标网络要求

使用转发地区

在以下情况下,VPC 网络中的虚拟机可以使用 Cloud DNS 转发地区:

  • VPC 网络已获得使用 Cloud DNS 转发地区的授权。您可以授权同一项目中的多个 VPC 网络使用转发地区。
  • VPC 网络中每个虚拟机的客机操作系统都使用该虚拟机的元数据服务器 169.254.169.254 作为域名服务器。

重叠转发地区

由于 Cloud DNS 转发地区是一种 Cloud DNS 托管专用地区,所以您可以创建多个重叠的地区。 按上述方式配置的虚拟机会使用带最长后缀的地区,根据 VPC 名称解析顺序解析记录。如需了解详情,请参阅重叠地区

缓存和转发地区

Cloud DNS 会缓存对发送到 Cloud DNS 转发地区的查询进行的响应。Cloud DNS 会在以下时间范围内(以其中较短者为准)存留可访问转发目标所做响应的缓存

  • 60 秒
  • 记录的存留时间的长度

当某个转发地区的所有转发目标都无法访问时,Cloud DNS 会在每个记录的 TTL 内在该地区中保留之前请求的记录的缓存。

何时改用对等互连

Cloud DNS 无法通过传递性路由的方式连接到转发目标。为了说明哪些配置无效,请考虑以下几种情况:

  • 您已使用 Cloud VPN 或 Cloud Interconnect 将本地网络连接到名为 vpc-net-a 的 VPC 网络。

  • 您已使用 VPC 网络对等互连将 VPC 网络 vpc-net-a 连接到 vpc-net-b。您已将 vpc-net-a 配置为导出自定义路由,并将 vpc-net-b 配置为导入自定义路由。

  • 您已创建转发地区,该地区的转发目标位于 vpc-net-a 连接到的本地网络中。您已授权 vpc-net-b 使用该转发地区。

这种情况下,即使 vpc-net-b 已连接到您的本地网络,也无法解析由转发目标提供服务的地区中的记录。为了演示此失败,请从 vpc-net-b 中的虚拟机执行以下测试:

  • 查询虚拟机的元数据服务器 169.254.169.254,获取在转发地区中定义的记录。此查询会失败(预料之中),这是因为 Cloud DNS 不支持到转发目标的传递性路由。 为了使用转发地区,虚拟机必须配置为使用其元数据服务器
  • 直接查询该记录的转发目标。此查询演示了尽管 Cloud DNS 不使用此路径,但传递性连接获得成功。

您可以使用 Cloud DNS 对等互连地区来修复这种无效情况:

  1. 创建一个 Cloud DNS 对等互连地区,并授权该地区使用目标为 vpc-net-avpc-net-b
  2. 创建一个转发地区,并授权该地区使用转发目标为本地域名服务器的 vpc-net-a

您可以按任意顺序执行上述步骤。完成上述步骤后,vpc-net-avpc-net-b 中的 Compute Engine 实例都可以查询本地转发目标。

DNS 对等互连

借助 DNS 对等互连功能,您可以将一个地区的命名空间内记录的请求发送至另一个 VPC 网络。例如,SaaS 提供商可以授予 SaaS 客户访问其管理的 DNS 记录的权限。

如需提供 DNS 对等互连功能,您必须创建一个 Cloud DNS 对等互连地区,并将其配置为在该地区命名空间的记录所在的 VPC 网络内执行 DNS 查找。DNS 对等互连地区在其中执行查找的 VPC 网络就称为 DNS 提供方网络

若要使用 DNS 对等互连功能,您必须授权网络使用对等互连地区。经授权可以使用对等互连地区的 VPC 网络称为 DNS 使用方网络

获得授权后,DNS 使用方网络中的 Google Cloud 资源即可查找该对等互连地区的命名空间内的记录,就像这些资源位于 DNS 提供方网络中一样。在对等互连地区的命名空间中查找记录时,需要遵循 DNS 提供方网络的名称解析顺序。因此,DNS 使用方网络中的 Google Cloud 资源可以在地区命名空间内查找来自 DNS 提供方网络中如下来源的记录:

  • 由 DNS 提供方网络授权使用的 Cloud DNS 托管专用地区
  • 由 DNS 生产者网络授权使用的 Cloud DNS 托管转发地区
  • DNS 提供方网络中的 Compute Engine 内部 DNS 名称
  • 备用域名服务器(如果已在 DNS 提供方网络中配置出站 DNS 政策)

DNS 对等互连限制

配置 DNS 对等互连时请注意以下几点:

  • DNS 对等互连是一种单向关系。它允许 DNS 使用方网络中的 Google Cloud 资源在对等互连地区的命名空间内查找记录,就像这些 Google Cloud 资源位于 DNS 提供方网络中一样。
  • DNS 提供方网络与 DNS 使用方网络必须均为 VPC 网络。
  • DNS 对等互连和 VPC 网络对等互连是不同的服务。DNS 对等互连可与 VPC 网络对等互连结合使用,但 VPC 网络对等互连并非使用 DNS 对等互连的前提条件。
  • 支持传递性 DNS 对等互连,但只能通过一个传递跃点。 换句话说,不能牵涉到三个以上 VPC 网络(中间的网络是传递跃点)。例如,您可以在 vpc-net-a 中创建一个以 vpc-net-b 为目标的对等互连地区,然后在 vpc-net-b 中创建以 vpc-net-c 为目标的对等互连地区。
  • 如果您使用 DNS 对等互连来定位转发地区,则具有转发地区的目标 VPC 网络必须包含虚拟机、互连连接 (VLAN),或与使用 DNS 对等互连地区的源虚拟机位于同一 VPN 的 Cloud VPN 隧道。如需详细了解此限制,请参阅“问题排查”部分

如需创建对等互连地区,您必须具有 DNS 提供方网络所在项目的 DNS Peer IAM 角色。

重叠地区

如果一个地区的来源域名与另一个地区的来源相同,或者前者是后者的子网域,那么这两个地区彼此重叠。例如:

  • gcp.example.com 的地区与 gcp.example.com 的另一个地区重叠,因为域名相同。
  • dev.gcp.example.com 的地区和 gcp.example.com 的地区重叠,因为 dev.gcp.example.comgcp.example.com 的子网域。 如需了解适用于重叠地区的规则,请参阅下一部分

重叠地区的规则

Cloud DNS 针对重叠地区强制执行以下规则:

  • 同一 Cloud DNS 域名服务器上不得存在重叠的公开地区。创建重叠地区时,Cloud DNS 会尝试将这些地区放在不同的域名服务器上。如果无法这样操作,则 Cloud DNS 无法创建重叠地区。

  • 专用地区可以与任何公开地区重叠。

  • 位于不同 VPC 网络范围内的专用地区可以彼此重叠。例如,两个 VPC 网络在地区 gcp.example.com 中可以分别包含一个名为 database.gcp.example.com 的数据库虚拟机。根据授权使用各个 VPC 网络的地区中定义的地区记录,对 database.gcp.example.com 的查询将会收到不同的响应。

  • 有权通过同一 VPC 网络访问的两个专用地区不能具有相同的来源,除非一个地区是另一个地区的子网域。元数据服务器利用最长后缀匹配原则来决定从哪个来源查询给定地区中的记录。

查询解析示例

Google Cloud 按照 VPC 名称解析顺序中所述解析 Cloud DNS 地区。在确定要查询给定记录的地区时,Cloud DNS 会尝试查找尽可能与所请求的记录相匹配(最长后缀匹配)的专用地区。

除非您在出站服务器政策中指定了备用域名服务器,否则 Google Cloud 会先尝试在获得 VPC 网络使用授权的专用地区(或转发地区或对等互连地区)中查找记录,然后再在公开地区中查找记录。

以下示例说明了查询 DNS 记录时元数据服务器使用的顺序。对于每个示例,假设您已创建两个专用地区(gcp.example.comdev.gcp.example.com),并且已授权通过同一 VPC 网络访问它们。Google Cloud 按以下方式处理从 VPC 网络中的虚拟机进行的 DNS 查询:

  • 元数据服务器使用公开域名服务器来为 myapp.example.com 解析记录,因为example.com 没有专用地区获得使用 VPC 网络的授权。
  • 元数据服务器使用获得授权的专用地区 gcp.example.com 解析记录 myapp.gcp.example.com,因为 gcp.example.com 是所请求的记录名称与可用的已授权专用地区之间的最长公共后缀。如果 gcp.example.com 专用地区中没有定义 myapp.gcp.example.com 的记录,则返回 NXDOMAIN即使在公共地区中定义了 myapp.gcp.example.com 的记录也是如此。
  • 同样,对 myapp.dev.gcp.example.com 的查询将根据已获授权的专用地区 dev.gcp.example.com 中的记录进行解析。 如果 dev.gcp.example.com 地区中没有 myapp.dev.gcp.example.com 的记录,则返回 NXDOMAIN即使另一个专用或公开地区中存在 myapp.dev.gcp.example.com 的记录也是如此。
  • myapp.prod.gcp.example.com 的查询会根据专用地区 gcp.example.com 中的记录进行解析,因为 gcp.example.com 是所请求的 DNS 记录和可用专用地区之间的最长公共后缀。

水平分割 DNS 示例

您可以在水平分割 DNS 配置中使用公开地区和专用地区的组合。在专用地区中,当查询来自获得授权的 VPC 网络中的虚拟机时,您可以为对同一记录的查询定义不同响应。如果您需要根据来源 VPC 网络为同一 DNS 查询提供不同的记录,水平分割 DNS 会非常有用。

请考虑以下水平分割示例:

  • 您已创建公开地区 gcp.example.com,并且您已将其注册商配置为使用 Cloud DNS 域名服务器。
  • 您已创建专用地区 gcp.example.com,并且已授权您的 VPC 网络访问此地区。

在专用地区中,您创建了一条记录:

记录 类型 TTL(秒) 数据
foo.gcp.example.com A 5 10.128.1.35

在公开地区中,您创建了两条记录:

记录 类型 TTL(秒) 数据
foo.gcp.example.com A 5 104.198.6.142
bar.gcp.example.com A 50 104.198.7.145

以下查询按照说明进行解析:

  • 来自您的 VPC 网络中虚拟机的 foo.gcp.example.com 查询返回 10.128.1.35
  • 来自互联网的 foo.gcp.example.com 查询返回 104.198.6.142
  • 来自您的 VPC 网络中虚拟机的 bar.gcp.example.com 查询返回 NXDOMAIN 错误,因为专用地区 gcp.example.com 中没有 bar.gcp.example.com 的记录。
  • 来自互联网的 bar.gcp.example.com 查询返回 104.198.7.145

DNS 服务器政策

您可以为每个 VPC 网络配置一项 DNS 服务器政策。 该政策可以指定入站转发和/或出站转发。在本部分中,“入站服务器政策”指允许入站 DNS 转发的政策,“出站服务器政策”指一种可以实现出站 DNS 转发的方法。一项政策可以既是入站服务器政策,又是出站服务器政策(如果同时实现这两者的功能)。

如需了解详情,请参阅应用服务器政策

入站服务器政策

每个 VPC 网络会为使用该网络的虚拟机提供 DNS 名称解析服务。如果虚拟机使用其元数据服务器 169.254.169.254 作为域名服务器,则 Google Cloud 会按照 VPC 名称解析顺序搜索 DNS 记录。

默认情况下,VPC 网络的名称解析服务(通过其名称解析顺序)仅适用于该 VPC 网络本身。您可以通过在 VPC 网络中创建入站 DNS 政策,将这些名称解析服务用于使用 Cloud VPN 或 Cloud Interconnect 连接的本地网络。

创建入站政策时,Cloud DNS 会从 VPC 网络使用的每个区域的子网的主要 IP 地址范围中获取内部 IP 地址。它将这些内部 IP 地址用作入站 DNS 请求的入口点。

入站政策入口点

Cloud DNS 用于入站 DNS 政策的区域内部 IP 地址作为 VPC 网络名称解析服务的入口点。为了使用入站 DNS 政策,您必须将本地系统或域名服务器配置为将 DNS 查询转发到代理 IP 地址,该代理 IP 地址需要与将您的本地网络连接到您的 VPC 网络所用的 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN) 位于同一区域

如需了解如何创建入站服务器政策,请参阅创建入站服务器政策

出站服务器政策

您可以创建指定一系列备用域名服务器的出站 DNS 政策,从而更改 VPC 名称解析顺序。当您为 VPC 网络指定备用域名服务器时,处理 VPC 网络中配置为使用元数据服务器 (169.254.169.254) 的虚拟机提交的 DNS 请求时,Google Cloud 查询这些备用域名服务器。

如需了解如何创建出站服务器政策,请参阅创建出站服务器政策

备用域名服务器和路由方法

Cloud DNS 支持三种类型的备用域名服务器,并提供标准和专用路由方法,用于将流量路由到这些域名服务器。

下表中对备用域名服务器进行了定义:

备用域名服务器 说明 标准路由 专用路由 请求来源
类型 1 定义出站服务器政策的同一 VPC 网络中的 Google Cloud 虚拟机的内部 IP 地址 必须是 RFC 1918 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 任何内部 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 35.199.192.0/19
类型 2 本地系统的 IP 地址,该系统使用 Cloud VPN 或 Cloud Interconnect 连接到具有出站服务器政策的 VPC 网络 必须是 RFC 1918 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 任何内部 IP 地址 — 流量始终通过获得授权的 VPC 网络进行路由 35.199.192.0/19
类型 3 互联网上 DNS 域名服务器的外部 IP 地址。
包含 Google Cloud 资源的外部 IP 地址。
必须是互联网可路由地址 — 流量始终路由到互联网 专用路由不受支持。 Google 公共 DNS 来源范围

指定出站转发政策的备用域名服务器时,您可以从以下两种路由方法中选择一种。

  • 标准路由:根据备用域名服务器是否是 RFC 1918 IP 地址,通过获得授权的 VPC 网络或通过互联网路由流量。如果备用域名服务器是 RFC 1918 IP 地址,则 Cloud DNS 会将该域名服务器分类为类型 1类型 2 域名服务器,并通过获得授权的 VPC 网络路由请求。如果备用域名服务器不是 RFC 1918 IP 地址,则 Cloud DNS 会将该域名服务器分类为类型 3,并要求域名服务器可从互联网访问。

  • 专用路由:始终通过获得授权的 VPC 网络路由流量,无论备用域名服务器的 IP 地址是什么(无论是否是 RFC 1918)。因此,仅支持类型 1 和类型 2 域名服务器。

要访问类型 1类型 2 备用域名服务器,Cloud DNS 会使用 DNS 客户端所在的获得授权的 DNS VPC 中的路由。这些路由定义指向域名服务器的安全路径:

如需类型 1类型 2 域名服务器网络要求的更多指导,请参阅备用域名服务器网络要求

访问权限控制

常规访问权限控制

您可以在 Google Cloud Console 的“IAM 和管理”页面上管理可以更改 DNS 记录的用户。如需授权用户进行更改,您必须在 Cloud Console 的“权限”部分中将其列为 editorowner。Viewer 权限级别可授予对 Cloud DNS 记录的只读访问权限。

这些权限还适用于您在管理 DNS 服务时使用的服务帐号。

针对托管地区的访问权限控制

具有 Project Owner 或 Project Editor 角色的用户可以管理或查看其所管理的特定项目中的托管地区。

具有 DNS Administrator 或 DNS Reader 角色的用户可以管理或查看其有权访问的所有项目中的托管地区。

Project Owner、Project Editor、DNS Administrator 和 DNS Reader 可以查看当前项目中任何 VPC 网络采用的专用地区列表。

性能和时间

Cloud DNS 使用 Anycast 从全球多个位置为您的托管地区提供服务,以实现高可用性。请求会自动路由到最近的位置,从而为用户减少延迟,并提升权威名称查找性能。

传播更改

更改将分两部分进行传播。首先,您通过 API 或命令行工具发送的更改必须推送到 Cloud DNS 的权威 DNS 服务器。其次,DNS 解析器必须在其缓存的记录过期时拾取这些更改。

DNS 解析器的缓存通过您为记录设置的生存时间 (TTL) 值控制,该值以秒为单位指定。例如,如果将 TTL 值设置为 86400(即 24 小时内的秒数),这就指示 DNS 解析器将记录缓存 24 小时。某些 DNS 解析器会忽略 TTL 值,或使用自己的值来延迟记录的完整传播。

如果要对服务进行短暂更改,则可能需要在进行更改之前将 TTL 更改为较短的值。这种方法可以帮助缩短缓存期,并确保更快地切换到新的记录设置。更改后,您可以将值改回其先前的 TTL 值,以减少 DNS 解析器上的负载。

后续步骤