DNS 过滤器表数据 (proto)

DNS 过滤器配置概述.

data.dns.v3.DnsTable

[data.dns.v3.DnsTable proto]

此消息包含 DNS 过滤器的配置,如果从控制平面填充。

{
  "external_retry_count": ...,
  "virtual_domains": [],
  "known_suffixes": []
}
external_retry_count

(uint32) 控制 Envoy 尝试将查询转发到外部 DNS 服务器的次数。

virtual_domains

(repeated data.dns.v3.DnsTable.DnsVirtualDomain) Envoy 将响应 DNS 查询的完全限定域名。通过使此列表为空,Envoy 将将所有查询转发到外部解析器。

known_suffixes

(repeated type.matcher.v3.StringMatcher) 此字段已弃用,不再在 Envoy 中使用。过滤器的行为已在内部更改为使用不同的数据结构,使过滤器能够在不使用此字段的情况下确定查询是否针对已知域。

此字段用于帮助 Envoy 确定它是否可以权威地回答与此列表中的后缀匹配的名称的查询。如果查询名称与此列表中的后缀不匹配,Envoy 将将查询转发到上游 DNS 服务器。

data.dns.v3.DnsTable.AddressList

[data.dns.v3.DnsTable.AddressList proto]

此消息包含针对已知名称的查询返回的 IP 地址列表。

{
  "address": []
}
address

(repeated string, REQUIRED) 此字段包含在名称查询的答案中返回的格式良好的 IP 地址。address 字段可以是 IPv4 或 IPv6 地址。地址族检测在 Envoy 解析字符串时自动完成。由于此字段是重复的,因此 Envoy 将在 DNS 响应中从此列表返回尽可能多的条目,同时保持响应小于 512 字节。

data.dns.v3.DnsTable.DnsServiceProtocol

[data.dns.v3.DnsTable.DnsServiceProtocol proto]

使用数字或字符串值指定服务协议。

{
  "number": ...,
  "name": ...
}
number

(uint32) 指定服务的协议编号。Envoy 将尝试将数字解析为协议名称。例如,6 将解析为“tcp”。有关协议名称和数字,请参阅:https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

必须设置 numbername 中的一个。

name

(string) 指定服务的协议名称。

必须设置 numbername 中的一个。

data.dns.v3.DnsTable.DnsServiceTarget

[data.dns.v3.DnsTable.DnsServiceTarget proto]

指定给定 DNS 服务的目标。

{
  "host_name": ...,
  "cluster_name": ...,
  "priority": ...,
  "weight": ...,
  "port": ...
}
host_name

(string) 使用可解析的主机名作为服务的端点。

指定服务的端点名称。名称是主机名或集群。

必须设置 host_namecluster_name 中的一个。

cluster_name

(string) 使用集群名称作为服务的端点。

指定服务的端点名称。名称是主机名或集群。

必须设置 host_namecluster_name 中的一个。

priority

(uint32) 服务记录目标的优先级。

weight

(uint32) 服务记录目标的权重。

port

(uint32) 服务绑定的端口。如果目标是集群,则此值是可选的。在这种情况下,将端口设置为零将使过滤器使用集群主机中的端口值。

data.dns.v3.DnsTable.DnsService

[data.dns.v3.DnsTable.DnsService proto]

此消息定义了在域中针对服务查询返回的服务选择记录。

{
  "service_name": ...,
  "protocol": {...},
  "ttl": {...},
  "targets": []
}
service_name

(string, REQUIRED) 服务的名称,不包括协议或域名。

protocol

(data.dns.v3.DnsTable.DnsServiceProtocol) 服务协议。这可以指定为字符串或协议的数值。

ttl

(Duration) 服务条目生存时间。这与 DNS 答案记录 TTL 无关。

targets

(repeated data.dns.v3.DnsTable.DnsServiceTarget, REQUIRED) 托管服务的目标列表。

data.dns.v3.DnsTable.DnsServiceList

[data.dns.v3.DnsTable.DnsServiceList proto]

定义给定服务的服务记录列表。

{
  "services": []
}
services

(repeated data.dns.v3.DnsTable.DnsService, REQUIRED)

data.dns.v3.DnsTable.DnsEndpoint

[data.dns.v3.DnsTable.DnsEndpoint proto]

{
  "address_list": {...},
  "cluster_name": ...,
  "service_list": {...}
}
address_list

(data.dns.v3.DnsTable.AddressList) 定义针对指定端点返回的地址列表。

必须设置 address_listcluster_nameservice_list 中的一个。

cluster_name

(string) 定义其地址针对指定端点返回的集群。

必须设置 address_listcluster_nameservice_list 中的一个。

service_list

(data.dns.v3.DnsTable.DnsServiceList) 定义针对指定端点的 DNS 服务列表。

必须设置 address_listcluster_nameservice_list 中的一个。

data.dns.v3.DnsTable.DnsVirtualDomain

[data.dns.v3.DnsTable.DnsVirtualDomain proto]

{
  "name": ...,
  "endpoint": {...},
  "answer_ttl": {...}
}
name

(string, REQUIRED) Envoy 将响应查询请求的域名。通配符记录仅在第一个标签上受支持,例如 *.example.com*.subdomain.example.com。诸如 *example.comsubdomain.*.example.com*subdomain.example.com 等名称不是有效的通配符名称,星号将被解释为字面量 * 字符。通配符记录匹配任何级别的子域,例如 *.example.com 将匹配 foo.example.combar.foo.example.combaz.bar.foo.example.com 等。如果存在多个通配符记录,将使用最长的通配符匹配,例如,如果存在针对 *.example.com*.foo.example.com 的通配符记录,并且查询针对 bar.foo.example.com,则将使用后者。特定记录始终优先于通配符记录。

endpoint

(data.dns.v3.DnsTable.DnsEndpoint) 包含确定此端点地址的方法的配置。

answer_ttl

(Duration) 设置 Envoy 返回给客户端的 DNS 答案中的 TTL。默认 TTL 为 300 秒。