管理响应政策和规则

本页面介绍了如何管理响应政策和响应政策规则。

借助 Cloud DNS 专用地区,您可以为每个网络创建一个响应政策,以便根据所创建的政策修改解析器行为。您还可以为响应政策创建规则。

您可以为每个网络创建一个响应政策规则,此股则可以执行以下操作:

  • 通过提供特定的资源记录,更改所选查询名称(包括通配符)的结果。
  • 触发 passthru 行为,该行为会绕过响应政策,从而排除原本匹配的名称。例如,对于通配符响应,这会使专用 DNS 查询匹配过程与未遇到通配符时一样继续。

如需了解 VPC Service Controls 如何允许客户从其专用 VPC 网络执行 API 访问,请参阅设置与 Google API 和服务的专用连接

管理响应政策

创建响应政策

如需创建新的响应政策,请按以下步骤操作。

gcloud

运行 gcloud beta dns response-policies create 命令:

gcloud beta dns response-policies create RESPONSE_POLICY_NAME \
     --networks=NETWORK \
    [--description=DESCRIPTION]

请替换以下内容:

  • RESPONSE_POLICY_NAME:您要创建的响应政策的名称或 ID,例如 myresponsepolicy
  • NETWORK:与响应政策关联的网络名称列表(以英文逗号分隔),例如 network1, network2
  • DESCRIPTION:响应政策的说明,例如 My new response policy

API

使用 responsePolicies.create 方法发送 POST 请求:

POST https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies

PROJECT_ID 替换为要在其中创建响应政策的项目名称或 ID。

查看响应政策

如需查看给定项目中的所有响应政策列表或查看特定响应政策的说明,请按以下步骤操作。

gcloud

  • 如需查看项目中所有响应政策的列表,请运行 gcloud beta dns response-policies list 命令:

    gcloud beta dns response-policies list
    
  • 您可以使用 --limit 标志限制响应政策的数量。例如,如需查看前十个响应政策列表,请运行以下命令:

    gcloud beta dns response-policies list \
      --limit=10
    
  • 如需查看响应政策的详细说明,请运行 gcloud beta dns response-policies describe 命令:

    gcloud beta dns response-policies describe RESPONSE_POLICY_NAME
    

    RESPONSE_POLICY_NAME 替换为您要查看其说明的响应政策名称或 ID。

API

如需查看响应政策的详细说明,请使用 responsePolicies.get 方法发送 GET 请求:

GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME

请替换以下内容:

  • PROJECT_ID:您已在其中创建响应政策的项目 ID
  • RESPONSE_POLICY_NAME:您要查看其说明的响应政策名称或 ID,例如 myresponsepolicy

更新响应政策

如需更新响应政策,请按以下步骤操作。

gcloud

运行 gcloud beta dns response-policies update 命令:

gcloud beta dns response-policies update RESPONSE_POLICY_NAME

RESPONSE_POLICY_NAME 替换为您要更新的响应政策名称或 ID,例如 myresponsepolicy

对于任何已更新字段,请使用与 create 命令相同的语法。

API

  • 如需对响应政策应用部分更新,请使用 responsePolicies.patch 方法发送 PATCH 请求:

    PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要更新的响应政策的名称或 ID,例如 myresponsepolicy
  • 如需更新响应政策,请使用 responsePolicies.update 方法发送 UPDATE 请求:

    UPDATE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要更新的响应政策的名称或 ID,例如 myresponsepolicy

删除响应政策

如需删除响应政策,请按以下步骤操作。

gcloud

运行 gcloud beta dns response-policies delete 命令:

gcloud beta dns response-policies delete RESPONSE_POLICY_NAME

RESPONSE_POLICY_NAME 替换为要删除的响应政策的名称或 ID。

API

使用 responsePolicies.delete 方法发送 DELETE 请求:

DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME

请替换以下内容:

  • PROJECT_ID:您已在其中创建响应政策的项目 ID
  • RESPONSE_POLICY_NAME:您要删除的响应政策的名称或 ID,例如 myresponsepolicy

管理响应政策规则

网站的 DNS 响应政策包括 DNS 解析器在查找过程中查询的规则。如果响应政策中的规则影响传入的查询,则处理该规则;否则,查找将正常运行。

如需管理规则,请按以下步骤操作。

