Citrix ADC

用于评估 DNS 消息并标识其运营商协议的表达式

您可以使用分别以 DNS.REQ 和 DNS.RES 开头的表达式来评估 DNS 请求和响应。您还可以识别用于发送 DNS 消息的传输层协议。

以下函数返回 DNS 查询的内容。

功能 说明
DNS.REQ.QUESTION.DOM 返回 DNS 查询的问题部分中的域名(QNAME 字段的值)。域名以文本字符串的形式返回,该字符串可以传递给 EQ ()、NE () 和任何其他处理文本的函数。
DNS.REQUESTION.TYPE 返回 DNS 查询中的查询类型(QTYPE 字段的值)。该字段指示正在查询名称服务器的资源记录的类型(例如,A、NS 或 CNAME)。可以使用 EQ () 和 NE () 函数将返回的值与以下值之一进行比较:A、AAAA、NS、SRV、PTR、CNAME、SOA、MX 和 ANY。注意:您只能将 EQ () 和 NE () 函数与 TYPE 函数配合使用。示例:DNS.REQUESTION.TYPE.EQ (MX)

以下函数返回 DNS 响应的内容。

功能 说明
DNS.RES.HEADER.RCODE 返回 DNS 响应的标头部分中的响应代码(RCODE 字段的值)。您只能将 EQ () 和 NE () 函数与 RCODE 函数配合使用。以下是可能的值:NOERROR、FORMERR、SERVFAIL、NXDOMAIN、NOTIMP 和拒绝。
DNS.RES.QUESTION.DOM 返回 DNS 响应的问题部分中的域名(QNAME 字段的值)。域名以文本字符串的形式返回,该字符串可以传递给 EQ ()、NE () 和任何其他处理文本的函数。
DNS.RES.QUESTION.TYPE 返回 DNS 响应的问题部分中的查询类型(QTYPE 字段的值)。该字段指示响应中包含的资源记录的类型(例如 A、NS 或 CNAME)。可以使用 EQ() 和 NE() 函数将返回的值与以下值之一进行比较:A、AAAA、NS、SRV、PTR、CNAME、SOA、MX 和 ANY。只能将 EQ() 和 NE() 函数与 TYPE 函数配合使用。示例:DNS.RES.QUESTION.TYPE.EQ (SOA)

以下函数返回传输层协议名称。

功能 说明
DNS.REQ.TRANS 返回用于发送 DNS 查询的传输层协议的名称。返回的可能值是 TCP 和 UDP。您只能将 EQ () 和 NE () 函数与 TRANSPORT 函数配合使用。示例:DNS.REQ.TRANSPORT.EQ (TCP)
DNS.RES.TRANS 返回用于 DNS 响应的传输层协议的名称。返回的可能值是 TCP 和 UDP。您只能将 EQ () 和 NE () 函数与 TRANSPORT 函数配合使用。示例:DNS.RES.TRANSPORT.EQ (TCP)

当查询包含或不包含 DNS ECS 选项时,以下函数会返回匹配位置的名称。

功能 说明
DNS.REQ.OPT.ECS.IP.MATCHES_LOCATION 使用 DNS ECS 选项返回查询中使用的匹配位置的名称。示例:(DNS.REQ.OPT.ECS.IP.MATCHES_LOCATION(“.CH…..”)
client.ip.src.matches_location 返回不带 DNS ECS 选项的查询中使用的匹配位置的名称。示例:(client.ip.src.matches_location (“.CH…“)
DNS.REQ.OPT.ECS.IP.MATCHES_LOCATION 或 client.ip.src.matches_LOCATION 当 DNS 流量在查询中可能有也可能没有 ECS 选项时,在策略中使用的常用表达式。示例:”(((DNS.REQ.OPT.ECS.IP.MATCHES_LOCATION(“.CH…..”).typecast_text_t) ALT (client.IP.SRC.MATCHES_LOCATION(“.CH…..”).typecast_text_t)).eq(“true”))”
用于评估 DNS 消息并标识其运营商协议的表达式