添加自定义解析器转发规则
使用转发规则配置 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.7
、161.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/24
或 10.240.1.0/24
时,将 example.com
的DNS查询转发到 10.240.2.6
。 在其他情况下,查询将转发至 161.26.0.7
。
视图的优先级根据其在 views
数组中的配置顺序确定。
在控制台中添加自定义解析器转发规则
要添加转发规则:
- 转到自定义解析器详细信息页面,选择 转发规则选项卡。
- 单击添加规则。
- 输入匹配区域。
- 可选择输入规则说明。
- 输入转发 IP 地址(CIDR 格式),用逗号分隔。 当DNS视图配置了转发IP地址时,此选项为可选。
- 可选,点击添加DNS视图,配置DNS视图的优先级、名称、可选描述、转发IP地址和表达式。 根据自定义解析器配置文件添加DNS查看次数。
- 单击创建。
通过 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请求路由到服务器块的表达式。
name
、expression
和dns-svcs
是必填项,description
是可选项。
- -view是用于将DNS请求路由到服务器块的表达式。
- -i, --instance 是实例名称或 ID。 如果未设置,则使用
dns instance-target INSTANCE
指定的上下文实例。 - --output 指定输出格式。 目前,JSON 是唯一受支持的格式。
使用 API 添加自定义解析器转发规则
要使用 API 创建自定义解析器转发规则,请按照以下步骤操作:
-
使用正确的变量设置 API 环境。
-
在变量中存储以下值,以便在 API 命令中使用:
instance_id
,它是服务实例的唯一标识符。resolver_id
,这是自定义解析器的唯一标识符。X-Correlation-ID
,这是一个唯一标识请求的字符串。
-
启动所有变量后,创建自定义解析器转发规则:
{ "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')" } ] }