应用 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. 在 Google Cloud 控制台中启用 Cloud DNS API。您可以选择现有的 Compute Engine 或 App Engine 项目,也可以创建一个新项目。
  3. 如果您需要向 REST API 发出请求,则需要创建 OAuth 2.0 ID(请参阅设置 OAuth 2.0)。
  4. 在项目中,请记下后续步骤中需要输入的信息:
    • 客户端 ID (xxxxxx.apps.googleusercontent.com)。
    • 您要使用的项目 ID。您可以在 Google Cloud 控制台的概览页面顶部找到此 ID。您也可以要求用户提供其要在您的应用中使用的项目名称。

如果您之前未运行过 Google Cloud CLI,则必须运行以下命令来指定项目名称并进行 Google Cloud Console 身份验证:

gcloud auth login

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

创建 DNS 服务器政策

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

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

创建入站服务器政策

如需创建入站服务器政策,请按照以下说明操作。Cloud DNS 会从应用该政策的每个 VPC 网络中的子网主要 IPv4 地址范围创建一组入站转发 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 网络的逗号分隔列表

Terraform

resource "google_dns_policy" "default" {
  name                      = "example-inbound-policy"
  enable_inbound_forwarding = true

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

创建出站服务器政策

如需为 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 地址列表,以英文逗号分隔,可通过专用路由访问

Terraform

resource "google_dns_policy" "default" {
  name = "example-outbound-policy"

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.default.id
  }
}

resource "google_compute_network" "default" {
  name                    = "network"
  auto_create_subnetworks = false
}

创建入站和出站服务器政策

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 地址列表,以英文逗号分隔,可通过专用路由访问。

Terraform

resource "google_dns_policy" "example_policy" {
  name                      = "example-policy"
  enable_inbound_forwarding = true

  enable_logging = true

  alternative_name_server_config {
    target_name_servers {
      ipv4_address    = "172.16.1.10"
      forwarding_path = "private"
    }
    target_name_servers {
      ipv4_address = "172.16.1.20"
    }
  }

  networks {
    network_url = google_compute_network.network_1.id
  }
  networks {
    network_url = google_compute_network.network_2.id
  }
}

resource "google_compute_network" "network_1" {
  name                    = "network-1"
  auto_create_subnetworks = false
}

resource "google_compute_network" "network_2" {
  name                    = "network-2"
  auto_create_subnetworks = false
}

列出入站转发器入口点

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

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

每个入站转发器都在区域内部 IP 地址所在的区域中接收并接受来自 Cloud VPN 隧道或 Cloud Interconnect 连接 (VLAN) 的查询。虚拟机实例可以通过同一 VPC 网络中的任何内部 IP 地址访问入站转发器。要访问入站转发,网络接口必须具有外部 IP 地址,或者 NIC 的子网必须启用专用 Google 访问通道。

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 时可能会遇到的常见问题的解决方案,请参阅问题排查
  • 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览