从负载均衡器获取Orgin IP

keo*_*oir 9 google-compute-engine google-cloud-platform

有没有办法从GCloud的HTTP负载平衡中获取用户的原始IP?我们目前只使用网络负载平衡,并且需要移动到跨区域平衡器,尽管我们需要用户的IP来进行合规性和日志记录.

它是否传递了标题或沿着这些行的东西?

谢谢~Z

Mat*_* S. 8

文档(https://cloud.google.com/compute/docs/load-balancing/http/)表示它是X-Forwarded-For标头的第一个IP地址.

  X-Forwarded-For: <client IP(s)>, <global forwarding rule external IP>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果用户发送了已设置"X-Forwarded-For"的请求,则此标头可能会被欺骗.如果GCP可以指定一个选项来创建一个"X-Real-IP"标头来覆盖任何具有此名称的请求标头,只设置请求的IP以便它不会被欺骗,那就太棒了. (2认同)
  • 我的意思是在这种情况下,GCP可以对LB进行编程,使其从实际的传入请求中设置源IP,而不是从请求的头部读取它(如果客户端设置了它,则覆盖现有的`X-Real-IP`头) ). (2认同)

cak*_*aww 7

如果您确定没有在Google Cloud Balancing之后运行任何其他代理(将其他IP附加到X-Forwarded-For中),则可以从X-Forwarded-For中获得倒数第二个IP作为直接客户端IP。或者,即使您有一些代理但知道要附加的其他IP的确切数量,也可以将这些IP添加到帐户中。

来自https://cloud.google.com/compute/docs/load-balancing/http/#components

X-Forwarded-For: <unverified IP(s)>, <immediate client IP>, <global forwarding rule external IP>, <proxies running in GCP> (requests only)

负载均衡器仅提供<immediate client IP><global forwarding rule external IP>条目。列表中的所有其他条目将不经验证即传递。

直接客户端IP之前的IP可能是欺骗性IP或来自客户端代理的IP。即使客户端欺骗了X-Forwarded-For标头,负载均衡器仍会附加击中负载均衡器的实际IP。