IBM Cloud Docs
添加自定义解析器转发规则

添加自定义解析器转发规则

使用转发规则配置 DNS 查询的转发位置,以便通过用户界面、CLI 或 API 进行解析。

转发规则是一种配置,可以将 DNS 查询定向到特定的 DNS 解析器。 设置转发规则需要提供两个必需参数和两个可选参数。 至少需要配置一个可选参数:

  • 规则类型:目前,只有 DNS 区域可供选择。

  • 匹配:您希望转发 DNS 查询的 DNS 区域。

  • 转发 IP 地址(可选):查询转发的 DNS 解析器的 IP 地址。 如果提供了多个地址,自定义解析器就会使用顺序策略来选择主机,直到某个解析器做出响应。

    VPC 网络行为和 VPC 网络配置也会影响与位于 VPC 上的自定义解析器之间的流量往来。 例如,如果要为与某个 DNS 区域匹配的 DNS 查询创建一条转发到外部互联网上 DNS 解析器的规则,就必须创建一个公共网关,以允许自定义解析器的外部连接。 有关 VPC 网络的更多信息,请参阅 About networking for VPC

  • 视图(可选 ):由一个表达式组成,当评估为真时,将DNS查询转发到指定的DNS解析器。

配置规则并启用自定义解析器后,DNS 查询请求会首先转到自定义解析器。

然后,自定义解析器通过与匹配值比较,检查查询是否针对任何已配置的规则。 如果 DNS 查询存在规则,自定义解析器会将 DNS 查询转发给配置规则中指定的 DNS 解析器。 如果_不_存在与 DNS 查询匹配的规则,自定义解析器会将 DNS 查询转发到默认转发规则中指定的 DNS 解析器。

自定义解析器支持两种转发规则:

  • DNS 区域规则适用于区域名称。

  • Default 规则被配置为将查询转发到 DNS Services DNS 解析器(161.26.0.7161.26.0.8)。每个自定义解析器只允许使用一条默认规则;可以编辑,但不能删除。

    在具有虚拟专用端点、IKS 群集、ROKS 群集或已定义专用 DNS 区域的 VPC 中,更改默认规则可能会导致 DNS 查询解析问题。

DNS 视图

DNS视图定义了一个表达式,该表达式必须计算为 true,才能将DNS请求转发到服务器块。 使用此功能,客户可以根据其配置的表达式更改请求的转发位置。

目前,DNS Services 仅支持与源IP相关的表达。 视图表达式所接受的语法必须符合通用表达式语言(CEL)。

以下示例显示了一个自定义解析器转发规则,其中定义了一个视图。

{
  "description": "forwarding rule",
  "type": "zone",
  "match": "example.com",
  "forward_to": [
    "161.26.0.7"
  ],
  "views": [
    {
      "name": "view-example",
      "description": "view example",
      "expression": "ipInRange(source.ip, '10.240.0.0/24') || ipInRange(source.ip, '10.240.1.0/24')",
      "forward_to": [
        "10.240.2.6"
      ]
    }
  ]
}

本示例中配置的视图会在查询的源IP属于 10.240.0.0/2410.240.1.0/24 时,将 example.com 的DNS查询转发到 10.240.2.6。 在其他情况下,查询将转发至 161.26.0.7

视图的优先级根据其在 views 数组中的配置顺序确定。

在控制台中添加自定义解析器转发规则

要添加转发规则:

  1. 转到自定义解析器详细信息页面,选择 转发规则选项卡。
  2. 单击添加规则
  3. 输入匹配区域。
  4. 可选择输入规则说明。
  5. 输入转发 IP 地址(CIDR 格式),用逗号分隔。 当DNS视图配置了转发IP地址时,此选项为可选。
  6. 可选,点击添加DNS视图,配置DNS视图的优先级、名称、可选描述、转发IP地址和表达式。 根据自定义解析器配置文件添加DNS查看次数。
  7. 单击创建

通过 CLI 添加自定义解析器转发规则

要使用 CLI 创建自定义解析器转发规则,请运行以下命令:

ibmcloud dns custom-resolver-forwarding-rule-create RESOLVER_ID --type TYPE --match HOSTNAME [--dns-svcs IPs] [--description DESCRIPTION] [--view VIEW1 --view VIEW2 ...] [-i, --instance INSTANCE] [--output FORMAT]

其中:

  • RESOLVER_ID 是自定义解析器的 ID。
  • -t, --type 是转发规则的类型。 有效值:"zone".
  • -d, --description 是自定义解析器转发规则的描述文本。
  • -match 是匹配区域。
  • --dns-svcs 是要转发的上游 DNS 服务器。
    • -view是用于将DNS请求路由到服务器块的表达式。nameexpressiondns-svcs 是必填项,description 是可选项。
  • -i, --instance 是实例名称或 ID。 如果未设置,则使用 dns instance-target INSTANCE 指定的上下文实例。
  • --output 指定输出格式。 目前,JSON 是唯一受支持的格式。

使用 API 添加自定义解析器转发规则

要使用 API 创建自定义解析器转发规则,请按照以下步骤操作:

  1. 使用正确的变量设置 API 环境。

  2. 在变量中存储以下值,以便在 API 命令中使用:

    • instance_id,它是服务实例的唯一标识符。
    • resolver_id,这是自定义解析器的唯一标识符。
    • X-Correlation-ID,这是一个唯一标识请求的字符串。
  3. 启动所有变量后,创建自定义解析器转发规则:

    {
      "description": "forwarding rule",
      "type": "zone",
      "match": "example.com",
      "forward_to": [
        "161.26.0.7"
      ],
      "views": [
        {
          "name": "view name",
          "description": "view description",
          "forward_to": [
            "161.26.0.7"
          ],
          "expression": "ipInRange(source.ip,'10.11.12.0/24')"
        }
      ]
    }