Citrix ADC

将 Citrix ADC 设备配置为 DNS 代理服务器

作为 DNS 代理服务器, ADC 设备可以用作单个 DNS 服务器或一组 DNS 服务器的代理服务器。下面的示例拓扑图说明了请求和响应的流程。

图 1. Citrix ADC 作为 DNS 代理

NetScaler 作为 DNS 代理

默认情况下,Citrix ADC 设备会缓存来自 DNS 名称服务器的响应。当设备收到 DNS 查询时,它会检查其缓存中的查询域。如果查询域的地址存在于其缓存中,Citrix ADC 会将相应地址返回给客户端。否则,它会将查询转发到 DNS 名称服务器,该服务器将检查地址的可用性并将其返回到 Citrix ADC。然后,Citrix ADC 将地址返回给客户端。

对于先前缓存的域请求,Citrix ADC 会从缓存中提供域的地址记录,而无需查询配置的 DNS 服务器。

当记录的生存时间 (TTL) 值达到配置值时,设备将丢弃存储在其缓存中的记录。请求过期记录的客户端必须等待 Citrix ADC 从服务器检索记录并更新其缓存。为避免此延迟,Citrix ADC 在记录到期前从服务器检索记录,主动更新缓存。

下表列出了需要在 Citrix ADC 上配置的实体的示例名称和值。

表 1. DNS 代理实体配置示例

实体类型 名称 IP 地址 类型 端口
LB 虚拟服务器 虚拟服务器-DNS-1 10.102.29.40 DNS 53
服务 Service-DNS-1 10.102.29.50 DNS 53
服务 Service-DNS-2 10.102.29.51 DNS 53

下图显示了 DNS 代理的实体以及要在 Citrix ADC 上配置的参数值。

图 2. DNS 代理实体模型

DNS 代理实体模型

注意

要配置 DNS 代理,您需要了解如何配置负载平衡服务和虚拟服务器。

创建负载平衡虚拟服务器

要在 Citrix ADC 上配置 DNS 代理,请配置 DNS 类型的负载平衡虚拟服务器。若要将 DNS 虚拟服务器配置为负载平衡一组支持递归查询的 DNS 服务器,必须设置“递归可用”选项。使用此选项,RA 位在 DNS 虚拟服务器的 DNS 回复中设置为 ON。

有关创建负载平衡虚拟服务器的说明,请参阅负载平衡

创建 DNS 服务

创建 DNS 类型的负载平衡虚拟服务器后,必须创建 DNS 服务。您可以添加、修改、启用、禁用和删除 DNS 服务。有关创建 DNS 服务的说明,请参阅负载平衡

将负载平衡虚拟服务器绑定到 DNS 服务

要完成 DNS 代理配置,必须将 DNS 服务绑定到负载平衡虚拟服务器。有关将服务绑定到负载平衡虚拟服务器的说明,请参阅负载平衡

将 DNS 代理设置配置为使用 TCP

某些客户端使用用户数据报协议 (UDP) 进行 DNS 通信。但是,UDP 指定的最大数据包大小为 512 字节。当有效负载长度超过 512 字节时,客户端必须使用传输控制协议 (TCP)。当客户端向 Citrix ADC 设备发送 DNS 查询时,设备会将查询转发到其中一个名称服务器。如果响应对 UDP 数据包来说太大,则名称服务器在响应 Citrix ADC 时设置截断位。截断位表示响应对 UDP 太大,客户端必须通过 TCP 连接发送查询。Citrix ADC 会将响应中继到客户端,并将截断位完好无损,并等待客户端与端口 53 上的 DNS 负载平衡虚拟服务器的 IP 地址启动 TCP 连接。客户端通过 TCP 连接发送请求。然后,Citrix ADC 设备将请求转发到名称服务器,并将响应中继到客户端。

要将 Citrix ADC 配置为使用 DNS 的 TCP 协议,必须配置负载平衡虚拟服务器和服务,这两种类型都是 DNS_TCP。您可以配置 DNS_TCP 类型的监视器来检查服务的状态。有关创建 DNS_TCP 虚拟服务器、服务和监视器的说明,请参阅负载平衡

为了主动更新记录,Citrix ADC 使用与服务器的 TCP 连接来检索记录。

重要

