默认情况下,NSX Advanced Load Balancer支持在控制器上进行 DNS 解析。如果控制器无法访问 DNS 解析器,并且配置对象需要进行 FQDN 解析,SE 上的 DNS 解析支持通过 SE 进行 FQDN 解析。

注:
  • 可以使用 IPv6 DNS 解析器 IP 地址完成服务引擎上的 DNS 解析。

  • 仅通过 SE 支持池成员对象的 FQDN 解析。

  • 目前,在 VMware 和无权访问云上支持该功能。

要在 SE 上启用 DNS 解析,必须在云配置中设置 dns_resolution_on_se

服务引擎需要配置 DNS 解析器以从服务引擎中解析 FQDN。为此,需要在云配置中配置 DNSResolver 对象。每个云仅支持一个 DNSResolver 对象。

默认情况下,记录刷新基于 TTL。

在 SE 上配置 DNS 解析

以下是在 SE 上启用 DNS 解析的 CLI 命令:

 [admin:Avi-Controller]: > configure cloud Default-Cloud
 [admin:Avi-Controller]: cloud > dns_resolution_on_se
 [admin:Avi-Controller]: cloud > save

以下是在云中配置 DNS 解析器的 CLI 命令:

[admin:Avi-Controller]: > configure cloud Default-Cloud
[admin:Avi-Controller]: cloud> dns_resolvers
[admin:Avi-Controller]: cloud:dns_resolvers> resolver_name  resolver1
[admin:Avi-Controller]: cloud:dns_resolvers> nameserver_ips 100.64.88.201
[admin:Avi-Controller]: cloud:dns_resolvers> nameserver_ips 100.64.89.202
[admin:Avi-Controller]: cloud:dns_resolvers> save
[admin:Avi-Controller]: cloud> save

以下是 DNS 解析器中的可配置属性:

  • resolver_name:解析器的名称。

  • nameserver_ips:用于解析的 DNS 服务器的 IPv4 地址。

  • fixed_ttl:如果已配置,该值用于刷新 DNS 条目。这会覆盖 received_ttlmin_ttl。即使在 received_ttl 小于 fixed_ttl 时,也仅根据 fixed_ttl 刷新这些条目。

  • min_ttl:如果已配置,在响应中的 TTL 小于 min_ttl.effectively 以及等于 max(received_ttl, min_ttl) 时,该 TTL 覆盖响应中的 TTL。

  • use_mgmt:如果已启用,则通过管理网络执行 DNS 解析。

输出如下所示:

[admin:demo-cntrlr]: > show serviceengine demo-se2 resolverdb
+----------------------+-------------------------------------------+
| Field                | Value                                     |
+----------------------+-------------------------------------------+
| se_ref               | demo-se2                                  |
| dns_resolution_on_se | True                                      |
| fqdns[1]             |                                           |
|   fqdn               | ntest17.foo.avi.com                       |
|   obj_uuids[1]       | pool-da9e76ad-9bf3-4a8b-9dce-13bf7d36b96d |
|   ips[1]             | 1.1.1.17                                  |
|   ttl                | 300                                       |
|   last_resolved_time | Mon Apr 12 06:54:12 2021                  |
|                      |                                           |
|   last_updated_time  | Mon Apr 12 05:03:35 2021                  |
|                      |                                           |
| fqdns[2]             |                                           |
|   fqdn               | ntest15.foo.avi.com                       |
|   obj_uuids[1]       | pool-f4e9743c-0585-4d67-897e-38328702813c |
|   ttl                | 0                                         |
|   last_resolved_time | Mon Apr 12 06:53:53 2021                  |
|                      |                                           |
|   last_updated_time  | Thu Jan  1 00:00:00 1970                  |
|                      |                                           |
|   err_response       | ERROR                                     |
| resolvers[1]         |                                           |
|   resolver_name      | resolver6                                 |
|   nameserver_ips[1]  | 100.64.88.201                             |
|   nameserver_ips[2]  | 100.64.92.40                              |
|   total_fqdns        | 2                                         |
| resolvers[2]         |                                           |
|   resolver_name      | Default-ResolvConf                        |
|   total_fqdns        | 0                                         |
+----------------------+-------------------------------------------+
  • 如果需要通过 SE 进行解析,并通过 DHCP 更新 DNS 解析器,您可以仅启用 dns_resolution_on_se 代码,而不必在云中配置 dns_resolver code

  • 如果配置了 dns_resolver 对象,它将始终用于 FQDN 解析。

