出站端点概览

本文档简要介绍了 Cloud DNS 出站端点。 出站端点可以附加到转发可用区或服务器政策,以便使用专用 IP 地址将 DNS 查询从 VPC 网络直接转发到外部和本地 DNS 解析器。使用出站端点可以精细控制出站 DNS 流量,并增强您解锁混合云和多云 DNS 解析用例的能力。

如需了解如何创建、更新出站端点以及如何将出站端点与转发可用区或服务器政策相关联,请参阅创建和更新出站端点。

出站端点功能

出站端点可让您控制出站 DNS 流量的来源 IP 地址,从而通过为每个网络分配唯一的出站流量范围来实现特定于 VPC 网络的行为。唯一的出站流量范围克服了现有固定转发代理范围的路由限制。

使用主机 VPC 网络查询外部目标时,GKE 集群会自动继承出站端点。如果宿主 VPC 网络已获授权,可使用标准全球 Cloud DNS 转发可用区或配置了出站端点的服务器政策,则使用 VPC DNS 解析的 Pod 会自动通过区域级出站端点路由出站查询,而无需进行集群级修改或设置可用区级转发可用区。

如需详细了解如何将现有 DNS 转发设置迁移到出站端点,请参阅将现有 Cloud DNS 转发设置迁移到出站端点。

出站端点架构和查询路由

出站端点是在特定 VPC 网络中创建的(使用目标区域中的常规子网作为端点的内部 IP 地址),并使用该网络的区域级代理专用子网作为其来源 IP 地址。

当您将出站端点附加到转发可用区或服务器政策时,Cloud DNS 会首先尝试使用现有目标排名算法,通过排名最高的出站端点路由 DNS 查询。如果该端点健康状况不佳,Cloud DNS 会尝试下一个排名最高的端点。系统会首选地理位置最近的出站端点,但无法保证。

目标服务器的排名算法会自动执行,并基于现有的转发可用区故障切换模式 - 最低延迟时间和错误率 IP 选择。以下因素会提高转发目标的排名:

  • 转发目标处理的成功 DNS 响应数量增加。 成功的 DNS 响应还包括 NXDOMAIN 响应。
  • 与转发目标通信的延迟时间更短。
  • 与出站端点的地理距离更短。如果成功率和延迟时间数据不可用,则首选最近的目标。

为了防范区域性服务中断,您可以在运行计算工作负载的至少两个区域中配置出站端点。此方法为 Cloud DNS 提供了区域级故障切换目标,并保持了最低的查询延迟时间。如果您的混合连接性仅在部分区域中预配,则其他计算区域中的端点仍可以通过这些连接路由到您的本地解析器。

即使排名最高的端点位于其他区域,Cloud DNS 也会继续将查询路由到该端点。例如,如果区域 A 中的端点不可用,流量会自动路由到区域 B 中运行状况良好的端点。当区域 A 中的端点再次恢复正常时,排名算法会检测到其性能有所提升,并开始在后续查询中再次优先选择该端点。

每个区域中每个项目最多可以有 10 个出站端点,并且最多可以将 100 个出站端点附加到转发可用区或服务器政策。

将查询路由到区域级本地解析器

Cloud DNS 不保证将流量发送到与发起虚拟机位于同一区域的端点,但您可以使用地理位置路由政策将流量路由到最近的目标域名服务器。虽然 Cloud DNS 会优先将流量路由到最靠近发起查询和目标域名服务器的区域中的出站端点,但目标域名服务器的区域和出站端点区域并非紧密耦合。无论位置如何,Cloud DNS 都会选择过去提供最低延迟时间的端点。

下面简要概述了将查询路由到区域级本地解析器所需执行的操作:

  • 创建具有地理位置政策的可用区:为您控制的 FQDN(例如 onprem-resolvers.example.com)创建一个新的 Cloud DNS 专用可用区,并为您的 VPC 网络授权。在此区域中,为本地 DNS 服务器 IP 创建 A 记录,并应用地理定位路由政策。配置政策,以便为来自该特定区域的查询返回解析器 IP。例如,针对来自欧洲 Google Cloud 区域的查询,返回欧洲解析器 IP。
  • 使用 FQDN 作为转发目标:在转发可用区中,使用您刚刚创建的 FQDN (onprem-resolvers.example.com) 作为目标 DNS 服务器。
  • 配置出站端点:将您的区域出站端点(例如,一个位于美国区域,一个位于欧洲区域)与此转发可用区相关联。

