Citrix ADC

DNS64

Citrix ADC DNS64特性用合成的DNS AAAA记录响应IPv6客户端,发送一个仅ipv4域的AAAA请求。DNS64特性与NAT64特性配合使用,实现只支持ipv6的客户端和只支持ipv4的服务器之间的无缝通信。DNS64协议只允许IPV6客户端发现IPv4domain, NAT64协议允许客户端和服务器之间通信。

为了合成AAAA记录,Citrix ADC设备从DNS服务器获取DNS a记录。DNS64前缀是在Citrix ADC设备上配置的96位IPv6前缀。Citrix ADC设备通过连接DNS64前缀(96位)和IPv4地址(32位)来合成AAAA记录。

为了实现IPv6客户端和IPv4服务器之间的通信,可以将一个带有DNS64和NAT64配置的Citrix ADC设备部署在IPv6客户端或IPv4服务器端。在这两种情况下,Citrix ADC设备上的DNS64配置是相似的,包括一个负载平衡虚拟服务器,充当DNS服务器的代理服务器。如果Citrix ADC设备部署在客户端,则必须在IPv6客户端上指定负载平衡虚拟服务器作为域的命名服务器。

考虑一个示例,其中在IPv4端配置了一个具有DNS64和NAT64配置的Citrix ADC设备。在本例中,企业在服务器S1上托管站点www.example.com,该服务器具有IPv4地址。为了实现IPv6客户端和IPv4服务器S1之间的通信,Citrix ADC设备NS1部署了DNS64和有状态NAT64配置。

DNS64配置包括DNS负载均衡虚拟服务器LBVS-DNS64-1,该服务器上开启了DNS64选项。NS1上还配置了DNS64策略DNS64- policy -1及其关联的DNS64动作DNS64- action -1, DNS64- policy -1与LBVS-DNS64-1绑定。LBVS-DNS64-1作为DNS服务器DNS-1和DNS-2的DNS代理服务器。

到达LBVS-DNS64-1的流量匹配DNS64-Policy-1的条件时,按照DNS64-Action-1的设置进行处理。DNS64- action -1指定DNS64前缀,加上从DNS服务器收到的A记录,合成一条AAAA记录。

在Citrix ADC设备上启用了全局DNS参数缓存记录,因此设备缓存DNS记录。此设置是DNS64正常工作所必需的。

下表列出了上述示例中使用的设置:DNS64例子设置

以下是本例中的交通流:

  1. IPv6客户端CL1向站点www.example.com的IPv6地址发送DNS AAAA请求。
  2. 请求由Citrix ADC设备NS1上的DNS负载平衡虚拟服务器LBVS-DNS64-1接收。
  3. NS1在DNS缓存中查找请求的AAAA记录,发现www.example.com站点的AAAA记录在DNS缓存中不存在。
  4. LBVS-DNS64-1的负载均衡算法选择DNS服务器DNS-1,将AAAA请求转发给DNS服务器DNS-1。
  5. 由于站点www.example.com托管在IPv4服务器上,DNS服务器DNS-1中没有对站点www.example.com的AAAA记录。
  6. DNS-1向LBVS-DNS64-1发送空DNS AAAA响应或错误消息。
  7. 由于LBVS-DNS64-1配置了DNS64选项,当CL1的AAAA请求满足DNS64- policy -1的条件时,NS1向DNS-1发送DNS a请求,请求IPv4地址为www.example.com。
  8. DNS-1将www.example.com的DNS A记录发送给LBVS-DNS64-1。A记录中包含www.example.com的IPv4地址。
  9. NS1为站点www.example.com合成一个AAAA记录,包含:
    • site的IPv6地址www.example.com =关联DNS64action中指定的DNS64前缀的拼接(96位),DNS A记录的IPv4地址(32位)= 2001:DB8:300::192.0.2.60
  10. NS1将合成的AAAA记录发送给IPv6客户端CL1。NS1还将A记录缓存到它的内存中。NS1使用缓存的A记录为后续的AAAA请求合成AAAA记录。

DNS64配置的注意事项

