为什么软件负载均衡器会屏蔽客户端 IP?

为什么软件负载均衡器会屏蔽客户端 IP?

目前我使用的是 Cisco CSS 硬件负载均衡器。从 Web 服务器的角度来看,最终用户的 IP 地址会标记在所有流量上,就好像负载均衡器根本不存在一样。

我现在正在研究软件替代品,例如 HAProxy、Pound 或 AWS ELB。它们都有一个共同点:Web 服务器接收负载均衡器的 IP,而不是最终用户的 IP。如果您想要最终用户的 IP,您的系统必须意识到这一点并访问 X-Forwarded-For 标头,或者在 SSL 的情况下解密并重新加密流量。

所以我的问题是:为什么会这样?为什么软件负载平衡器不能像硬件负载平衡器那样运行,而只是像简单的网络设备一样传递 TCP 数据包?

答案1

因为这些软件在第 7 层(应用程序)上运行OSI 模型,有在 3/4 层工作的软件解决方案,如低压开关柜

关于你的问题,如果你使用 Apache 作为 Web 服务器,解决方案很简单,你只需要安装mod_rpaf. 该模块允许直接记录X-Forwarded-For标头提供的IP。

答案2

嗯,简短的回答是“他们可以”,所以我不确定这个问题是否可以回答。

不过,我大胆猜测,硬件和软件解决方案之间的区别在于,硬件盒被设计为作为路由器使用 - 也就是说,它会看到从客户端到终端服务器的所有流量,并可以相应地在两个方向上对其进行处理 - 而软件解决方案是在没有路由的盒子上,因此重写客户端地址是一种廉价而愉快的方式来强制回跳流量通过它们返回进行处理。

答案3

软件负载平衡器在更高的 TCP 堆栈层上工作。您应该使用它iptables来实现相同的效果。可以找到一个示例这里

答案4

可以,内核默认不支持。它通常被称为(我相信)源地址欺骗。如果你在 Google 上搜索“源欺骗 haproxy”,你会得到一些结果。

最为显着地。

http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/

相关内容