当某个区域中的虚拟机发出查询时,系统会遵循两步路由流程:

  • 端点选择:Cloud DNS 会评估与转发可用区关联的出站端点列表,并选择最佳端点(例如,对于来自欧洲虚拟机的查询,可能会选择欧洲的端点)。
  • 目标解析:Cloud DNS 会解析查询来源区域的目标 FQDN (onprem-resolvers.example.com)。然后,Cloud DNS 会通过所选的出站端点将原始查询转发到解析后的 DNS 服务器 IP。地理位置政策会将查询的来源标识为该区域,并返回您为该区域配置的特定 IP 地址。

如需了解详情,请参阅 Cloud DNS FQDN 出站 DNS 转发教程。

从单个 VPC 网络中没有本地端点的区域转发

Google Cloud VPC 网络是一种全球性资源,可以包含多个区域中的子网。如果虚拟机从您未配置出站端点的区域发出查询,转发仍会成功。查询将跨区域路由到排名最高且可用的出站端点,该端点位于同一 VPC 网络中,并在转发可用区或服务器政策中配置。

从同一区域中的多个 VPC 网络转发,并采用来源 IP 隔离

如果您需要从同一区域中的多个 VPC 网络转发查询,并且需要本地解析器为每个 VPC 网络查看不同的来源 IP 地址,请按以下步骤操作:

  1. 在每个 VPC 网络中创建出站端点:如需了解详情,请参阅创建出站端点。
  2. 在每个 VPC 网络中创建转发区域或服务器政策:仅为该 VPC 网络授权转发区域或服务器政策,并且仅使用该 VPC 网络的出站端点。

此操作会导致每个 VPC 网络中的虚拟机通过其 VPC 网络中的出站端点发送查询。每个端点都会将查询转发到本地解析器。本地网络会看到每个 VPC 网络的代理专用子网的来源 IP 地址,从而可以为每个网络的流量应用不同的配置。

跨不同 VPC 网络的统一转发(中心辐射型)

您可以将转发可用区或服务器政策配置为使用其他集中式 VPC 网络(中心)中的出站端点。由于 Cloud DNS 会在内部处理查询转发,因此 hub 网络与发起查询的 VPC 网络(spoke)之间不需要网络连接。

您必须在出站端点与转发可用区或服务器政策中的转发目标之间配置网络连接。您可以使用 Cloud Interconnect 或 Cloud VPN 建立连接,以访问本地解析器。VPC 网络对等互连可用于访问另一个 VPC 网络中的转发目标。

  1. 在中心 VPC 网络中创建出站端点。
  2. 在 spoke VPC 网络中创建转发可用区或服务器政策,并将其配置为使用 hub 网络的出站端点。

辐射 VPC 网络中的虚拟机通过中心 VPC 网络中的出站端点发送查询。端点将查询转发到本地解析器。

共享 VPC 支持

出站端点支持共享 VPC 部署。端点、其常规子网及其关联的代理专用子网在宿主项目中集中创建。服务项目可以继承在宿主项目中创建的转发可用区或服务器政策,也可以创建自己的专用转发可用区或服务器政策,并将其跨项目绑定到宿主项目中的集中式出站端点(需要宿主项目上的 dns.outboundEndpoints.bindPrivateDNSZone 或 dns.outboundEndpoints.bindPrivateDNSPolicy)。

管理与出站端点关联的网络资源

Cloud DNS 出站端点会与其底层 VPC 网络和子网强制执行严格的生命周期依赖关系,以帮助保护生产 DNS 流量免受意外基础设施更改(例如删除或修改)的影响。

删除出站端点正在使用的代理专用子网或 VPC 网络

出站端点正在使用的常规子网、代理专用子网或 VPC 网络会受到保护,无法删除,以防止服务中断。尝试删除这些资源会导致错误。如果您想删除这些资源,则必须严格按照以下顺序执行以下步骤:

  1. 更新 Cloud DNS 配置:修改使用出站端点的任何转发可用区或服务器政策,并将其从配置中移除,使其不再使用。
  2. 删除出站端点:端点不再使用后,您可以将其删除。此操作会释放对常规子网和代理专用子网的依赖。
  3. 删除子网:确认没有其他资源在使用代理专用子网和常规子网后,将其删除。
  4. 删除 VPC 网络:移除所有其他 VPC 依赖项后,您可以删除 VPC 网络。

