本节介绍了 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 请求的速率。您可以指定在给定时间段内允许的请求数。可以将该操作配置为 DROPReport Only。如果配置了 DROP,虚拟服务将丢弃超过速率限制的流量。如果配置了 Report Only,则传送此类流量,但在应用程序日志中将其标记为重要日志。

注:

速率限制是从 NSX Advanced Load Balancer REST API 或 CLI 中配置的,而不是从 UI 中配置的。

用例:可以使用 DNS 请求速率限制以确保服务质量和提高安全性。