在Citrix ADC设备上配置DNS64之前,请考虑以下几点:

  • Citrix ADC设备的DNS64特性符合RFC 6174。

  • Citrix ADC设备的DNS64特性不支持DNSSEC。Citrix ADC设备不会从从DNS服务器接收到的DNSSEC响应合成AAAA记录。只有当一个响应包含RRSIG记录时,它才被分类为DNSSEC响应。

  • Citrix ADC设备支持长度仅为96位的DNS64前缀。

  • 虽然DNS64特性与NAT64特性一起使用,但DNS64和NAT64配置在Citrix ADC设备上是独立的。对于特定的流,必须为DNS64前缀和NAT64前缀参数指定相同的IPv6前缀值,这样客户端收到的合成IPv6地址才会路由到特定的NAT64配置中。有关在Citrix ADC设备上配置NAT64的详细信息,请参见有状态NAT64

  • 以下是Citrix ADC设备处理DN64的不同情况:

    • 如果来自DNS服务器的AAAA响应包含AAAA记录,则检查响应中的每个记录,以确定Citrix ADC设备上针对特定DNS64配置配置的排除规则集。Citrix ADC从响应中删除前缀与排除规则匹配的IPv6地址。如果得到的响应包含至少一条IPv6记录,Citrix ADC设备将此响应转发给客户端,否则,该设备从域的a记录合成一个AAAA响应并将其发送给IPv6客户端。

    • 如果来自DNS服务器的AAAA响应为空应答响应,则设备请求具有相同域名的资源记录,或者在自己的记录中搜索该设备是否是该域的真实域名服务器。如果请求的结果是空回答或错误,则将其转发到客户端。

    • 如果来自DNS服务器的响应包含RCODE=1(格式错误),Citrix ADC设备将同样的响应转发给客户端。如果在超时之前没有响应,Citrix ADC设备将发送一个RCODE=2(服务器故障)的响应到客户机。

    • 如果来自DNS服务器的响应包含一个CNAME,则遵循该链直到到达终止的a或AAAA记录。如果CNAME没有任何AAAA资源记录,Citrix ADC设备将获取用于合成AAAA记录的DNS A记录。CNAME链与合成的AAAA记录一起被添加到回答部分,然后发送到客户机。

  • Citrix ADC设备的DNS64特性还支持响应PTR请求。当设备上接收到对具有IPv6地址的域的PTR请求,并且该IPv6地址匹配任何配置的DNS64前缀时,设备创建一个CNAME记录,将IP6-ARPA域映射到相应的IN-ADDR。ARPA域和新形成的IN-ADDR。ARPA域用于解析。该设备搜索本地PTR记录,如果记录不存在,该设备发送一个PTR请求IN-ADDR。ARPA域到DNS服务器。Citrix ADC设备使用来自DNS服务器的响应来合成初始PTR请求的响应。

配置步骤

在Citrix ADC设备上创建有状态NAT64配置所需的实体涉及以下步骤:

  • 添加DNS服务。DNS服务是DNS服务器的逻辑表示,Citrix ADC设备充当DNS代理服务器。有关设置服务可选参数的详细信息,请参见负载平衡

  • 添加DNS64动作和DNS64策略,并将DNS64动作与DNS64策略绑定。DNS64策略根据DNS64动作中的设置,指定DNS64处理的流量匹配条件。DNS64动作指定必须的DNS64前缀和可选的排除规则和映射规则设置。

  • 创建DNS负载均衡虚拟服务器,并绑定DNS服务和DNS64策略。DNS负载均衡虚拟服务器作为绑定的DNS服务所代表的DNS服务器的DNS代理服务器。到达虚拟服务器的流量将根据绑定的DNS64策略进行DNS64处理。有关设置负载均衡虚拟服务器可选参数的详细信息,请参见负载平衡

    请注意: CLI对这两个任务有单独的命令,但GUI将它们组合在一个对话框中。

    启用DNS记录的缓存。为Citrix ADC设备启用全局参数,以缓存通过DNS代理操作获得的DNS记录。有关启用DNS记录缓存的更多信息,请参见域名系统

    < / div >

CLI程序

使用CLI命令创建DNS类型的服务。

在命令提示符处,输入:

  • add service

使用实例通过CLI命令创建DNS64操作。

在命令提示符处,输入:

  • add dns action64 -Prefix [-mappedRule ] [-excludeRule ]

使用实例通过CLI命令创建DNS64策略。

在命令提示符处,输入:

  • 添加DNS policy64 -rule -action

使用实例使用CLI命令,创建DNS负载均衡虚拟服务器。

在命令提示符处,输入:

  • add lb vserver DNS -dns64 (ENABLED | DISABLED) [-bypassAAAA (YES | NO)]…

使用CLI命令,为DNS负载均衡虚拟服务器绑定DNS服务和DNS64策略。

在命令提示符处,输入:

  • bind lb vserver
  • bind lb vserver -policyName -priority

GUI程序

使用GUI创建DNS类型的服务:

  1. 在“流量管理>负载均衡>服务”中添加新服务。
  2. 设置以下参数:
    • 服务名称*
    • 服务器*
    • 协议*(从下拉列表中选择DNS)
    • 港口*

使用GUI创建一个DNS64操作:

导航到流量管理> DNS >动作,在DNS Actions64选项卡上,添加一个新的DNS64动作。

使用实例创建DNS64策略。

进入“流量管理> DNS >策略”,在“DNS策略64”页签中添加新的DNS64策略。

使用实例创建DNS负载均衡虚拟服务器,并绑定DNS服务和DNS64策略。

  1. 在“流量管理>负载均衡>虚拟服务器”中,添加新的虚拟服务器。
  2. 设置以下参数:
    • 名称*
    • IP地址*
    • 协议*(从下拉列表中选择DNS)
    • 港口*
  3. 选择“Enable DNS64”选项。
  4. 在Services窗格中,将服务绑定到虚拟服务器。
  5. 在“策略”窗格中,将策略绑定到虚拟服务器。

示例配置

> add service SVC-DNS-1 203.0.113.50 DNS 53 Done > add service SVC-DNS-2 203.0.113.60 DNS 53 Done > add DNS Action64 DNS64-Action-1 -Prefix 2001:DB8:300::/96 Done > add DNS Policy64 DNS64-Policy-1 -rule "CLIENT.IPv6.SRC.IN_SUBNET(2001:DB8:5001::/64)"-action DNS64-Action-1 Done > add lb vserver LBVS-DNS64-1 DNS 2001:DB8:9999::99 53 -dns64 ENABLED Done > bind lb vserver LBVS-DNS64-1 SVC-DNS-1 Done > bind lb vserver LBVS-DNS64-1 SVC-DNS-2 Done > bind lb vserver LBVS-DNS64-1 -policyname DNS64-Policy-1 -priority 2 Done