インターフェース X で mod_proxy に接続するときに、その特定のインターフェースでトラフィックを送信するように apache+mod_proxy を設定するにはどうすればよいでしょうか?

インターフェース X で mod_proxy に接続するときに、その特定のインターフェースでトラフィックを送信するように apache+mod_proxy を設定するにはどうすればよいでしょうか?

私たちは、IP ごとに X 個のリクエストを割り当て、そのような制限内で 5 つの IP を設定できるサービスを使用しています (わかっています... 1 つの IP で制限を 5 倍にできないのは愚かなことのように思えます)。

インターネット上で次のアドレスを持つ Linux ボックスがあると仮定します: 66.249.90.104 - これは Google の IP であり、私のものではありません... なので、自由にハッキングしてみてください :)

apache+mod_proxy を転送プロキシとして設定しました (ProxyRequests オン)。つまり、66.249.90.104:8080 をプロキシとして使用するように Firefox を設定すると、すべての Firefox トラフィックが 66.249.90.104 として出力されます。

ここまでは順調ですね。

問題:
エイリアス インターフェイスをさらに追加すると、合計は次のようになります。

eth0: 66.249.90.104
eth0:1 66.249.90.105
eth0:2 66.249.90.106
eth0:3 66.249.90.107
eth0:4 66.249.90.108

私はすべてのインターフェースにバインドするapache+mod_proxy(単一のapacheインスタンス)を実行していますが、転送プロキシを使用するためにどのアドレスに接続しても、すべてのトラフィックは66.249.90.104としてインターネットに送信されます。

また、それぞれ独自のインターフェースにのみバインドする 5 つの異なる Apache を実行してみましたが、それでも送信要求は 66.249.90.104 経由で送信されます。

次のように動作させたいと思っていました:
66.249.90.108 に接続してプロキシ要求を行うと、66.249.90.108 として送信されます。66.249.90.107
に接続してプロキシ要求を行うと、66.249.90.107 として送信されます。
など。

この問題に対処しなければならなかった人は他にいますか? 代替ソリューションとしては、5 つの別々のボックスで Apache を実行するだけですが、すべてを 1 つのボックスで動作させたいです。

ありがとう!

答え1

mod_proxy には、ソケットを開くときにソース IP を選択するオプションがないようです。ただし、iptables を使用して、ユーザーからアドレス プールへのトラフィックを SNAT することはできます。

iptables -A POSTROUTING -m owner --uid-owner httpd -j SNAT --to-source 66.249.90.104-66.249.90.108

私の記憶が正しければ、各接続がマップされるたびにプールを通じて分散されるため、均等に分割されるはずです。どのリクエストがどこに送信されるかを本当に制御する必要がある場合は、複数の Apache インスタンスを異なるユーザーで実行し、個別のルールで一致させてみることができます。

答え2

Linux Advanced Routing and Traffic Control HOWTO、特に以下を参照してください。これページ。おそらく、ルーティングを、"アプリケーション" レベルを担当する Apache ではなく、ルーティングについて知っているカーネルに任せたいと考えるでしょう。

関連情報