代理协议过滤器 (proto)
此扩展的限定名称为 envoy.filters.listener.proxy_protocol
注意
此扩展旨在对不受信任的下游流量具有鲁棒性。它假设上游是可信的。
提示
此扩展扩展了以下扩展类别,并且可以与之一起使用
此扩展必须配置以下类型 URL 之一
代理协议监听器过滤器。
extensions.filters.listener.proxy_protocol.v3.ProxyProtocol
[extensions.filters.listener.proxy_protocol.v3.ProxyProtocol proto]
{
"rules": [],
"allow_requests_without_proxy_protocol": ...,
"pass_through_tlvs": {...},
"disallowed_versions": [],
"stat_prefix": ...
}
- 规则
(repeated extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.Rule) 要应用于请求的规则列表。
- allow_requests_without_proxy_protocol
(bool) 允许不使用代理协议的请求通过。默认值为 false。
注意
这会破坏与规范的一致性。仅在监听器的所有流量都来自可信来源时才启用。有关此功能的安全含义的更多信息,请参见 https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt
注意
匹配代理协议 v2 签名的 12 字节或更少的请求以及匹配代理协议 v1 签名的 6 字节或更少的请求将超时(Envoy 无法区分这些请求与不完整的代理协议请求)。
- pass_through_tlvs
(config.core.v3.ProxyProtocolPassThroughTLVs) 此配置控制哪些 TLV 可以传递到过滤器状态,如果它是代理协议 V2 标头。如果此字段没有设置,则不会传递任何 TLV。
注意
如果配置了此选项,您可能还想设置 core.v3.ProxyProtocolConfig.pass_through_tlvs,它控制上游的传递。
- disallowed_versions
(repeated config.core.v3.ProxyProtocolConfig.Version) 不会匹配的代理协议版本。有助于限制过滤器的范围和攻击面。
当过滤器接收到被禁止的代理协议数据时,它将拒绝连接。默认情况下,过滤器将匹配所有代理协议版本。有关详细信息,请参见 https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt。
注意
当与 allow_requests_without_proxy_protocol 结合使用时,过滤器将不会尝试匹配被禁止版本的签名。例如,当
disallowed_versions=V2、allow_requests_without_proxy_protocol=true以及传入请求匹配 V2 签名时,过滤器将允许请求通过,而无需任何修改。过滤器将此请求视为没有任何代理协议信息。
- stat_prefix
(string) 为过滤器发出统计信息时要使用的可读前缀。如果未配置,则统计信息将发出,但没有前缀部分。有关更多信息,请参见 过滤器的统计信息文档。
extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.KeyValuePair
[extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.KeyValuePair proto]
{
"metadata_namespace": ...,
"key": ...
}
- metadata_namespace
(string) 命名空间 — 如果为空,则将使用过滤器的命名空间。
- key
(string, REQUIRED) 要在命名空间内使用的键。
extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.Rule
[extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.Rule proto]
Rule 定义了在存在或不存在标头时要应用的元数据。
{
"tlv_type": ...,
"on_tlv_present": {...}
}
- on_tlv_present
(extensions.filters.listener.proxy_protocol.v3.ProxyProtocol.KeyValuePair) 如果存在 TLV 类型,则应用此元数据 KeyValuePair。