ADC
感谢您提供反馈

这篇文章已经过机器翻译.放弃

DNS 支持重写

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

DNS 表达式

在重写配置中,您可以使用以下 NetScaler 表达式来引用 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 配置重写策略

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

配置重写操作和策略,并为 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 位以平衡虚拟服务器的负载

以下命令将 NetScaler 设备配置为其提供的所有查询的权威 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

修改响应答案和标题部分

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

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

限制

  • 只有在 NetScaler 设备配置为 DNS 代理服务器且存在缓存缺失时,才会评估重写策略。
  • 如果标题中的递归可用 (RA) 标志设置为 YES,则重写时不会修改 RA 标志。
  • 如果标头中的 RA 标志设置为 YES,则无论任何重写操作,都会修改标头中的 CD 标志。
本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
DNS 支持重写