ソフトウェア ロード バランサーがクライアント IP をマスクするのはなぜですか?

ソフトウェア ロード バランサーがクライアント IP をマスクするのはなぜですか?

現在、私は Cisco CSS ハードウェア ロード バランサを使用しています。Web サーバーの観点から見ると、ロード バランサが存在しないかのように、エンド ユーザーの IP アドレスがすべてのトラフィックにスタンプされます。

私は現在、HAProxy、Pound、AWS ELB などのソフトウェア代替品を検討しています。これらにはすべて共通点が 1 つあります。Web サーバーは、エンドユーザーの IP ではなくロード バランサーの IP を受け取ります。エンドユーザーの IP が必要な場合は、システムでこれを認識して X-Forwarded-For ヘッダーにアクセスするか、SSL の場合はトラフィックを復号化して再暗号化する必要があります。

そこで私の質問は、なぜそうなるのでしょうか。ソフトウェア ロード バランサーはなぜハードウェア ロード バランサーと同じように動作せず、単純なネットワーク デバイスであるかのように TCP パケットを渡すことができないのでしょうか。

答え1

これらのソフトウェアは、OSIモデルレイヤー3/4で動作するソフトウェアソリューションがあります。LVS の

あなたの問題に関しては、ApacheをWebサーバーとして使用している場合、解決策は非常に簡単です。インストールするだけです。mod_rpafこのモジュールは、X-Forwarded-For ヘッダーによって提供される IP を直接ログに記録することを許可します。

答え2

うーん、簡単に答えると「できる」なので、質問に答えられるかどうかはわかりません。

ただし、ハードウェア ソリューションとソフトウェア ソリューションの違いは、ハードウェア ボックスはルーターとして設計されている (つまり、クライアントからエンド サーバーへのすべてのトラフィックを確認し、それに応じて両方向で調整できる) のに対し、ソフトウェア ソリューションはルーティングを行わないボックス上にあるため、安価で手軽な方法としてクライアント アドレスを書き換えて、リターン ホップ トラフィックを強制的にボックスに戻して調整する点にあると推測します。

答え3

ソフトウェアロードバランサは、より上位のTCPスタック層で動作します。iptables同じ効果を得るには、以下を使用する必要があります。例については、ここ

答え4

可能ですが、カーネルではデフォルトでサポートされていません。これは通常、ソース アドレス スプーフィングと呼ばれます (私の記憶では)。Google で「source spoofing haproxy」と検索すると、いくつかヒットします。

最も顕著なのは。

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

関連情報