子网修改

当出站端点正在使用代理专用子网时,您无法直接修改该子网。此限制可防止您修改关键属性(例如 IP 地址范围),从而有助于避免服务中断。如需修改子网,您必须遵循现有指南,并先迁移到新子网。

请执行以下操作,修改出站端点正在使用的子网:

  1. 创建备用子网:在同一 VPC 网络和区域中创建新的代理专用子网。您必须在创建期间将此子网的角色设置为 BACKUP。
  2. 激活新子网:将新子网的角色更新为 ACTIVE。这样做会自动将原始子网设置为 BACKUP 角色,并开始从中排空活跃连接。
  3. 等待排空:留出时间让连接排空过程完成。
  4. 删除旧子网:当原始子网处于 BACKUP 角色且没有活跃连接时,您现在可以将其删除。

为本地防火墙提供专用的可预测来源 IP

如果您的本地 DNS 防火墙需要一个专用于 DNS 流量的专用且可预测的源 IP 地址范围,我们建议您应用以下架构:

  • 在专用出站 VPC 网络中部署:创建一个专用 VPC 网络,其中包含一个常规子网(用于出站端点 IP 地址)和一个专为 Cloud DNS 预留的区域级代理专用子网(--purpose=REGIONAL_MANAGED_PROXY 和 --role=ACTIVE)。
  • 隔离应用 VPC 网络:请勿将应用 VPC 网络与此专用出站流量网络对等互连或路由到此专用出站流量网络。Cloud DNS 会在 Google Cloud基础架构内路由查询,因此这些 VPC 网络之间不需要直接网络连接。
  • 将专用出站流量 VPC 网络连接到外部转发目标:仅在专用出站流量 VPC 网络与外部或本地目标域名服务器之间配置连接。使用以下命令建立此路径:
    • 与现有中转 VPC 进行 VPC 网络对等互连:这是推荐的方法,也是最具成本效益的方法。如果贵组织已有一个中央中转 VPC 网络,且该网络通过 Cloud Interconnect 或 Cloud VPN 连接到本地,请将专用 DNS VPC 网络与该中转中心对等互连。这种方法可避免预配冗余混合线路,并最大限度地降低费用。
    • 直接混合连接:直接终止于专用 DNS VPC 网络的专用互连、跨云互连或 Cloud VPN。

限制

出站端点具有以下限制:

  • 来源 IP 和子网共享仅限于同一区域中的资源:出站端点从其所连接的 VPC 网络的区域级代理专用子网中分配来源 IP 范围。在标准部署中,此代理专用子网可以与其他区域级资源(例如区域级应用负载均衡器)共享。

  • 不支持与代理专用子网直接对等互连:您无法与代理专用子网直接对等互连。必须通过标准 VPC 路由(例如 Cloud Interconnect、Cloud VPN 或 VPC 网络对等互连)建立与外部域名服务器的网络连接。

  • 仅支持 IPv4:出站端点的来源 IP 地址仅限 IPv4,并且查询只能转发到 IPv4 目标或转发可用区上解析为 IPv4 地址的 FQDN 转发目标。

  • 不支持将出站端点绑定到跨项目的网络:不支持在附加到宿主项目的共享 VPC 网络的服务项目中创建出站端点。出站端点必须与它们所连接的 VPC 网络和子网位于同一项目中。

  • 仅限私有目标:出站端点仅支持转发到私有目标(包括 RFC 1918、RFC 6598 以及使用 --private-forward-targets 或 forwardingPath: "private" 配置的私有路由非 RFC 1918 地址),不能用作公共互联网 DNS 流量的出站代理或静态来源 IP 锚点。对公共互联网目标的查询会直接通过 Google 的分布式任播边缘进行解析,以最大限度地减少延迟并避免 Cloud NAT 依赖项。

  • 区域级范围:出站端点属于区域级资源。您必须在要使用端点的每个区域中创建端点。

  • 仅限单一转发机制:您的转发机制(默认 35.199.192.0/19 范围或出站端点)是在转发可用区或服务器政策级别配置的。但是,您不能同时对同一可用区或政策使用这两种方法。

后续步骤