默认情况下,NSX Advanced Load Balancer 服务引擎 (SE) 源 NAT (SNAT) 流量发送到服务器。由于 SNAT,应用程序服务器上的日志将显示 SE 的第 4 层 IP 地址,而不是客户端的原始 IP 地址。
大多数应用程序服务器可以将 XFF 标头作为源 IP 地址,以进行日志记录或列入阻止列表。
对于 HTTP 流量,可以将 NSX Advanced Load Balancer 配置为在客户端-服务器请求中插入 X-Forwarded-For (XFF) 标头,以便在日志记录请求中包含原始客户端 IP 地址。NSX Advanced Load Balancer 中的 IPv6 支持该功能。
要在 HTTP 流量日志中包含客户端的原始 IP 地址,请允许 NSX Advanced Load Balancer 将 XFF 标头插入到发送到服务器的客户端流量中。可以在附加到虚拟服务的 HTTP 应用程序配置文件中启用 XFF 插入。
导航到
。-
单击 HTTP 应用程序配置文件旁边的编辑图标以打开以下编辑器:
在常规选项卡中,选中 X-Forwarded-For 复选框。
注:(可选)可以使用 XFF 备用名称字段重命名标头。
单击保存。
配置文件更改影响使用相同 HTTP 应用程序配置文件的任何虚拟服务。
如果启用了 XFF 标头插入,SE 将检查客户端-服务器数据包标头中是否存在现有的 XFF 标头。如果 XFF 标头已存在,SE 先移除任何现有的 XFF,然后插入自己的 XFF 标头。这样做是为了防止客户端伪造其 IP 地址。
如果客户端请求包含的 X-Forwarded-Proto 标头与应用程序配置文件配置中存在的 X-Forwarded-Proto 标头相同,NSX Advanced Load Balancer 仅将单个 X-Forwarded-Proto 发送到服务器。
保留现有的 XFF 标头
有时,不希望出现这种行为(移除现有的 XFF 标头),例如,在多个代理可能进行 SNAT 处理并插入 XFF 标头时。在这种情况下,要插入 XFF 标头而不移除现有的 XFF 标头,请使用 DataScript 或 HTTP 请求策略。
示例:
avi.http.add_header("XFF", avi.vs.client_ip())