本节重点介绍了 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 选项中包含的客户端子网地址信息取决于两个值:

  1. DNS 解析器附加并发送的 ECS 选项中包含的子网前缀长度参数值。

  2. edns_client_subnet_prefix_len,这是管理员通过 CLI 设置的 NSX Advanced Load Balancer DNS 虚拟服务应用程序配置文件参数。它的值范围是 1 到 32 之间。

前缀长度是以两种方式解释的:

  1. 它表示前导地址位数,之后的所有地址位均为 0。

  2. 在舍入到八位的整数倍时,它指定需要传送的八位字节数。

例如,前缀长度 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 功能提供的选项。

  1. 要选中该选项,请导航到模板 > 配置文件 > 应用程序,然后根据需要选择所需的 DNS 配置文件或 System-DNS 配置文件。

  2. 如果取消选择了处理 EDNS 扩展选项,请启用该复选框。



响应中的 ECS 信息

NSX Advanced Load Balancer 支持响应中的 ECS 信息。如果来自客户端的 DNS 请求包含 ECS 信息,并且应用程序配置文件选择了处理 EDNS 扩展,则 SE 的 NSX Advanced Load Balancer 控制器 DNS 生成的响应将 ECS 信息添加到响应中。响应中的范围前缀长度将等于请求中的源前缀长度。