ADC

域名系统

注意: 从版本 13.0 build 41.x 开始,ADNS 和代理模式下的 NetScaler 设备完全符合 2019 年 DNS 国旗日。

您可以将 NetScaler 设备配置为用作域的权威域名服务器(ADNS 服务器)。添加属于设备具有权威性的域的 DNS 资源记录并配置资源记录参数。还可以将设备配置为代理 DNS 服务器,负责对网络内外的 DNS 名称服务器场进行负载平衡。将设备配置为终端解析器和转发器。可以配置 DNS 后缀,以便在未配置完全限定域名时启用名称解析。该设备还支持用于检索属于某个域的所有记录 DNS ANY 查询。

可以将设备配置为同时作为一个域的权威 DNS 服务器和另一个域的 DNS 代理服务器。将设备配置为区域的权威 DNS 服务器或 DNS 代理服务器时,可以使设备能够使用 TCP 来应对超过为用户数据报协议 (UDP) 指定的大小限制的响应大小。

NetScaler 上的 DNS 是如何工作的

您可以将 NetScaler 设备配置为用作 ADNS 服务器、DNS 代理服务器、终端解析器和转发器。您可以在 NetScaler 设备上添加 DNS 资源记录,包括以下记录:

  • 服务 (SRV) 记录
  • IPv6 (AAAA) 记录
  • 地址 (A) 记录
  • 邮件交换 (MX) 记录
  • 规范名称 (CNAME) 记录
  • 指针 (PTR) 记录
  • 授权开始 (SOA) 记录
  • 文本 (TXT) 记录
  • 名称授权指针 (NAPTR) 记录
  • DNSKEY 记录
  • 证书颁发机构授权 (CAA) 记录

此外,还可以将 NetScaler 配置为对外部 DNS 名称服务器进行负载平衡。

可以将 NetScaler 设备配置为域的权限。为域添加有效的 SOA 和 NS 记录。

ADNS 服务器是包含有关区域的完整信息的 DNS 服务器。

要将 NetScaler 设备配置为区域的 ADNS 服务器,必须添加 ADNS 服务,然后配置该区域。为此,您需要为域添加有效的 SOA 和 NS 记录。当客户端发送 DNS 请求时,NetScaler 设备会在配置的资源记录中搜索域名。您可以将 ADNS 服务配置为与 NetScaler 全球服务器负载平衡 (GSLB) 功能一起使用。

可以通过将子域的 NS 记录添加到父域的区域来委派子域。然后,您可以通过为每个子域名服务器添加“粘合记录”,使 NetScaler 对子域名具有权威性。如果配置了 GSLB,NetScaler 将根据其配置做出 GSLB 负载平衡决策,并使用所选虚拟服务器的 IP 地址进行回复。下图显示了 ADNS GSLB 设置和 DNS 代理设置中的实体。

图 1. DNS 代理实体模型

DNS 实体模型

NetScaler 设备可以充当 DNS 代理。DNS 记录缓存是 DNS 代理的重要功能,默认情况下在 NetScaler 设备上处于启用状态。缓存使得 NetScaler 设备能够为重复翻译提供快速响应。创建负载平衡 DNS 虚拟服务器和 DNS 服务,然后将这些服务绑定到虚拟服务器。

NetScaler 提供两个选项,最短存活时间 (TTL) 和最大 TTL,用于配置缓存数据的生命周期。根据这两个选项的设置所指定,缓存的数据会超时。NetScaler 会检查来自服务器的 DNS 记录的 TTL。如果 TTL 低于配置的最短 TTL,则将替换为配置的最短 TTL。如果 TTL 大于配置的最长 TTL,则将替换为配置的最长 TTL。

NetScaler 还允许缓存域的负面响应。负响应表示不存在有关请求的域的信息,或者服务器无法为查询提供答案。此信息的存储称为逆向缓存。逆向缓存有助于加快对域中查询的响应速度,还可以有选择地提供记录类型。

负响应可能是以下情况之一:

  • NXDOMAIN 错误消息-如果本地缓存中存在负面响应,则 NetScaler 会返回错误消息 (NXDOMAIN)。如果响应不在本地缓存中,则将查询转发到服务器,服务器会向 NetScaler 返回 NXDOMAIN 错误。NetScaler 在本地缓存响应,然后将错误消息返回给客户端。
  • NODATA 错误消息-如果查询中的域名有效但给定类型的记录不可用,则 NetScaler 会发送 NODATA 错误消息。

NetScaler 支持 DNS 请求的递归解析。在递归解析中,解析器(DNS 客户端)向名称服务器发送递归查询以获取域名。如果查询的名称服务器对域具有权威性,它会使用请求的域名进行响应。否则,NetScaler 会递归查询域名服务器,直到找到所请求的域名。

必须先启用递归查询选项,才能应用递归查询选项。还可以设置 DNS 查找失败时 DNS 解析器必须发送解析请求(DNS 重试)的次数。

您可以将 NetScaler 配置为 DNS 转发器。转发器将 DNS 请求传递到外部名称服务器。NetScaler 允许您添加外部域名服务器,并为网络外部的域提供域名解析。NetScaler 还允许您将名称查询优先级设置为 DNS 或 Windows 互联网名称服务 (WINS)。

