Cloud DNS FQDN 出站 DNS 转发

1. 简介

ef2d068c413a15bd.png

此 Codelab 将引导您完成以下操作:使用完全限定域名 (FQDN) 作为转发目标来设置 Cloud DNS 出站转发地区。借助此功能,您可以将 DNS 流量定向到从 DNS 名称解析出的 IP 地址,而不是在转发区域的配置中对 IP 地址进行硬编码。当后端 DNS 解析器 IP 地址发生变化时,此功能特别有用,因为您可以更新 FQDN 的 DNS 记录,而 Cloud DNS 会自动获取这些更改。

完成此 Codelab 后,您将能够配置使用以下内容的 Cloud DNS 转发地区:

  • 与具有 A/AAAA 记录的专用地区匹配的 FQDN 目标。
  • 由 Cloud DNS 路由政策(地理定位或加权轮循)支持的 FQDN 目标,用于实现区域亲和性或流量分配。

FQDN 转发概览

借助 Cloud DNS 转发,您可以从 Google Cloud Platform 资源解析托管在 Google Cloud Platform 外部(例如本地或其他云端)的专用 DNS 名称。过去,此功能支持转发到目标 IP 地址列表。FQDN 转发功能对此进行了扩展,允许您在转发区域中指定 FQDN 作为转发目标。

指定 FQDN 后,Cloud DNS 会使用内部查找将其解析为 IP 地址,而内部查找会使用源网络的解析逻辑。这意味着 FQDN 目标可以匹配专用区域、DNS 路由政策(地理定位或加权轮循),甚至可以匹配互联网公共域名。然后,Cloud DNS 会将查询转发到已解析的目标 IP。

构建内容

使用新的专用区域进行区域级 FQDN 转发

您将构建一个可实现 DNS 流量区域亲和性的设置。这包括创建专用 DNS 区域并在其中配置地理定位路由政策,然后将转发区域与此 FQDN 目标相关联。这样可确保来自特定区域(例如 us-east1)的流量转发到相应的区域 DNS 服务器。

使用现有专用区域进行 FQDN 转发

您将学习如何创建转发区域,该区域以现有专用 DNS 区域中由 A/AAAA 记录支持的 FQDN 为目标。此示例演示了如何将查询转发到使用 FQDN 转发目标解析的静态定义的 IP 地址。

学习内容

FQDN 转发的概念

您会了解到,FQDN 转发扩展了 DNS 转发功能,允许您指定 FQDN 转发目标,而不仅仅是 IP 地址作为出站查询的转发目标。

FQDN 转发的优势

您将了解到,此功能可消除后端 DNS 解析器 IP 地址更改时手动更新的需求,因为 Cloud DNS 会自动从 FQDN 的 DNS 记录中获取更改。它还允许 DNS 服务器位于共享名称后面或动态扩缩,从而实现更灵活的 DNS 基础架构扩缩。

与 Cloud DNS 路由政策集成

您将了解如何将 FQDN 转发与 Cloud DNS 路由政策(地理定位或加权轮循)相结合,以实现区域亲和性、优化地理位置分散的部署的性能,并根据配置的权重分配流量。

Google Cloud CLI 命令语法

您将熟悉 gcloud dns managed-zones create 命令及其相关标志(--forwarding-targets--private-forwarding-targets),以便设置 FQDN 转发区域。

前提条件

如需完成此 Codelab,您需要具备以下条件:

2. 准备工作

了解 FQDN 转发场景

Cloud DNS FQDN 转发支持多种使用场景:

  • 包含 A/AAAA 记录的专用地区:如果 FQDN 与专用地区中的 A/AAAA 记录匹配,则解析出的 IP 地址会添加到转发列表中,并且行为与直接转发到目标 IP 地址相同。
  • 具有地理位置政策的专用地区:地理位置政策可让您指定来源地理位置并提供相应答案,从而验证基于地理位置的流量分配。这对于区域 DNS 转发和关联至关重要。
  • 采用加权轮循 (WRR) 政策的专用地区:WRR 政策允许为 DNS 名称的每个 IP 地址指定不同的权重,从而验证流量是否根据配置的权重进行分配。
  • 具有 A/AAAA 记录的公共区域:如果 FQDN 与同一网络中可见的任何专用名称都不匹配,Cloud DNS 会尝试使用公共互联网来解析该 FQDN。

了解用于 FQDN 转发的 Google Cloud CLI 命令

如需使用 gcloud CLI 命令创建具有 FQDN 转发目标的转发区域,您将使用 gcloud dns managed-zones create 命令。用于指定 FQDN 目标的密钥标志为 --forwarding-targets--private-forwarding-targets。如需详细了解标准路由方法和专用路由方法,请参阅相关文档

  • --forwarding-targets:区域将向其转发查询的目标域名服务器的 IPv4/IPv6 地址列表或一个域名。对于公开范围为“公开”的资源,系统会忽略此设置。非 RFC1918 地址将通过互联网转发到目标。RFC1918 地址将通过 VPC 进行转发。
  • --private-forwarding-targets:区域将向其转发查询的目标域名服务器的 IPv4/IPv6 地址列表或一个域名。对于公开范围为“公开”的资源,系统会忽略此设置。为此参数指定的所有地址都将通过 VPC 访问。

