通过 F5 BigIP 转发 Akamai 的 True-Client-IP

Forward Akamai's True-Client-IP via F5 BigIP

A​​kamai returns 客户端 IP 在 True-Client-IP header。这可以在 Akamai 设置中禁用,以便 Akamai 将 return HTTP-X-Forwarded-For header 中的客户端 IP,但这将包含多个 IP 地址(客户端 IP、代理 1、代理 2 等)。

我需要在 F5 负载平衡器后面的 Web 服务器 (IIS 7.5) 中检索客户端 IP。

我需要在 F5 中做什么?

F5 会直接将 True-Client-IP header 传递给网络服务器吗?

或者,我是否应该将 Akamai 设置更改为 return HTTP-X-Forwarded-For header 中的客户端 ip?

我会使用 X-Forwarded-For 因为 BIG-IP 已经有规定可以通过。

根据 BIG-IP 的版本,您可以在 iRule 或较新版本中完成此操作,X-Forwarded 是在您的 HTTP 配置文件中启用的功能。然后您只需配置 IIS 以接受该新数据。

https://devcentral.f5.com/questions/big-ip-http-profile-insert-x-forwarded-for-enabled

这应该可以帮助您入门。如果您是 11.x TMOS 之前的用户,请参阅此讨论:

https://devcentral.f5.com/questions/how-to-setup-x-forwarded-for-http-header-to-preserve-the-original-client-ip-address-for-traffic-translated-by-a-snat--25436

更新:默认情况下,如果使用 SNAT,您将看到 SNAT 池的 IP。 X-Forwarded-For 是为 Web 应用程序发送客户端数据的标准方法。在 11.x BIG-IP 中,您可以创建一个 HTTP 配置文件并检查 X-Forwarded-For,这将简单地将外部数据发送到 Web 服务器。我认为 IIS 7.5 仍然需要设置自定义日志过滤器来捕获它,较新的 8.X 它可以作为一个选项提供,而无需做太多事情。

如果您使用 SNAT(大多数人使用),这就是全部。我们这样做是因为大多数人不使用 BIG-IP 作为出站网关,SNAT 纠正了异步路由问题。但是,如果您使用 BIG-IP 作为 IIS 服务器的出站网关,则可以绕过 SNAT 要求;入站和出站流量都经过 BIG-IP。在这些情况下,不需要 SNAT,您始终可以从外部获取源 IP 数据。

缺点是大多数时候,BIG-IP 不是外围设备,仍然可能有其他设备混淆了源 IP。因为 X-Forwarded-For 在 HTTP 负载中是一个单独的 header,它可以绕过更改源 IP 问题。

因此,选择 X-Forwarded-For。

如果您还有其他问题,请告诉我。