允许 ADC 设备使用 DNS 将主机名解析为各自的 IP 地址

注意: 您需要 SSH 实用程序才能访问设备的命令行接口 (CLI)。

默认情况下,ADC 设备无法将主机名解析为各自的 IP 地址。完成以下任务以在设备上启用名称解析:

  1. 定义名称服务器。
  2. 定义 DNS 后缀。

注意事项

从 CLI 执行 DNS 查找。从 FreeBSD 操作系统的 shell 提示符下进行的 DNS 查找失败,因为 /etc/resolv.conf 文件中的条目指向 127.0.0.2 IP 地址。

以下命令将替换为可通过 shell 命令访问的设备的 FreeBSD CLI 中的 drill 命令:

-  host
-  dig
-  getent/MIP
-  nslookup
<!--NeedCopy-->

例如,您可以运行 drill www.google.com @8.8.8.8 命令,而不是在名称服务器“8.8.8.8”处运行 dig www.google.com @8.8.8.8 查询“A”记录“www.google.com”。drill 命令的执行方式与 dig 命令的执行方式完全相同。

root@lab# drill www.google.com @8.8.8.8
;; ->>HEADER<<- opcode: QUERY, rcode: NOERROR, id: 57980
;; flags: qr rd ra ; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;; www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 300 IN A 142.250.187.196

;; AUTHORITY SECTION:

;; ADDITIONAL SECTION:

;; Query time: 53 msec
;; SERVER: 8.8.8.8
;; WHEN: Thu Jun 9 11:04:55 2022
;; MSG SIZE rcvd: 48
<!--NeedCopy-->

如果设备无法在其 SNIP 地址上 ping DNS 服务器,则服务器状态将显示为“关闭”。当设备位于防火墙后面时,成功 ping 至关重要。

CLI 配置

在命令提示符下,键入:

add dns nameServer <Name_Server_IP_Address>
add dns suffix <DNS_Suffix>
<!--NeedCopy-->

要验证配置,请键入:

show dns nameServer
show dns suffix
<!--NeedCopy-->

要测试 DNS 解析,请键入:

show dns addrec <Host_Name>
<!--NeedCopy-->

GUI 配置

  1. 导航到 Traffic Management(流量管理)> DNS > Name Servers(名称服务器)> Add(添加)
  2. Create Name Server(创建名称服务器)对话框中,输入名称服务器 IP 地址,然后单击 Create(创建)。
  3. 导航到 Traffic Management(流量管理)> DNS > DNS Suffix(DNS 后缀)> Add(添加)
  4. Create DNS Suffix(创建 DNS 后缀)对话框中,输入要用于所有主机查询的 DNS 后缀,例如 example.com,然后单击 Create(创建)。

轮询 DNS

当客户端发送 DNS 请求以查找 DNS 资源记录时,它会收到解析为 DNS 请求中的名称的 IP 地址列表。然后,客户端使用列表中的其中一个 IP 地址,通常是第一条记录或第一个 IP 地址。因此,单个服务器用于缓存的总 TTL,并且在许多请求到达时超载。

当 NetScaler 收到 DNS 请求时,它会通过以循环方式更改 DNS 资源记录列表的顺序进行响应。此功能称为轮询 DNS。轮询在数据中心之间平均分配流量。NetScaler 会自动执行此功能。您不必配置此行为。

功能概述

如果将 NetScaler 配置为 ADNS 服务器,它将按照配置记录的顺序返回 DNS 记录。当 NetScaler 配置为 DNS 代理时,它会按照从服务器接收记录的顺序返回 DNS 记录。缓存中存在的记录的顺序与从服务器接收记录的顺序一致。

然后,NetScaler 以循环方法更改 DNS 响应中记录的发送顺序。第一个响应按顺序包含第一条记录,第二个响应按顺序包含第二条记录,后续响应按相同的顺序继续。因此,请求相同名称的客户端可以连接到不同的 IP 地址。

轮询 DNS 示例

作为轮询 DNS 的示例,请考虑已添加的 DNS 记录,如下所示:

  add dns addRec ns1 1.1.1.1  add dns addRec ns1 1.1.1.2  add dns addRec ns1 1.1.1.3  add dns addRec ns1 1.1.1.4
<!--NeedCopy-->

域 abc.com 链接到 NS 记录,如下所示:

  add dns nsrec abc.com. ns1
<!--NeedCopy-->

当 NetScaler 收到对 ns1 的 A 记录的查询时,地址记录将以循环方式提供,如下所示。在第一个 DNS 响应中,1.1.1.1 作为第一条记录:

  ns1.                    1H IN A         1.1.1.1  ns1.                    1H IN A         1.1.1.2  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4
<!--NeedCopy-->

在第二个 DNS 响应中,第二个 IP 地址 1.1.1.2 作为第一条记录:

  ns1.                    1H IN A         1.1.1.2  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4  ns1.                    1H IN A         1.1.1.1
<!--NeedCopy-->

在第三个 DNS 响应中,第三个 IP 地址 1.1.1.2 作为第一条记录:

  ns1.                    1H IN A         1.1.1.3  ns1.                    1H IN A         1.1.1.4  ns1.                    1H IN A         1.1.1.1  ns1.                    1H IN A         1.1.1.2
<!--NeedCopy-->
域名系统