配置 DNS 服务器政策

本页面介绍如何配置 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 控制台身份验证:

gcloud auth login

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

创建 DNS 服务器政策

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

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

创建入站 DNS 服务器政策

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

控制台

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击创建政策

  3. 名称字段中,输入您要创建的入站 DNS 服务器政策的名称,例如 inbound-dns-server-policy

  4. 入站查询转发部分中,选择开启

  5. 您可以选择启用 DNS64,以在仅支持 IPv6 的工作负载与仅支持 IPv4 的目标之间实现通信。如需了解详情,请参阅配置 DNS64

  6. 您可以选择在日志部分中启用专用 DNS 日志,但这可能会增加 Cloud Logging 费用。

  7. 网络列表中,选择要绑定到此 DNS 服务器政策的 VPC 网络。

    一个网络只能绑定到单个政策。如果您无法从列表中选择某个网络,则说明该网络正被其他政策使用。如需查看政策正在使用的网络,请查看 DNS 服务器政策页面上的使用者列。

  8. 点击创建

gcloud

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

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

替换以下内容:

  • NAME:政策的名称
  • DESCRIPTION:政策的说明
  • VPC_NETWORK_LIST:DNS 服务器政策必须绑定到的 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
}

创建出站 DNS 服务器政策

如需为 VPC 网络指定备用域名服务器列表,您可以创建出站 DNS 服务器政策。

控制台

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击创建政策

  3. 名称字段中,输入您要创建的出站 DNS 服务器政策的名称,例如 outbound-dns-server-policy

  4. 入站查询转发部分中,选择关闭

  5. 您可以选择在日志部分中启用专用 DNS 日志,但这可能会增加 Cloud Logging 费用。

  6. 备用 DNS 服务器(可选)部分中,点击添加项,然后在 IP 地址字段中输入出站 DNS 服务器的 IP 地址。

    • 如果您想强制使用到出站 DNS 服务器的专用路由,请选中专用转发复选框。
  7. 网络列表中,选择要绑定到此 DNS 服务器政策的 VPC 网络。

  8. 点击创建

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"

替换以下内容:

  • NAME:政策的名称
  • DESCRIPTION:政策的说明
  • VPC_NETWORK_LIST:查询备用域名服务器的 VPC 网络的逗号分隔列表
  • ALTERNATIVE_NAMESERVER_LIST:可用作备用域名服务器的 IP 地址列表,以英文逗号分隔
  • 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
}

为入站和出站转发创建 DNS 服务器政策

控制台

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击创建政策

  3. 名称字段中,输入您要创建的入站 DNS 服务器政策的名称,例如 inbound-outbound-dns-server-policy

  4. 入站查询转发部分中,选择开启

  5. 您可以选择在日志部分中启用专用 DNS 日志,但这可能会增加 Cloud Logging 费用。

  6. 备用 DNS 服务器(可选)部分中,点击添加项,然后在 IP 地址字段中输入出站 DNS 服务器的 IP 地址。

    • 如果您想强制使用到出站 DNS 服务器的专用路由,请选中专用转发
  7. 网络列表中,选择要绑定到此 DNS 服务器政策的 VPC 网络。

  8. 点击创建

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 地址列表,以英文逗号分隔
  • 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
}

列出入站转发器入口点

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

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

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

控制台

查看政策的入站转发器入口点列表:

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击政策的名称。

  3. 政策详情页面上,点击使用者标签页。

绑定到政策的每个网络都会列出入站查询转发 IP 地址。

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 网络的域名解析顺序,以包含指定的备用域名服务器。

控制台

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击要更改的政策的名称。

  3. 点击 修改政策

  4. 网络列表中,选中或清除相应 VPC 网络旁边的复选框。

  5. 点击保存

gcloud

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

gcloud dns policies update NAME \
    --networks="VPC_NETWORK_LIST"

请替换以下内容:

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

启用或停用入站转发

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

控制台

为 DNS 服务器政策启用入站转发:

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击要更改的政策的名称。

  3. 点击 修改政策

  4. 入站查询转发部分中,选择开启

  5. 点击保存

为 DNS 服务器政策停用入站转发:

  1. 打开 Cloud DNS 服务器政策页面。
  2. 点击要更改的政策的名称。
  3. 点击 修改政策
  4. 入站查询转发部分中,选择关闭
  5. 点击保存

gcloud

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

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

如需为 DNS 服务器政策停用入站转发,请指定 --no-enable-inbound-forwarding 标志:

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

NAME 替换为政策的名称。

列出 DNS 政策

控制台

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 系统会列出项目中创建的所有 DNS 服务器政策。

gcloud

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

gcloud dns policies list

删除 DNS 政策

控制台

如需删除 DNS 服务器政策,相应政策不得绑定到任何网络。请更新您的政策以移除所有网络,然后再删除政策。

  1. 在 Google Cloud 控制台中,打开 Cloud DNS 服务器政策页面。

    前往“Cloud DNS 服务器政策”

  2. 点击要删除的政策名称旁边的 删除

gcloud

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

gcloud dns policies delete NAME

NAME 替换为要删除的政策的名称。

后续步骤

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