DNS 过滤器表数据 (proto)
data.dns.v3.DnsTable
此消息包含 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
data.dns.v3.DnsTable.DnsServiceTarget
[data.dns.v3.DnsTable.DnsServiceTarget proto]
指定给定 DNS 服务的目标。
{
"host_name": ...,
"cluster_name": ...,
"priority": ...,
"weight": ...,
"port": ...
}
- host_name
(string) 使用可解析的主机名作为服务的端点。
指定服务的端点名称。名称是主机名或集群。
必须设置 host_name、cluster_name 中的一个。
- cluster_name
(string) 使用集群名称作为服务的端点。
指定服务的端点名称。名称是主机名或集群。
必须设置 host_name、cluster_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_list、cluster_name、service_list 中的一个。
- cluster_name
(string) 定义其地址针对指定端点返回的集群。
必须设置 address_list、cluster_name、service_list 中的一个。
- service_list
(data.dns.v3.DnsTable.DnsServiceList) 定义针对指定端点的 DNS 服务列表。
必须设置 address_list、cluster_name、service_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.com
、subdomain.*.example.com
、*subdomain.example.com
等名称不是有效的通配符名称,星号将被解释为字面量*
字符。通配符记录匹配任何级别的子域,例如*.example.com
将匹配foo.example.com
、bar.foo.example.com
、baz.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 秒。