默认情况下,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 插入。

  1. 导航到模板 > 配置文件 > 应用程序

  2. 单击 HTTP 应用程序配置文件旁边的编辑图标以打开以下编辑器:

  3. 常规选项卡中,选中 X-Forwarded-For 复选框。

    注:

    (可选)可以使用 XFF 备用名称字段重命名标头。

  4. 单击保存

配置文件更改影响使用相同 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())