在包含代理(代表客户端连接到后端源的服务器)的网络中,原始 TCP 连接参数(例如客户端 IP 地址)很可能会在代理处丢失。当您尝试应用安全和访问控制策略(例如,为源服务器上的 IP 允许/阻止列表添加客户端 IP 地址或基于客户端 IP 地址执行分析)时,还会出现其他挑战。
如何保留客户端IP地址?
CDNetworks' 高速数据传输 (HDT) 通过建立在代理上的隧道加速数据传输以解决这些问题。 HDT提供了几种向源站发送客户端信息的方式:
X-Forwarded-For (XFF) HTTP 标头
X-Forwarded-For (XFF) HTTP 标头字段是一种常用方法,用于识别通过 HTTP 代理连接到 Web 服务器的客户端的原始 IP 地址。因此,默认情况下,HDT 会在客户端请求中插入 XFF 标头,以包含 HTTP 流量的原始客户端 IP 地址。
XFF 字段的一般格式类似于以下内容:
X-Forwarded-For:客户端、proxy1、proxy2
元素以逗号分隔,逗号周围有可选的空格。最左边的 IP 地址是原始客户端 IP 地址,后面是传递请求的每个后续代理的 IP 地址(IP 地址是从收到请求的代理添加的)。
例子:[3]
X-Forwarded-For: 203.0.113.195, 70.41.3.18, 150.172.238.178
X-Forwarded-For:203.0.113.195
X-Forwarded-For: 2001:db8:85a3:8d3:1319:8a2e:370:7348
代理协议
与 HTTP 不同,其他协议可能不会采用相同的修复方法。在这些情况下,在传输控制协议 (TCP) 层运行的代理协议通过将覆盖范围扩展到 TCP/IP 上的任何协议(例如,SMTP、IMAP、FTP 和专有数据库协议)来填补这一空白。
PROXY 协议在 TCP 连接的开头添加一个包含客户端 IP 地址的标头。代理在建立连接后发送一个短头,接收者接受后解析它。
PROXY 协议版本 1 侧重于保持 IP 地址可读以方便调试。版本 2 添加了对标头的二进制编码的支持,这可以更有效地生成和解析,尤其是在处理以 ASCII 形式发送和解析成本高昂的 IPv6 地址时。
HDT 有能力发送两个版本的 PROXY 协议头。但是,源服务器必须能够接受它,因为发送端和接收端都必须支持该协议。
TCP 选项字段
在 TCP 层中保留客户端 IP 地址的另一种方法是使用 TCP 标头选项字段。 TCP 规定了由一个标识的可选报头字段 选项种类字段. HDT 可以在 TCP 选项 78 字段中添加客户端详细信息,并将其发送到后端服务器。要检索客户端信息,必须配置后端服务器在解析时容纳选项字段。有关如何通过 F5 设备访问 TCP 流量的 TCP 选项的信息,请参阅文章 从 iRules 访问 TCP 选项.
如何在HDT平台启用?
除了 HDT 默认支持的用于 HTTP/HTTPs 流量的 XFF 之外,您可以 联系 HDT 支持团队 启用客户端 IP 地址的保留。 HDT 支持团队的专家将调查您的问题并为您提供最佳解决方案来完成配置。通过应用自定义配置,您可以在短短几分钟内完成所有工作。就这么简单!