要将 Citrix ADC 配置为将 UDP 用于 DNS,并且仅在 UDP 的有效负载长度超过 512 字节时使用 TCP,您需要配置 DNS 和 DNS_TCP 服务。DNS_TCP 服务的 IP 地址必须与 DNS 服务的 IP 地址相同。

为 DNS 条目配置生存时间值

TTL 对于具有相同域名和记录类型的所有 DNS 记录都是相同的。如果更改其中一条记录的 TTL 值,则新值将反映在同一域名和类型的所有记录中。默认 TTL 值为 3600 秒。最小值为 0,最大值为 604800。如果 DNS 条目的 TTL 值小于或大于最大值,则分别将其另存为最小值或最大 TTL 值。

使用CLI 指定最大和/或最大TTL

在 Citrix ADC 命令提示符处,键入以下命令以指定最小和最大 TTL 并验证配置:

-  set dns parameter [-minTTL <secs>] [-maxTTL <secs>]
-  show dns parameter

示例:

> set dns parameter -minTTL 1200 -maxTTL 1800
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
        Minimum TTL: 1200               Maximum TTL: 1800
            .
            .
            .
 Done
>

通过使用 GUI 指定最小和/或最大 TTL

  1. 导航到“流量管理”>“DNS”。
  2. 在详细信息窗格中的“设置”下,单击“更改 DNS 设置”。
  3. 在“配置 DNS 参数”对话框的“TTL”中的“最小”和“最大”文本框中,分别键入最短和最大生存时间(以秒为单位),然后单击“确定”。

注意: TTL 过期时,记录将从缓存中删除。Citrix ADC 主动联系服务器并在 DNS 记录到期之前获取 DNS 记录。

刷新 DNS 记录

您可以删除缓存中存在的所有 DNS 记录。例如,您可能希望在进行修改后重新启动服务器时刷新 DNS 记录。

使用 CLI 删除所有代理记录

在 Citrix ADC 命令提示符下,键入:

flush dns proxyRecords

使用 GUI 删除所有代理记录

  1. 导航到流量管理 > DNS > 记录。
  2. 在详细信息窗格中,单击刷新代理记录。

添加 DNS 资源记录

您可以将 DNS 记录添加到 Citrix ADC 设备配置为 DNS 代理服务器的域。有关添加 DNS 记录的信息,请参阅配置 DNS 资源记录

删除负载平衡 DNS 虚拟服务器

有关删除负载平衡虚拟服务器的信息,请参阅负载平衡

限制客户端连接上并发 DNS 请求的数量

您可以限制单个客户端连接上并发 DNS 请求的数量,该连接由 <clientip:port>-<vserver ip:port> 元组标识。并发 DNS 请求是 Citrix ADC 设备已转发到名称服务器且设备正在等待响应的请求。通过限制客户端连接上的并发请求数,您可以在敌对客户端通过发送大量 DNS 请求尝试分布式拒绝服务 (DDoS) 攻击时保护名称服务器。达到客户端连接的限制时,连接上的后续 DNS 请求将被删除,直到未完成的请求计数低于限制。此限制不适用于 Citrix ADC 设备从其缓存中提供服务的请求。

此参数的默认值为 255。在大多数情况下,此默认值就足够了。如果名称服务器在正常操作条件下提供大量并发 DNS 请求,则可以指定较大的值或值为零 (0)。值为 0 将禁用此功能,并指定单个客户端连接上允许的 DNS 请求数量没有限制。这是一个全局参数,适用于 Citrix ADC 设备上配置的所有 DNS 虚拟服务器。

使用 CLI 指定单个客户端连接允许的最大并发 DNS 请求数

在命令提示符处,键入以下命令以指定单个客户端连接允许的最大并发 DNS 请求数,并验证配置:

-  set dns parameter -maxPipeline <positive_integer>
-  show dns parameter

示例:

> set dns parameter -maxPipeline 1000
 Done
> show dns parameter
        DNS parameters:
        DNS retries: 5
        .
        .
        .
        Max DNS Pipeline Requests: 1000
 Done

使用 GUI 指定单个客户端连接允许的最大并发 DNS 请求数

  1. 导航到“流量管理”>“DNS”。
  2. 在详细信息窗格中,单击 更改 DNS 设置。
  3. 在“配置 DNS 参数”对话框中,为“最大 DNS 管道请求”指定值。
  4. 单击确定。