DNS 解析

许多 Envoy 组件解析 DNS:不同的集群类型( 严格 DNS逻辑 DNS); 动态转发代理 系统(由集群和过滤器组成);udp DNS 过滤器 等。Envoy 使用 c-ares 作为第三方 DNS 解析库。在 Apple OS 上,Envoy 还通过 envoy.restart_features.use_apple_api_for_dns_lookups 运行时功能提供使用 Apple 特定 API 的解析。

Envoy 通过扩展提供 DNS 解析,并包含 3 个内置扩展

  1. c-ares: CaresDnsResolverConfig

  2. Apple(仅限 iOS/macOS): AppleDnsResolverConfig

  3. getaddrinfo: GetAddrInfoDnsResolverConfig

有关内置 DNS 类型配置的示例,请参阅 HTTP 过滤器配置文档.

基于 c-ares 的 DNS 解析器在 dns.cares 状态树中发出以下状态

名称

类型

描述

resolve_total

计数

DNS 查询次数

pending_resolutions

仪表

正在进行的 DNS 查询数

not_found

计数器

返回 NXDOMAIN 或 NODATA 响应的 DNS 查询数

timeout

计数器

导致超时的 DNS 查询数

get_addr_failure

计数器

DNS 查询期间的一般故障数

基于 Apple 的 DNS 解析器在 dns.apple 状态树中发出以下状态

名称

类型

描述

connection_failure

计数器

连接到 DNS 服务器的失败尝试次数

get_addr_failure

计数器

调用 GetAddrInfo API 时的通用故障数

network_failure

计数器

网络连接故障次数

processing_failure

计数器

处理来自 DNS 服务器的数据时的故障数

socket_failure

计数器

获取到 DNS 服务器套接字的文件描述符的失败尝试次数

timeout

计数器

导致超时的查询数