原始目的地

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 配置。

  • v3 API 参考