これは単一のサブネットでのみ機能する必要があり、悪意のある使用には使用できません。
Pythonで記述された負荷テストツールがあり、基本的にURLでHTTPリクエストをブラストします。IPベースのロードバランサーに対してパフォーマンステストを実行する必要があるため、リクエストは次の範囲から送信される必要があります。 IPの。ほとんどの商用パフォーマンスツールはこの機能を提供しますが、私はそれを自分のものに組み込みたいと思っています。
このツールは、Pythonのurllib2をトランスポートに使用します。リクエストを構成するパケットのスプーフィングされたIPアドレスを使用してHTTPリクエストを送信することは可能ですか?
これはHTTPの誤解です。 HTTPプロトコルは、 [〜#〜] tcp [〜#〜] の上に基づいています。 TCPプロトコルは、要求を初期化するために3ウェイハンドシェイクに依存しています。
言うまでもなく、発信元IPアドレスをスプーフィングすると、同期段階を通過することはなく、HTTP情報は送信されません(サーバーはそれを正当なホストに送信できません)。
IPロードバランサーをテストする必要がある場合、これはそれを行う方法ではありません。
接続に使用する送信元アドレスを設定します。 「urllib2ソースアドレス」をグーグルすると http://bugs.python.org/file9988/urllib2_util.py になります。私はそれを試したことがありません。
実行しているシステムは、テスト元のIPで構成する必要があります。
昨日これを学んだばかりなので、簡単なメモ:
すでにこれを知っていることを示唆していると思いますが、HTTPリクエストへの応答はすべて、ヘッダーに表示されているIPアドレスに送信されます。したがって、これらの応答を確認する場合は、ルーターを制御し、スプーフィングされたIPがすべて応答の表示に使用しているIPにルーティングされるようにルーターを設定する必要があります。
HTTPリクエストを含むパケットのソースIPではなく、X-Forwarded-Forヘッダーに基づいて決定を下すようにロードバランサーを構成できるかどうかを確認することをお勧めします。重要な商用ロードバランサーのほとんどがこの機能を備えていることを私は知っています。
それができない場合は、セカンダリIPのヒープ全体でLinuxボックスを構成する必要があることをお勧めします-LBで静的ルートを構成する必要はなく、LinuxボックスをLBのデフォルトゲートウェイにするだけです。端末。
LinuxボックスでIPエイリアスを使用して、必要な数のIPアドレスを設定できます。問題は、IPヘッダーを別のネットワークに設定し、そのネットワークに明示的なルートを設定しない限り、IPヘッダーにどのIPがスタンプされるかを予測できないことです。つまり-
current client address on eth0 = 192.168.1.10/24
server-side:
ifconfig eth0:1 172.16.1.1 netmask 255.255.255.0
client-side:
ifconfig eth0:1 172.16.1.2 netmask 255.255.255.0
route add -net 172.16.1.0/24 gw 172.16.1.1 metric 0
必要な数のサブネットに対して繰り返します。 Apacheを再起動して、すべての新しいエイリアスインターフェイスにリスナーを設定すると、オフになって実行されます。