语法示例:

gcloud dns managed-zones create NAME \
    --description=DESCRIPTION \
    --dns-name=DNS_SUFFIX \
    --networks=VPC_NETWORK_LIST \
    --forwarding-targets=DEFAULT_FQDN_TARGET \
    --visibility=private

请注意,您可以指定 --private-forwarding-targets 而不是 --forwarding-targets

设置您的 Google Cloud Platform 项目

登录 gcloud CLI。

gcloud auth login

创建一个项目。

gcloud projects create my-codelab-project

启用 Cloud DNS API。此操作可能需要几分钟时间才能生效。

gcloud services enable dns.googleapis.com

此 Codelab 使用随新项目创建的默认 VPC 网络。您也可以创建新网络以供使用。

3. 设置区域 FQDN 转发(使用新的专用区域)

此方案演示了如何实现区域 DNS 转发,确保来自特定区域的流量转发到同一区域内的 DNS 服务器。

创建专用 DNS 区域

首先,创建一个专用 DNS 区域(例如 foo.com),用于托管 FQDN 及其关联的地理定位路由政策。此可用区必须对您的默认网络可见。

gcloud dns managed-zones create my-zone \
    --description="Private Zone for FQDN outbound DNS forwarding." \
    --dns-name=foo.com. \
    --networks=default \
    --visibility=private

在专用区域内创建地理定位路由政策记录集

接下来,在 my-zone 中创建一个记录集(例如 geo.foo.com),并应用地理定位路由政策。此示例为 asia-east1 和 asia-west1 配置 IP 地址。

gcloud dns record-sets create geo.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --routing-policy-type="GEO" \
    --routing-policy-data="asia-east1=192.168.0.1;us-central1=192.168.0.2"

注意:如果地理围栏处于停用状态(默认设置,建议采用),则当原始区域中的目标健康状况不佳时,查询将被定向到最近的健康区域。

创建具有 FQDN 目标的转发区域

创建在同一默认网络中可见的转发地区 (geo.test.com.),并将 geo.foo.com.(具有地理位置路由政策的 FQDN)设置为其转发目标。

gcloud dns managed-zones create my-geo-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for routing policy." \
    --dns-name=geo.test.com. \
    --networks=default \
    --private-forwarding-targets=geo.foo.com. \
    --visibility=private

现在,任何与 geo.test.com 匹配的 DNS 查询都会根据查询的来源区域转发到 geo.foo.com 的已解析 IP(例如 192.168.0.1 或 192.168.0.2)。

4. 设置 FQDN 转发(使用现有专用区域)

拥有现有的专用 DNS 区域

假设您已有一个名为 my-zone (foo.com.) 的专用 DNS 区域,该区域对默认网络可见。

在此专用区域内创建 DNS 资源记录

在现有 my-zone 中为 a.foo.com 创建 A 类型记录。

gcloud dns record-sets create a.foo.com. \
    --ttl="30" \
    --type="A" \
    --zone="my-zone" \
    --rrdatas=1.2.3.4

创建转发区域并指定 FQDN 目标

与区域 FQDN 方案类似,创建一个转发可用区,并将 a.foo.com 指定为转发目标。

gcloud dns managed-zones create my-a-fwd-zone \
    --description="Forwarding zone for FQDN outbound DNS forwarding for A record." \
    --dns-name=a.test.com. \
    --networks=default \
    --private-forwarding-targets=a.foo.com. \
    --visibility=private

任何与 a.test.com. 匹配的 DNS 查询都将转发到 a.foo.com. 的已解析 IP 地址 1.2.3.4。

5. 清理

在删除专用地区之前,必须先删除该专用地区中的所有 ResourceRecordSet(NS 和 SOA 记录除外,这些记录是自动生成的,并且必须始终存在于专用地区中)。

删除专用区域中的地理定位路由政策。

gcloud dns record-sets delete "geo.foo.com." --type="A" --zone="my-zone"

删除专用区域中的 A 记录。

gcloud dns record-sets delete "a.foo.com." --type="A" --zone="my-zone"

删除专用区域。

gcloud dns managed-zones delete "my-zone"

删除地理定位路由政策的转发区域。

gcloud dns managed-zones delete "my-geo-fwd-zone"

删除 A 记录的转发区域。

gcloud dns managed-zones delete "my-a-fwd-zone"

6. 恭喜

恭喜,您已成功学会使用 FQDN 出站 DNS 转发!

深入阅读

参考文档