26

これは単一のサブネットでのみ機能する必要があり、悪意のある使用には適していません。

私は基本的に URL で HTTP リクエストをブラストする Python で書かれた負荷テスト ツールを持っています。IP ベースのロード バランサーに対してパフォーマンス テストを実行する必要があるため、リクエストはさまざまな IP から送信される必要があります。ほとんどの市販のパフォーマンス ツールはこの機能を提供していますが、私はそれを独自のツールに組み込みたいと考えています。

このツールは、トランスポートに Python の urllib2 を使用します。リクエストを構成するパケットのスプーフィングされた IP アドレスを使用して HTTP リクエストを送信することは可能ですか?

4

5 に答える 5

48

これは HTTP の誤解です。HTTP プロトコルは、 TCPの上に基づいています。TCP プロトコルは、要求を初期化するために 3 ウェイ ハンドシェイクに依存しています。

代替テキスト http://upload.wikimedia.org/wikipedia/commons/archive/c/c7/20051221162333!300px-Tcp-handshake.png

言うまでもなく、元の IP アドレスを偽装すると、同期段階を通過できず、HTTP 情報は送信されません (サーバーはそれを正当なホストに送信できません)。

IP ロード バランサーをテストする必要がある場合、これはその方法ではありません。

于 2009-07-25T01:46:29.263 に答える
6

昨日これを学んだので、簡単なメモ:

あなたはすでにこれを知っているとほのめかしていると思いますが、HTTP 要求への応答はすべて、ヘッダーに表示される IP アドレスに送られます。したがって、これらの応答を確認したい場合は、ルーターを制御し、スプーフィングされた IP がすべて、応答を表示するために使用している IP にルーティングされるように設定する必要があります。

于 2009-07-25T01:27:55.730 に答える
5

接続に使用する送信元アドレスを設定したい。「urllib2ソースアドレス」をグーグルで検索すると、http://bugs.python.org/file9988/urllib2_util.pyが得られます。私はそれを試していません。

実行しているシステムは、テスト元の IP で構成する必要があります。

于 2009-07-25T01:15:44.450 に答える
1

HTTP 要求を含むパケットの送信元 IP ではなく、X-Forwarded-For ヘッダーに基づいて決定を行うようにロード バランサーを構成できるかどうかを確認することをお勧めします。重要な商用ロード バランサーのほとんどがこの機能を備えていることを私は知っています。

それができない場合は、セカンダリ IP のヒープ全体を使用して Linux ボックスを構成する必要がある可能性があることをお勧めします。LB で静的ルートを構成する必要はありません。Linux ボックスを LB のデフォルト ゲートウェイにしてください。デバイス。

于 2009-07-27T01:46:10.637 に答える
1

Linux ボックスで 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 を再起動して、すべての新しいエイリアス インターフェイスにリスナーを設定すると、オフになって実行されます。

于 2009-07-25T02:50:19.653 に答える