Webサイトのテストフレームワークに取り組んでおり、ユーザーIPをスプーフィングできるようにしたいと考えています。Loadrunnerのようなソフトウェアがこれを実行できることを読みましたが、これも実行できるようにしたいと思います。
通常のソケットの使用方法に関するチュートリアルはここにありますが、IPをスプーフィングしたい場合は、何らかの方法でIPヘッダーを編集する必要があります。これはソケットレベルで行われますか、それとも.Netに他のより深いレベルがあり、これを実行できますか?
Webサイトのテストフレームワークに取り組んでおり、ユーザーIPをスプーフィングできるようにしたいと考えています。Loadrunnerのようなソフトウェアがこれを実行できることを読みましたが、これも実行できるようにしたいと思います。
通常のソケットの使用方法に関するチュートリアルはここにありますが、IPをスプーフィングしたい場合は、何らかの方法でIPヘッダーを編集する必要があります。これはソケットレベルで行われますか、それとも.Netに他のより深いレベルがあり、これを実行できますか?
Windows のデスクトップ バージョンでは raw ソケットへのアクセスが制限されているため、これ以上はできません。
Windows 7、Windows Vista、Service Pack 2 (SP2) を適用した Windows XP、および Service Pack 3 (SP3) を適用した Windows XP では、raw ソケット経由でトラフィックを送信する機能がいくつかの方法で制限されています。
- TCP データは raw ソケット経由で送信できません。
- 無効な送信元アドレスを持つ UDP データグラムは、raw ソケット経由で送信できません。発信 UDP データグラムの IP ソース アドレスは、ネットワーク インターフェイスに存在する必要があります。存在しない場合、データグラムはドロップされます。この変更は、悪意のあるコードが分散サービス拒否攻撃を作成する機能を制限し、スプーフィングされたパケット (送信元 IP アドレスが偽造された TCP/IP パケット) を送信する機能を制限するために行われました。
- プロトコル
bind
の raw ソケットを使用した関数の呼び出しは許可されていません。注raw ソケットを使用した機能は、他のプロトコル ( 、、またはなど) で使用できます。IPPROTO_TCP
bind
IPPROTO_IP
IPPROTO_UDP
IPPROTO_SCTP
( Dev Center - Desktop - TCP/IP Raw Socketsから)
raw ソケットはかなり簡単に作成できます。
Socket s = new Socket(ip.AddressFamily, SocketType.Raw, ProtocolType.Ip);
その時点で、適切なデータグラムを構築するのはあなたの責任です(これを行う方法に関するドキュメントが手元にない場合、これは別の質問になります)
LoadRunner は、実際の IP アドレスが Load Generator に存在する場合にのみ、IP アドレスをスプーフィングできます。したがって、ホストに 200 個の IP アドレスが割り当てられている場合、オペレーティング システムで最小コストのルーティングやプライマリ ネットワーク インターフェイスとセカンダリ ネットワーク インターフェイスを使用する代わりに、これらの IP アドレスに負荷を分散できます。これは、LoadRunner だけでなく、なりすましを行う他のアプリケーション パフォーマンス テスト ツールにも当てはまり、負荷を生成するホストにアドレスを割り当てる必要があります。
テスト目的で IP アドレスをホストに割り当てる必要がない生のスプーフィング ソリューションを探している場合は、Spirent や Ixia などの企業のネットワーク パフォーマンス テスト ツール、特にシャーシ ベースのソリューションを検討することをお勧めします。これらのネットワーク ソリューションは、必要に応じて、何万もの固有の偽の MAC アドレスを生成して、偽の IP アドレスと組み合わせることもできます。