配置 IPv6 以在服务引擎上通过 IPv6 进行 DNS 解析

可以在 DNS 解析器中提供 IPv6 名称服务器 IP。这会确保给定的云通过 IPv6 进行 DNS 解析。下面显示一个示例配置,用于为服务引擎上通过 IPv6 的 DNS 解析添加 IPv6 名称服务器:

admin:10-79-175-173]: > configure cloud test-cloud-vj
[admin:10-79-175-173]: cloud> dns_resolution_on_se
Overwriting the previously entered value for dns_resolution_on_se
[admin:10-79-175-173]: cloud> dns_resolvers
New object being created
[admin:10-79-175-173]: cloud:dns_resolvers> resolver_name ipv4resolver
[admin:10-79-175-173]: cloud:dns_resolvers> nameserver_ips 100.64.88.201
[admin:10-79-175-173]: cloud:dns_resolvers> where
Tenant: admin
Cloud: test-cloud-vj
+-------------------+---------------+
| Field             | Value         |
+-------------------+---------------+
| resolver_name     | ipv4resolver  |
| nameserver_ips[1] | 100.64.88.201 |
+-------------------+---------------+
[admin:10-79-175-173]: cloud:dns_resolvers> save
[admin:10-79-175-173]: cloud> dns_resolvers
New object being created
[admin:10-79-175-173]: cloud:dns_resolvers> resolver_name ipv6resolver
[admin:10-79-175-173]: cloud:dns_resolvers> nameserver_ips 2402:740:0:42a:250:56ff:fe81:6f11,2402:740:0:429:250:56ff:fe81:45b
[admin:10-79-175-173]: cloud:dns_resolvers> where
Tenant: admin
Cloud: test-cloud-vj
+-------------------+--------------------------------------------------------------------+
| Field             | Value                                                              |
+-------------------+--------------------------------------------------------------------+
| resolver_name     | ipv6resolver                                                       |
| nameserver_ips[1] | 2402:740:0:42a:250:56ff:fe81:6f11,2402:740:0:429:250:56ff:fe81:45b |
+-------------------+--------------------------------------------------------------------+
[admin:10-79-175-173]: cloud:dns_resolvers> save
[admin:10-79-175-173]: cloud> save
注:

如果具有多个 IP 地址,可以添加以逗号分隔的 IPv6 名称服务器列表。

在 SE 上配置 DNS 解析的限制

以下是 SE 上的 DNS 解析的限制:

  • NSX Advanced Load Balancer 22.1.3 版本之前,FQDN 解析仅支持 IPv4 传输。从 NSX Advanced Load Balancer 22.1.3 版本开始,FQDN 解析支持 IPv6。

  • 仅查询 A 记录。

  • 仅通过 UDP 进行 DNS 解析。

在服务引擎上为客户端日志流和外部运行状况监控器配置 DNS 名称服务器

如果按照“在服务引擎上配置 DNS”一节中的步骤配置云中的 DNS 解析器,则会更新 /etc/systemd/resolved.conf(用于管理网络)和 /etc/netns/{namespace-name}/resolv.conf(用于 SE 虚拟机上的所有 VRF)。

在客户端日志的分析配置文件 client_log_streaming_config 下面的 external_server 中配置的域名以及外部运行状况监控器的脚本代码中包含的域名将通过配置的名称服务器进行解析。