管理响应政策和规则

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

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

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

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

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

管理响应政策

创建响应政策

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

控制台

  1. 在 Google Cloud Console 中,转到 Cloud DNS 区域页面。

    转到 Cloud DNS 可用区

  2. 点击响应政策区域标签页。

  3. 点击创建响应政策

  4. 输入您要创建的响应政策的名称,例如 myresponsepolicy

  5. 输入响应政策的说明,例如 My new response policy

  6. 网络下拉列表中,选择与响应政策关联的一个或多个网络。

  7. 点击创建

    您可以在创建的每个响应政策区域中创建响应政策规则。如需了解相关说明,请参阅创建响应政策规则

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。

查看响应政策

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击响应政策区域标签页。

  3. 响应政策列表页面列出了您已创建的响应政策。

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

更新响应政策

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击要修改的响应政策。您也可以在响应政策名称行中点击 更多

  3. 点击修改响应政策

  4. 进行所需的更新。

  5. 点击保存

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

删除响应政策

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击响应政策名称行中的更多

  3. 点击删除

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 解析器在查找过程中查询的规则。如果响应政策中的规则影响传入的查询,则处理该规则;否则,查找将正常运行。

创建响应政策规则

如需创建响应政策规则,请按照以下步骤操作。

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击响应政策区域标签页。

  3. 在响应政策区域列表中,点击要为其创建规则的响应政策区域。

  4. 点击创建响应政策规则

  5. 输入您要创建的响应政策规则的名称,例如 myresponsepolicyrule

  6. 选择器下拉列表中,选择要应用此规则的选择器类型。

  7. 输入要应用该规则的 DNS 名称(通配符或确切名称),例如 www.googleapis.com

  8. 选择响应政策规则的操作。例如,如需更改响应政策的行为,请选择行为。否则,请选择本地数据

    • 如果您选择了行为,请从下拉列表中选择规则的行为。

    • 如果选择本地数据,则必须添加新的资源记录集。如需了解如何添加新的资源记录集,请参阅创建资源记录集

  9. 点击创建

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

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

查看响应政策规则

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 响应政策区域标签页上,点击要查看其关联规则的响应政策名称。响应政策详细信息页面列出了与响应政策关联的规则。

  3. 如需查看特定响应政策规则的详细信息,请点击规则的名称。您也可以在响应政策规则名称行中点击 更多

gcloud

  • 如需查看响应政策中的 Cloud DNS 响应政策规则列表,请运行 gcloud beta dns response-policies rules list 命令:

    gcloud beta dns response-policies rules list RESPONSE_POLICY_NAME
    

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

  • 如需查看有关特定响应政策规则的详细信息,请运行 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

API

如需在响应政策中查看规则的详细说明,请使用 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:想要查看其详细信息的响应政策规则

更新响应政策规则

如要修改或更新响应政策规则,请按照下列步骤操作。

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击要为其修改规则的响应政策名称。

  3. 点击要修改的响应政策规则的名称。

  4. 响应政策规则详情页面上,点击要修改的规则名称。

  5. 进行所需的更新。

  6. 点击保存

gcloud

运行 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 命令相同的语法。

API

  • 如需对响应政策规则应用部分更新,请使用 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:您要更新的响应政策规则

删除响应政策规则

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

控制台

  1. 在 Cloud Console 中,转到 Cloud DNS 可用区页面。

    转到 Cloud DNS 可用区

  2. 点击要为其修改规则的响应政策名称。

  3. 点击要删除的响应政策规则的名称。

  4. 响应政策规则详情页面上,点击响应政策规则名称行中的 更多

  5. 点击删除。您还可以点击要删除的规则:在响应政策规则详细信息页面上,点击删除响应政策规则

gcloud

  • 如需删除 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.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 概览