原始目的地
Linux
当连接被 iptables REDIRECT 目标重定向,或通过 iptables TPROXY 目标与设置监听器的 transparent 选项组合使用时,原始目的地监听器过滤器读取 SO_ORIGINAL_DST 套接字选项集。
Windows
当连接被应用于容器端点的 HNS 策略重定向时,原始目的地监听器过滤器读取 SO_ORIGINAL_DST 套接字选项集。为了使此过滤器起作用,必须在监听器上设置 traffic_direction。这意味着需要单独的监听器来处理入站和出站流量。
重定向不可用于所有类型的网络流量。支持重定向的包类型如下所示:
TCP/IPv4
UDP
不包含头部的原始 UDPv4
原始 ICMP
有关更多信息,请参阅 Using Bind or Connect Redirection
注意
在撰写本文时(2021 年 2 月),对原始目的地的 OS 支持仅通过 Windows Insider 计划 提供。此功能将在即将发布的 Windows Server 版本中得到完全支持,请参阅 Windows Server Release info。
Envoy 中的后续处理将恢复的目的地地址视为连接的本地地址,而不是监听器正在监听的地址。此外,原始目的地集群 可用于将 HTTP 请求或 TCP 连接转发到恢复的目的地地址。
内部监听器
原始目的地监听器过滤器读取由 内部监听器 处理的用户空间套接字上的动态元数据和过滤器状态对象,而不是系统套接字选项。
预期将目的地地址的动态元数据放置在字段 local 下的键 envoy.filters.listener.original_dst 中,并且应包含一个包含 IP 和端口地址的字符串。在没有动态元数据的情况下,会咨询过滤器状态。
此过滤器使用的过滤器状态对象为
envoy.filters.listener.original_dst.local_ip 用于目的地地址
envoy.filters.listener.original_dst.source_ip 用于源地址
请注意,应使用 内部上游传输 将动态元数据从端点主机传递到套接字元数据和/或过滤器状态对象,这些对象通过用户空间套接字与上游连接共享到内部监听器。
此过滤器应使用类型 URL
type.googleapis.com/envoy.extensions.filters.listener.original_dst.v3.OriginalDst配置。