本节重点介绍了 EDNS 和 ECS 选项如何与 NSX Advanced Load Balancer DNS 一起使用。
在 NSX Advanced Load Balancer DNS 虚拟服务上启用 EDNS
在充当权威 DNS 的同时,NSX Advanced Load Balancer DNS 虚拟服务可以直接获取 OPT RR 和 ECS 选项中的信息。要让它分析该信息并将 EDNS 扩展信息附加到客户端日志中,请在 NSX Advanced Load Balancer UI 中选中处理 EDNS 扩展框(如下面的屏幕截图所示),或者在 NSX Advanced Load Balancer CLI 中将相应的 EDNS 参数设置为 True。
案例 1:NSX Advanced Load Balancer DNS 虚拟服务是权威 DNS,并收到 OPT RR + ECS 选项
除了选中处理 EDNS 扩展复选框以外,还要确保提供权威域名列表。例如,在下面的 NSX Advanced Load Balancer CLI 序列中:
configure applicationprofile System-DNS dns_service_profile authoritative_domain_names avi.com authoritative_domain_names foo.com save save
假设下图中的入站 DNS 请求针对以下域之一:
客户端系统向其 DNS 解析器发送传统 DNS 查询。请注意,它发送的请求既不包含 OPT RR 选项,也不包含 ECS 选项。
根据客户端的源地址,DNS 解析器可能会修改它收到的 DNS 查询。这样做是为了使权威 DNS 能够以更明智的方式做出响应,即,根据客户端的地址做出响应,而不是根据 DNS 解析器本身的源 IP 做出响应。
NSX Advanced Load Balancer DNS 根据它在 ECS 选项中找到的地址信息组成响应。
案例 2:NSX Advanced Load Balancer DNS 虚拟服务不是权威 DNS,并收到 OPT RR + ECS 选项
与案例 1 相比,下图显示 NSX Advanced Load Balancer DNS 虚拟服务不是权威 DNS 的查询。如果已为 NSX Advanced Load Balancer DNS 虚拟服务定义 DNS 服务器池,请求将传送到该池。在转发的请求的 ECS 选项中包含的客户端子网地址信息取决于两个值:
DNS 解析器附加并发送的 ECS 选项中包含的子网前缀长度参数值。
edns_client_subnet_prefix_len,这是管理员通过 CLI 设置的 NSX Advanced Load Balancer DNS 虚拟服务应用程序配置文件参数。它的值范围是 1 到 32 之间。
前缀长度是以两种方式解释的:
它表示前导地址位数,之后的所有地址位均为 0。
在舍入到八位的整数倍时,它指定需要传送的八位字节数。
例如,前缀长度 19 表示有关子网的以下信息:
子网地址中的第 20 到 32 位为 0。
仅传送 24 位(即三个八位字节)以标识子网。第 4 个八位字节是多余的。
在通过 DNS 服务器传送 ECS 选项时,NSX Advanced Load Balancer DNS 虚拟服务将确保客户端子网地址由两个前缀长度中的较小者控制。
如果入站子网前缀长度小于 NSX Advanced Load Balancer DNS 的 edns_client_subnet_prefix_len 参数值,ECS 选项在传送时保持不变。
如果入站子网前缀长度(例如 26)大于 NSX Advanced Load Balancer DNS 的 edns_client_subnet_prefix_len 参数值(例如 16),则 NSX Advanced Load Balancer 将一些入站位(例如,此处为 10 个)设置为 0,如果两个长度相差足够大,则会将较少的八位字节(例如,2 个而不是 4 个)转发到 DNS 服务器。
案例 3:NSX Advanced Load Balancer DNS 虚拟服务不是权威 DNS,并且未收到 OPT RR 和 ECS 选项
下图显示从 DNS 解析器收到的 DNS 请求不包含 EDNS 信息。此外,该 DNS 请求针对 NSX Advanced Load Balancer DNS 不是权威 DNS 的域。因此,需要进行传送。在这种情况下,NSX Advanced Load Balancer DNS 虚拟服务将创建一个 OPT RR,并插入具有 1 到 4 个八位字节和相应数量的尾随 0 的客户端子网地址(对于 ECS 选项),如上所述。
默认启用的 EDNS 选项
默认情况下,将为 System-DNS 配置文件启用 EDNS 选项。如果 NSX Advanced Load Balancer 是从旧版本升级的,则会在现有 DNS 配置文件中默认取消选择 EDNS。不过,如果在同一 NSX Advanced Load Balancer 控制器 上创建了新的 DNS 配置文件,则默认选择 EDNS。
执行 show application profile <profile name> 命令以检查 EDNS 标记值(设置为 True),如下所示:
[admin:10-155-1-175]: > show applicationprofile DNS_profile1 | uuid | applicationprofile-104c53ff-eca7-4fed-9480-33e00c23bf8b | | name | new -DNS| | type | APPLICATION_PROFILE_TYPE_DNS | | dos_rl_profile | | | dos_profile | | | thresh_period | 5 sec | | dns_service_profile | | | num_dns_ip | 1 | | ttl | 30 sec | | error_response | DNS_ERROR_RESPONSE_NONE | | edns | True |
处理 EDNS 扩展是 NSX Advanced Load Balancer 控制器 UI 上为 EDNS 功能提供的选项。
要选中该选项,请导航到
,然后根据需要选择所需的 DNS 配置文件或 System-DNS 配置文件。如果取消选择了处理 EDNS 扩展选项,请启用该复选框。
响应中的 ECS 信息
NSX Advanced Load Balancer 支持响应中的 ECS 信息。如果来自客户端的 DNS 请求包含 ECS 信息,并且应用程序配置文件选择了处理 EDNS 扩展,则 SE 的 NSX Advanced Load Balancer 控制器 DNS 生成的响应将 ECS 信息添加到响应中。响应中的范围前缀长度将等于请求中的源前缀长度。