本节介绍了 DNS 策略中的规则匹配以及匹配目标和操作。
客户端 IP
匹配目标将 DNS 查询的客户端 IP 地址与一组配置的 IP 地址进行匹配。IP 地址匹配可以与隐式 IP 地址集、IP 地址范围和 IP 前缀以及/或一组 IP 地址组对象匹配。
客户端 IP 匹配操作支持以下匹配操作:
-
IS IN
-
如果当前 DNS 请求的客户端 IP 位于配置的 IP 地址集中,则计算结果为 TRUE。
-
IS NOT IN
-
如果当前 DNS 请求的客户端 IP 没有位于配置的 IP 地址集中,则计算结果为 TRUE。
用例
可以使用客户端 IP 匹配目标阻止来自托管恶意机器人程序的特定地理区域的 DNS 查询。为此,请配置使用与特定地理区域关联的 IP 地址的客户端 IP 规则匹配,规则操作为“丢弃”。
查询域名
该匹配目标将 DNS 查询请求中的查询域名与配置的字符串集进行匹配。查询域名匹配目标支持一组隐式的域名(作为匹配目标)和一组字符串组对象。
查询名称匹配操作支持以下匹配操作:
-
Begins With
-
如果当前 DNS 请求的查询域名以配置的字符串集中的任何字符串开头,则计算结果为 TRUE。
-
Does Not Begin With
-
如果当前 DNS 请求的查询域名不以配置的字符串集中的任何字符串开头,则计算结果为 TRUE。
-
Contains
-
如果当前 DNS 请求的查询域名包含配置的字符串集中的任何字符串,则计算结果为 TRUE。
-
Does Not Contain
-
如果当前 DNS 请求的查询域名不包含配置的字符串集中的任何字符串,则计算结果为 TRUE。
-
Ends
-
如果当前 DNS 请求的查询域名以配置的字符串集中的任何字符串结尾,则计算结果为 TRUE。
-
Does Not End With
-
如果当前 DNS 请求的查询域名不以配置的字符串集中的任何字符串结尾,则计算结果为 TRUE。
-
Equals
-
如果当前 DNS 请求的查询域名等于配置的字符串集中的任何字符串,则计算结果为 TRUE。
-
Does Not Equal
-
如果当前 DNS 请求的查询域名不等于配置的字符串集中的任何字符串,则计算结果为 TRUE。
用例
可以使用查询域名匹配目标阻止 DNS 虚拟服务没有为某些域处理的 DNS 查询。为此,请配置使用所需的不可用域名的规则查询域名匹配,规则操作为“丢弃”。
查询类型
该匹配目标将 DNS 查询类型与一组配置的查询类型(记录类型 A、AAAA、CNAME 等)进行匹配。查询类型匹配操作支持以下匹配操作:
-
Is In
-
如果当前 DNS 请求的查询类型位于配置的查询类型集中,则计算结果为 TRUE。
-
Is Not In
-
如果当前 DNS 请求的查询类型没有位于配置的查询类型集中,则计算结果为 TRUE。
用例
可以使用查询类型匹配目标阻止 DNS 虚拟服务未处理的 DNS 查询。为此,请配置使用所需的可用查询类型的规则查询类型匹配,规则操作为“丢弃”。因此,将丢弃没有位于配置的查询类型集中的任何查询类型。
DNS 传输协议
该匹配目标将传输 DNS 查询的传输协议与配置的传输协议集进行匹配。查询类型匹配操作支持以下匹配操作:
-
Is In
-
如果当前 DNS 请求的传输协议位于配置的传输协议集中,则计算结果为 TRUE。
-
Is Not In
-
如果当前 DNS 请求的传输协议没有位于配置的传输协议集中,则计算结果为 TRUE。
用例
可以使用查询传输协议匹配目标通过 UDP 而不是 TCP 重定向 DNS 查询。为此,请配置使用 UDP 协议的规则传输协议匹配,规则操作为“设置了截断 TC 位的 Empty Response”。因此,任何通过 UDP 传输的查询将收到设置了截断 TC 位的空响应,以使客户端能够通过 TCP 重新传输查询。
速率限制
可以通过 REST API 或 UI 指定一个匹配,以指定在一段时间内允许的最大 DNS 请求数。
操作
- 访问控制:
-
该规则操作允许处理或丢弃 UDP DNS 查询。如果收到的查询是通过 TCP 传输的,则允许或丢弃该查询,并提供重置连接的附加选项。
用例:如果配置了一个规则匹配以阻止 A、AAAA、CNAME 和 SRV 类型以外的 DNS 查询,则在规则中使用丢弃操作。
- 自定义响应:
-
该操作允许为 DNS 查询请求发送自定义响应。可以控制响应以在响应中设置响应代码
RCODE
、权威 AA 和截断 TC 位。在使用 REST API 和 CLI 时,支持资源记录集,它们允许将自定义数据插入到 DNS 响应正文的 Answer、Authority 和 Additional 部分中。有关 RRset 的详细信息,请参见 RFC 1034 - 域名 - 概念和设施。
用例:如果 DNS 虚拟服务中的 DNS 条目不支持 IPv6 地址的 AAAA 记录,并提示客户端请求 A 记录,则配置一个规则匹配以捕获 AAAA DNS 查询,并在规则操作中使用响应操作以生成空 NOERROR 响应。这会导致客户端重新发出 A 记录查询。可以返回自定义 A、CNAME、NS 和/或 AAAA 记录类型。
- 选择 GSLB 站点:
-
配置 DNS 虚拟服务的策略,以便规则匹配可以覆盖通常的基于 GSLB 算法的响应。作为匹配结果,从使用相同
site_name
标记的一组 IP 地址中选择一个站点(每个地址位于不同的 GSLB 站点中)。如果这些站点都不可用,最多可以指定 16 个回退站点以作为替代站点。如果任何回退站点均未正常运行并且is_preferred_site
布尔值为 TRUE,则 DNS 虚拟服务根据配置的 GSLB 算法选择一个站点。有关更多信息,请参见《NSX Advanced Load Balancer GSLB 指南》中的使用回退和首选站点选项选择 GSLB 站点主题。
用例:假设有三个 GSLB 站点,分别位于巴黎、里昂和安特卫普。在使用 NSX Advanced Load Balancer 地理位置算法时,靠近法比边境的法国客户端将定向到安特卫普。不过,由于客户端位于法国,因此,GSLB 站点选择操作返回站点名称为“FRANCE”的站点的 VIP。
- 选择池和池组:
-
将为 NSX Advanced Load Balancer DNS 虚拟服务配置后端 DNS 服务器。要将请求路由到后端 DNS 服务器而不是默认池的成员,需要定义一个池或池组选择操作。在 NSX Advanced Load Balancer REST API、CLI 和 UI 中支持该功能。
选择池也称为池切换。
用例:可能需要使用位于远程云中的 DNS 基础架构解析一部分 DNS 查询。NSX Advanced Load Balancer DNS 虚拟服务可以有条件地使用远程云中的 DNS 服务器之一对此类查询进行负载均衡。
选择 GSLB 池:从 22.1.1 版本开始,NSX Advanced Load Balancer 添加了一个新操作以使用 DNS 策略选择 GSLB 池。
只能使用 CLI 配置该功能。以下是在 DNS 策略中选择 GSLB 池以作为操作的步骤:
[admin:ctrl]: > configure dnspolicy Demo Updating an existing object. Currently, the object is: +------------+------------------------------------------------+ | Field | Value | +------------+------------------------------------------------+ | uuid | dnspolicy-e3aae711-7617-439f-912a-dea3945d39e1 | | name | Demo | | tenant_ref | admin | +------------+------------------------------------------------+ [admin:ctrl]: dnspolicy> rule New object being created [admin:ctrl]: dnspolicy:rule> name "Rule 1" [admin:ctrl]: dnspolicy:rule> index 1 [admin:ctrl]: dnspolicy:rule> match [admin:ctrl]: dnspolicy:rule:match> geo_location [admin:ctrl]: dnspolicy:rule:match:geo_location> match_criteria IS_IN [admin:ctrl]: dnspolicy:rule:match:geo_location> geolocation_tag "East Coast" [admin:ctrl]: dnspolicy:rule:match:geo_location> save [admin:ctrl]: dnspolicy:rule:match> save [admin:ctrl]: dnspolicy:rule> action [admin:ctrl]: dnspolicy:rule:action> gs_group_selection [admin:ctrl]: dnspolicy:rule:action:gs_group_selection> group_name "GS-1-pool-2" [admin:ctrl]: dnspolicy:rule:action:gs_group_selection> save [admin:ctrl]: dnspolicy:rule:action> save [admin:ctrl]: dnspolicy:rule> save [admin:ctrl]: dnspolicy> save
速率限制:可以配置 NSX Advanced Load Balancer DNS 虚拟服务以限制接受 DNS 请求的速率。您可以指定在给定时间段内允许的请求数。可以将该操作配置为 DROP 或 Report Only。如果配置了 DROP,虚拟服务将丢弃超过速率限制的流量。如果配置了 Report Only,则传送此类流量,但在应用程序日志中将其标记为重要日志。
速率限制是从 NSX Advanced Load Balancer REST API 或 CLI 中配置的,而不是从 UI 中配置的。
用例:可以使用 DNS 请求速率限制以确保服务质量和提高安全性。