为什么软件负载平衡器掩盖客户端IP?

目前我正在使用Cisco CSS硬件负载平衡器。 从Web服务器的angular度来看,最终用户的IP地址在所有stream量上都被标记,就好像负载均衡器不存在一样。

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

所以我的问题是:这是为什么? 为什么软件负载均衡器不能像硬件负载均衡器那样运行,只是像传统的networking设备那样传递TCP数据包呢?

因为这些软件工作在OSI模型的第七层(应用程序)上,所以软件解决scheme就像LVS那样在3/4层工作。

关于你的问题,如果你使用Apache作为Web服务器,那么解决scheme是非常简单的,你只需要安装mod_rpaf 。 该模块允许直接logging由X-Forwarded-For头提供的IP。

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

不过,我猜测,硬件和软件解决scheme之间的区别在于,硬件盒devise成以路由器的forms进入,即它将看到从客户端到terminal服务器的所有stream量,并且可以相应地在两个方向上进行按摩 – 而软件解决scheme则放在不是路由的盒子上,因此重写客户端地址是一种便宜且令人高兴的方式,迫使返回的stream量返回通过它们进行按摩。

软件负载平衡器在更高的TCP堆栈层上工作。 你应该使用iptables来达到同样的效果。 一个例子可以在这里find。

他们可以,内核中默认不支持。 它通常被称为(我相信)作为源地址欺骗。 如果你的谷歌“源代码欺骗haproxy”,你会得到一些点击。

最为显着地。

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