DNS支持重写功能
您可以配置重写功能来修改DNS请求和响应,就像修改HTTP或TCP请求和响应一样。您可以使用重写来管理DNS请求流,并在报头或应答部分中进行必要的修改。例如,如果DNS响应的报头标志中没有设置AA位,可以使用rewrite设置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绑定策略
在命令提示符下,输入以下命令:
添加重写动作
为
< actname >
,为新操作替换一个名称。长度为1 ~ 127个字符,可以包含字母、数字、“-”和“_”。为< actType >
,指定为DNS表达式提供的重写操作类型。添加重写策略
为
< polname >
,为您的新策略替换一个名称。为< actname >
,长度为1 ~ 127个字符,可以包含字母、数字、“-”和“_”。为< actname >
,替换您刚刚创建的动作的名称。bind rewrite global
-type . type . type: bindPoint 为
< polName >
,替换您刚刚创建的策略的名称。为< >优先
,指定策略的优先级。为< bindPoint >
,替换一个特定于重写的全局绑定点。
例子:
设置DNS请求的AA位为负载均衡虚拟服务器.
以下命令将Citrix ADC设备配置为它所服务的所有查询的权威DNS服务器。
dns.req.header.flags.is_set(aa) set_aa绑定重写全局pol 100 -type dns_res_override
修改响应答案和标题部分.
如果服务器响应的是NX域,则可以设置重写动作,将响应替换为指定的IP地址。NOPOLICY-REWRITE使您能够调用外部银行而无需处理表达式(规则)。此条目是一个虚拟策略,它不包含规则,但将条目指向策略标签或虚拟服务器特定的策略银行。
添加重写动作set_aa_res replace_dns_header_field "dns.res.header.flags.set(aa)"添加重写动作modify_nxdomain_res replace_dns_answer_section "dns.new_rrset_a(\"10.102.218.160\",300)"添加重写策略set_res_aa true set_aa_res add添加重写策略modify_answer "dns.RES.HEADER.RCODE.EQ(nxdomain) && dns.res. questions . type . eq (A)" modify_nxdomain_res add rewrite policylabel MODIFY_NODATA dns_res bind rewrite policylabel MODIFY_NODATA modify_answer 10 END绑定重写policylabelMODIFY_NODATA set_res_aa 11 END bind lb vserver v1 -policyName NOPOLICY-REWRITE -priority 11 -gotoPriorityExpression END -type RESPONSE -invoke policylabel MODIFY_NODATA
限制:
- 只有当Citrix ADC设备被配置为DNS代理服务器并且存在缓存丢失时,才会评估重写策略。
- 如果报头中的RA (Recursion Available)标志被设置为YES, RA标志将不会在重写中被修改。
- 如果报头中的RA标志被设置为YES,则不管任何重写操作,报头中的CD标志都将被修改。