為什麼軟體負載平衡器會屏蔽客戶端 IP?

為什麼軟體負載平衡器會屏蔽客戶端 IP?

目前我正在使用 Cisco CSS 硬體負載平衡器。從 Web 伺服器的角度來看,最終使用者的 IP 位址會標記在所有流量上,就好像負載平衡器根本不存在一樣。

我現在正在尋找軟體替代品,例如 HAProxy、Pound 或 AWS ELB。它們都有一個共同點:Web 伺服器接收負載平衡器的 IP,而不是最終使用者的 IP。如果您想要最終用戶的 IP,或者在 SSL 的情況下,解密並重新加密流量,您的系統必須意識到這一點並訪問 X-Forwarded-For 標頭。

所以我的問題是:為什麼會這樣?為什麼軟體負載平衡器的行為方式不能與硬體負載平衡器相同,而只是像簡單的網路設備一樣傳遞 TCP 封包?

答案1

因為這些軟體工作在第 7 層(應用程式)開放系統互連模型,有一些軟體解決方案適用於第 3/4 層,例如LVS

關於您的問題,如果您使用 Apache 作為 Web 伺服器,解決方案非常簡單,您只需安裝mod_rpaf。此模組允許直接記錄 X-Forwarded-For 標頭提供的 IP。

答案2

嗯,簡短的回答是“他們可以”,所以我不確定這個問題是否能得到答案。

不過,我大膽猜測,硬體和軟體解決方案之間的區別在於硬體盒被設計為作為路由器 - 也就是說,它將看到從客戶端到終端伺服器的所有流量,並且可以相應地在兩個方向上對其進行按摩——而軟體解決方案位於不進行路由的盒子上,因此重寫客戶端地址作為一種廉價而愉快的方式來強制返回跳躍流量通過它們返回進行按摩。

答案3

軟體負載平衡器在更高的 TCP 堆疊層上工作。您應該使用它iptables來達到相同的效果。可以找到一個例子這裡

答案4

他們可以,但內核預設不支援。它通常被稱為(我認為)來源位址欺騙。如果你用谷歌搜尋“source spoofing haproxy”,你會得到一些結果。

最為顯著地。

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

相關內容