gcloud

  • 如需更改所选查询名称的行为,请运行 gcloud beta dns response-policies rules create 命令并指定 --type 标志:

    gcloud beta dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
       --response-policy=RESPONSE_POLICY_NAME \
       --dns-name=DNS_NAME \
       --local-data=name="DNS_NAME.",type="RRTYPE",ttl=TTL,rrdatas="RRDATA"
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy
    • DNS_NAME:DNS 或域名,例如 www.googleapis.com
    • TTL:响应政策的存留时间(例如 21600
    • RRTYPE:资源记录类型,如 A
    • RRDATA:资源记录数据,例如 1.2.3.4。使用 | 分隔多个条目,例如 1.2.3.4|5.6.7.8
  • 如需创建绕过规则,请运行 gcloud beta dns response-policies rules create 命令,并将 --behavior 标志设置为 bypassResponsePolicy

    gcloud beta dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
       --response-policy=RESPONSE_POLICY_NAME \
       --dns-name=DNS_NAME \
       --behavior=bypassResponsePolicy
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy
    • DNS_NAME:DNS 或域名,例如 www.googleapis.com
  • 如需查看有关响应政策规则的详细信息,请运行 gcloud beta dns response-policies rules describe 命令:

    gcloud beta dns response-policies rules describe RESPONSE_POLICY_RULE_NAME \
      --response-policy=RESPONSE_POLICY_NAME
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy
  • 如需查看响应政策中的 Cloud DNS 响应政策规则列表,请使用 gcloud beta dns response-policies rules list 命令:

    gcloud beta dns response-policies rules list RESPONSE_POLICY_NAME
    

    RESPONSE_POLICY_NAME 替换为响应政策的名称,例如 myresponsepolicy

  • 如需更新新的 Cloud DNS 响应政策规则,请使用 gcloud beta dns response-policies rules update 命令:

    gcloud beta dns response-policies rules update RESPONSE_POLICY_RULE_NAME \
       --response-policy=RESPONSE_POLICY_NAME
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy

    对于任何已更新字段,请使用与 create 命令相同的语法。

  • 如需删除 Cloud DNS 响应政策规则,请使用 gcloud beta dns response-policies rules delete 命令:

    gcloud beta dns response-policies rules delete RESPONSE_POLICY_RULE_NAME \
      --response-policy=RESPONSE_POLICY_NAME
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy

API

  • 如需创建新的响应政策规则,请使用 responsePolicyRules.create 方法发送 POST 请求:

    POST https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME/rules
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要为其创建规则的响应政策的名称或 ID,例如 myresponsepolicy
  • 如需在响应政策中查看规则的详细说明,请使用 responsePolicyRules.get 方法发送 GET 请求:

    GET https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME/rules/RESPONSE_POLICY_RULE
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要为其创建规则的响应政策的名称或 ID,例如 myresponsepolicy
    • RESPONSE_POLICY_RULE:想要查看其详细信息的响应政策规则
  • 如需对响应政策规则应用部分更新,请使用 responsePolicyRules.patch 方法发送 PATCH 请求:

    PATCH https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME/rules/RESPONSE_POLICY_RULE
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要为其更新规则的响应政策的名称或 ID,例如 myresponsepolicy
    • RESPONSE_POLICY_RULE:您要更新的响应政策规则
  • 如需更新响应政策规则,请使用 responsePolicyRules.update 方法发送 UPDATE 请求:

    UPDATE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME/rules/RESPONSE_POLICY_RULE
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:要为其更新规则的响应政策的名称或 ID,例如 myresponsepolicy
    • RESPONSE_POLICY_RULE:您要更新的响应政策规则
  • 如需删除响应政策规则,请使用 responsePolicyRules.delete 方法发送 DELETE 请求:

    DELETE https://dns.googleapis.com/dns/v1beta2/projects/PROJECT_ID/responsePolicies/RESPONSE_POLICY_NAME/rules/RESPONSE_POLICY_RULE
    

    请替换以下内容:

    • PROJECT_ID:您已在其中创建响应政策的项目 ID
    • RESPONSE_POLICY_NAME:您要从中删除规则的响应政策的名称或 ID,例如 myresponsepolicy
    • RESPONSE_POLICY_RULE:您要删除的响应政策规则

使用场景

本部分提供了为响应政策配置规则的使用场景。

将特定名称定向到受限 VIP 地址

您可以配置包含每个区域的本地 CNAME 数据的响应政策,以将 Google API 请求转换为受限 Google API。未指定的名称将继续使用常规 DNS 进行解析。

例如,您可以为 pubsub.googleapis.com 创建响应政策,其中包含某个区域的本地 CNAME 数据,以将 Google API 请求转换为 restricted.googleapis.com。与此同时,未指定的 www.googleapis.com 将继续使用常规 DNS 来解析。

在以下示例配置中,您将创建一项政策并将其应用于特定 VPC 网络。

gcloud

  1. 如需创建响应政策,请运行 gcloud beta dns response-policies create 命令:

    gcloud beta dns response-policies create RESPONSE_POLICY_NAME \
        --networks=NETWORK \
        --description=DESCRIPTION
    

    请替换以下内容:

    • RESPONSE_POLICY_NAME:您要创建的响应政策的名称或 ID,例如 myresponsepolicy
    • NETWORK:要与响应政策关联的网络名称列表(以英文逗号分隔),例如 network1,network2
    • DESCRIPTION:响应政策的说明,例如 My new response policy
  2. 如需向政策添加规则,请运行 gcloud beta dns response-policies rules create 命令:

    gcloud beta dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
        --response-policy=RESPONSE_POLICY_NAME \
        --dns-name=pubsub.googleapis.com. \
        --local-data=name="pubsub.googleapis.com.",type="A",ttl=300,rrdatas="199.36.153.4|199.36.153.5|199.36.153.6|199.36.153.7"
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy

API

  1. 通过网址创建响应政策:

    {
      kind: "dns#responsePolicy",
      response_policy_name: RESPONSE_POLICY_NAME,
      description: RESPONSE_POLICY_DESCRIPTION,
      networks: [
        {
          network_url: URL_TO_NETWORK;
        }
      ]
    }
    

    请替换以下内容:

    • RESPONSE_POLICY_NAME:响应政策的名称
    • RESPONSE_POLICY_DESCRIPTION:响应政策的说明
    • URL_TO_NETWORK:要为其创建响应政策的网址

  2. 向政策添加规则:

    {
      kind: "dns#responsePolicyRules",
      rule_name: RULE_NAME,
      dns_name: DNS_NAME,
      local_data: [
        {
          name: "pubsub.googleapis.com.",
          type: "A",
          ttl: 300,
          rrdata: ["199.36.153.4", "199.36.153.5", "199.36.153.6", "199.36.153.7"]
        }
      ]
    }
    

    请替换以下内容:

    • RULE_NAME:要创建的规则的名称,例如 pubsub
    • DNS_NAME:要为其创建规则的 DNS 名称,例如 pubsub.googleapis.com.;注意结尾的点

将所有名称(部分 IP 地址除外)设为受限 VIP 地址

您可以设置规则,以从覆盖整个网域或大型 IP 地址块的政策规则中豁免某些 DNS 响应。此概念称为“passthru 行为”。通过使用 passthru 行为,您可以允许不支持 Service Control 的名称绕过通配符名称。

例如,您可以允许 www.googleapis.com 绕过示例 *.googleapis.com 中的通配符名称。www 的完全匹配优先于通配符 *

在以下示例配置中,您将创建具有指定名称的政策,并将其应用于特定 VPC 网络。该规则允许 www.googleapis.com 绕过通配符 *.googleapis.com

gcloud

  1. 如需创建响应政策,请运行 gcloud beta dns response-policies create 命令:

    gcloud beta dns response-policies create RESPONSE_POLICY_NAME \
        --networks=NETWORK \
        --description=DESCRIPTION
    

    请替换以下内容:

    • RESPONSE_POLICY_NAME:您要创建的响应政策的名称或 ID,例如 myresponsepolicy
    • NETWORK:要与响应政策关联的网络名称列表(以英文逗号分隔),例如 network1,network2
    • DESCRIPTION:响应政策的说明,例如 My new response policy
  2. 如需向政策添加绕过规则,请运行 gcloud beta dns response-policies rules create 命令,并将 --behavior 标志设置为 bypassResponsePolicy

    gcloud beta dns response-policies rules create RESPONSE_POLICY_RULE_NAME \
        --response-policy=RESPONSE_POLICY_NAME \
        --dns-name=DNS_NAME \
        --behavior=bypassResponsePolicy
    

    请替换以下内容:

    • RESPONSE_POLICY_RULE_NAME:您要创建的响应政策规则的名称,例如 myresponsepolicyrule
    • RESPONSE_POLICY_NAME:响应政策的名称,例如 myresponsepolicy
    • DNS_NAME:DNS 或域名,例如 www.googleapis.com

API

  1. 创建响应政策:

    {
      kind: "dns#responsePolicy",
      response_policy_name: RESPONSE_POLICY_NAME,
      description: RESPONSE_POLICY_DESCRIPTION,
      networks: [
        {
          network_url: URL_TO_NETWORK;
        }
      ]
    }
    

    请替换以下内容:

    • RESPONSE_POLICY_NAME:响应政策的名称,例如 my-response-policy
    • RESPONSE_POLICY_DESCRIPTION:响应政策的说明,例如 my response policy
    • URL_TO_NETWORK:要为其创建响应政策的网址
  2. 向政策添加规则:

    {
      kind: "dns#responsePolicyRules",
      rule_name: RULE_NAME,
      dns_name: DNS_NAME,
      local_data: [
        {
          name: "*.googleapis.com.",
          type: "A",
          ttl: 300,
          rrdata: ["restricted.googleapis.com."]
        }
      ]
    }
    {
      kind: "dns#responsePolicyRules",
      rule_name: "www-passthru",
      dns_name: "www.googleapis.com.",
      behavior: BYPASS_RESPONSE_POLICY
    }
    

    请替换以下内容:

    • RULE_NAME:要创建的规则的名称,例如 googleapis
    • DNS_NAME:要为其创建规则的通配符 DNS 名称,例如 *.googleapis.com.;注意结尾的点

后续步骤

  • 如需创建、更新、列出和删除代管区域,请参阅管理区域
  • 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查
  • 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览