应用 Cloud DNS 服务器政策

本页面介绍如何配置 Cloud DNS 服务器政策,以及如何将这些政策应用于 Virtual Private Cloud (VPC) 网络。使用此页面之前,请查看 DNS 服务器政策概览。

准备工作

Cloud DNS API 要求您创建 Google Cloud 项目并启用 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 命令行工具,则必须运行以下命令来指定项目名称并进行 Google Cloud Console 身份验证:

gcloud auth login

如需选择与您之前所选项目不同的项目,请在命令行中指定 --project 选项。

创建 DNS 服务器政策

每个 DNS 服务器政策对象都可以定义任何以下服务器政策:

每个 VPC 网络只能最多引用一项 DNS 服务器政策。如果需要为 VPC 网络同时定义入站和出站转发,请创建一项政策来同时定义入站和出站政策。

创建入站服务器政策

如需创建入站服务器政策,请按照以下说明操作。Cloud DNS 会在应用该政策的每个 VPC 网络中创建一组入站转发器 IP 地址。创建政策后,您可以列出 Cloud DNS 创建的入口点

gcloud

如需创建入站服务器政策,请运行 dns policies create 命令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --enable-inbound-forwarding

请替换以下内容:

  • NAME:政策的名称
  • DESCRIPTION:政策的说明
  • VPC_NETWORK_LIST:必须创建入站转发地址的 VPC 网络的逗号分隔列表

创建出站服务器政策

您可以创建出站服务器政策,通过将所有 DNS 查询定向到备用域名服务器来修改 VPC 网络的名称解析顺序。为此,请按以下说明操作。在开始之前,请务必了解标准路由和专用路由之间的区别以及备用域名服务器的网络要求

gcloud

如需创建出站服务器政策,请运行 dns policies create 命令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST

请替换以下内容:

  • NAME:政策的名称
  • DESCRIPTION:政策的说明
  • VPC_NETWORK_LIST:查询备用域名服务器的 VPC 网络的逗号分隔列表
  • ALTERNATIVE_NAMESERVER_LIST:可用作备用域名服务器的 IP 地址列表,以英文逗号分隔;专用路由仅用于具有 RFC 1918 地址的备用域名服务器。
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST:可用作备用域名服务器的 IP 地址列表,以英文逗号分隔,可通过专用路由访问

为这两者创建服务器政策

gcloud

如需为入站和出站转发创建 DNS 服务器政策,请运行 dns policies create 命令:

gcloud dns policies create NAME \
    --description=DESCRIPTION \
    --networks=VPC_NETWORK_LIST \
    --alternative-name-servers=ALTERNATIVE_NAMESERVER_LIST \
    --private-alternative-name-servers=PRIVATE_ALTERNATIVE_NAMESERVER_LIST \
    --enable-inbound-forwarding

请替换以下内容:

  • NAME:政策的名称
  • DESCRIPTION:政策的说明
  • VPC_NETWORK_LIST:必须在其中创建入站转发地址且必须查询备用域名服务器的 VPC 网络的逗号分隔列表
  • ALTERNATIVE_NAMESERVER_LIST:可用作备用域名服务器的 IP 地址列表,以英文逗号分隔。专用路由仅用于具有 RFC 1918 地址的备用域名服务器。
  • PRIVATE_ALTERNATIVE_NAMESERVER_LIST:可用作备用域名服务器的 IP 地址列表,以英文逗号分隔,可通过专用路由访问。

列出入站转发器入口点

当入站服务器政策应用于 VPC 网络时,Cloud DNS 会创建一组区域内部 IP 地址,这些地址用作本地系统或名称解析器将 DNS 请求发送到的目的地。这些地址用作 VPC 网络名称解析顺序的入口点。

充当入站转发器入口点的区域内部地址不能采用 Google Cloud 防火墙规则。Cloud DNS 会自动接受端口 53 上的 TCP 和 UDP 流量。

每个入站转发器都在区域内部 IP 地址所在的区域中接收并接受来自 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN) 的查询。

gcloud

如需列出充当入站转发入口点的区域内部 IP 地址集,请运行 compute addresses list 命令:

gcloud compute addresses list \
    --filter='purpose = "DNS_RESOLVER"' \
    --format='csv(address, region, subnetwork)'

更新 DNS 政策

以下部分介绍了如何更改 VPC 网络以及启用或停用入站转发。

更改 VPC 网络

以下列表介绍了当您更改应用 DNS 政策的 VPC 网络列表时发生的情况:

  • 如果政策指定了入站政策,则系统会根据需要在 VPC 网络中创建入站转发器的入口点。
  • 如果政策指定了出站政策,则系统会更新每个 VPC 网络的名称解析顺序,以将所有请求定向到备用域名服务器。

gcloud

如需修改应用 DNS 服务器政策的网络的列表,请运行 dns policies update 命令:

gcloud dns policies update NAME \
    --networks=VPC_NETWORK_LIST

请替换以下内容:

  • NAME:政策的名称
  • VPC_NETWORK_LIST:应用政策的 VPC 网络的列表,以英文逗号分隔;您指定的 VPC 网络列表会替换之前的列表。

启用或停用入站转发

您可以为仅定义出站政策的 DNS 服务器政策(备用域名服务器)启用入站转发。您还可以停用现有 DNS 政策的入站转发。

gcloud

如需为 DNS 服务器政策启用入站转发,请运行 dns policies update 命令:

gcloud dns policies update NAME \
    --enable-inbound-forwarding

如需为 DNS 服务器政策停用入站转发,请运行 dns policies update 命令:

gcloud dns policies update NAME \
    --no-enable-inbound-forwarding

NAME 替换为政策的名称。

列出 DNS 政策

gcloud

如需列出项目中的 DNS 服务器政策,请运行 dns policies list 命令:

gcloud dns policies list

删除 DNS 政策

gcloud

如需删除服务器政策,请运行 dns policies delete 命令:

gcloud dns policies 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 域名服务器的返回路由策略

类型 2 域名服务器的响应不能通过互联网、不同的 VPC 网络发送,或者发送到不同区域(即使位于同一 VPC 网络中)。响应必须返回到同一区域和 VPC 网络,但可以使用同一区域和同一网络中的任何 Cloud VPN 隧道或 Cloud Interconnect 连接 (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 备用域名服务器的专用路由。

后续步骤

  • 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查
  • 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览