ADC

DNS 对重写功能的支持

您可以将重写功能配置为修改 DNS 请求和响应,就像对 HTTP 或 TCP 请求和响应一样。您可以使用重写来管理 DNS 请求的流程,并在标头或答案部分进行必要的修改。例如,如果 DNS 响应没有在标头标志中设置 AA 位,则可以使用重写在 DNS 响应中设置 AA 位并将其发送到客户端。

DNS 表达式

在重写配置中,您可以使用以下 Citrix ADC 表达式来引用 DNS 请求或响应的各个部分:

请参阅 表达式和描述

DNS 绑定点

以下全局绑定点可用于包含 DNS 表达式的策略。

绑定点 说明
DNS_REQ_OVERRIDE 覆盖请求策略队列。
DNS_REQ_DEFAULT 标准请求策略队列。
DNS_RES_OVERRIDE 覆盖响应策略队列。
DNS_RES_DEFAULT 标准响应策略队列。

除了默认绑定点之外,您还可以创建类型为 DNS_REQ 或 DNS_RES 的策略标签,并将 DNS 策略绑定到它们。

重写 DNS 的操作类型

  • replace_dns_answer_section - 此操作将 DNS 应答部分替换为 DNS 策略中定义的表达式。
  • replace_dns_header_field — 检查 DNS 请求中的操作码类型。返回 True 或 False,指示 DNS 请求中的操作码类型是否与指定的操作码类型匹配。此操作将 DNS 标头部分替换为 DNS 策略中定义的表达式。

配置 DNS 的重写策略

以下过程使用 Citrix ADC 命令行配置重写操作和策略,并将策略绑定到特定于重写的全局绑定点。

配置重写操作和策略,并绑定 DNS 的策略

在命令提示符下,键入以下命令:

  1. add rewrite action <actName> <actType>

    对于 <actname>,替换新操作的名称。名称的长度可以是 1 到 127 个字符,并且可以包含字母、数字、连字符 (-) 和下划线 (_) 符号。对于<actType>,指定为 DNS 表达式提供的重写操作类型。

  2. add rewrite policy <polName> <rule> <actName>

    对于 <polname>,请替换新策略的名称。对于<actname>,名称的长度可以为 1 到 127 个字符,并且可以包含字母、数字、连字符 (-) 和下划线 (_) 符号。对于<actname>,替换刚创建的操作的名称。

  3. bind rewrite global <polName> <priority> <gotoPriorityExpression> -type <bindPoint>

    对于<polName>,替换刚创建的策略的名称。对于<priority>,指定策略的优先级。对于<bindPoint>,替换特定于重写的全局绑定点之一。

例如

设置 DNS 请求的 AA 位以平衡虚拟服务器

以下命令将 Citrix ADC 设备配置为充当其提供的所有查询的权威 DNS 服务器。

add rewrite action set_aa replace_dns_header_field dns.req.header.flags.set(aa)
add rewrite policy pol !dns.req.header.flags.is_set(aa)  set_aa
bind rewrite global  pol  100  -type dns_res_override
<!--NeedCopy-->

修改响应答案和标头部分

如果服务器使用 NX 域响应,则可以将重写操作设置为用指定的 IP 地址替换响应。NOOLICY-R写允许您在不处理表达式(规则)的情况下调用外部银行。此条目是一个虚拟策略,不包含规则,但将条目定向到策略标签或虚拟服务器特定的策略库。

add rewrite action set_aa_res replace_dns_header_field "dns.res.header.flags.set(aa)"
add rewrite action modify_nxdomain_res replace_dns_answer_section "dns.new_rrset_a("10.102.218.160",300)"
add rewrite policy set_res_aa true set_aa_res
add add rewrite policy modify_answer "dns.RES.HEADER.RCODE.EQ(nxdomain) && dns.RES.QUESTION.TYPE.EQ(A)"
modify_nxdomain_res
add rewrite policylabel MODIFY_NODATA dns_res
bind rewrite policylabel MODIFY_NODATA modify_answer 10 END
bind rewrite policylabel MODIFY_NODATA set_res_aa 11 END
bind lb vserver v1 -policyName NOPOLICY-REWRITE -priority 11 -gotoPriorityExpression END -type
RESPONSE -invoke policylabel MODIFY_NODATA
<!--NeedCopy-->

限制

  • 仅当 Citrix ADC 设备配置为 DNS 代理服务器且存在缓存中断时,才会评估重写策略。
  • 如果标头中的递归可用 (RA) 标志设置为 YES,则在重写中不会修改 RA 标志。
  • 如果标头中的 RA 标志设置为 YES,则无论任何重写操作,都会修改标头中的 CD 标志。
DNS 对重写功能的支持