概要:同じマシン上に存在する2つの物理インターフェイス間でデータを渡すためのソケットを作成しようとしています。Win32ソケットは、物理インターフェイスを介してプッシュするのではなく、常にトラフィックをカーネルに直接転送します。おそらくデバイス設定、レジストリの微調整、ルーティングテーブルのシェナニガン、またはソケットオプションを使用して、この動作を無効にする方法はありますか?WindowsXPSP3を使用しています。
いくつかの背景。カスタムIPv4機器を実行するために、完全に自動化されたIPテストを構築しようとしています。Windows XPマシンの大規模なラボがあり、接続しているデバイスごとに個別の物理イーサネットインターフェイスがあります。私たちのデバイスは、事実上、それぞれが独自のIPを持つイーサネットルーターです。
ラボのマシンからデバイスを介してデータを送信してから、同じコンピューターに戻す必要があります。ユニキャストおよびマルチキャストUDP、TCP、およびブロードキャストIPトラフィックをデバイスを介して送信します。
トラフィックが宛先と同じマシンで発信されることを望んでいます(そしておそらく必要です)。これを行うには、それぞれが独自のサブネット上に独自のIPを持つ2つの別々のNICを構成します。たとえば、NIC#1は10.0.0.1 / 24で、NIC#2は10.0.1.1/24です。この場合、デバイスは単純なパススルールーターのように機能し、2つのインターフェイスを備えています。1つは10.0.0.0/24サブネット上にあり、もう1つは10.0.1.0/24サブネット上にあり、パケットをやり取りするだけです。
データを生成するために、Win32ソケットを使用できるようにしたいと考えています。これは、Win32ソケットが十分に理解され、十分にサポートされており、お客様が使用しているものであり、おそらく最も迅速なアプローチであるためです。パケットインジェクションは、UDPおよびブロードキャストIPではおそらく実行可能ですが、TCPでは実行可能ではない可能性が非常に高くなります。パケットインジェクションを使用したアイデアを楽しませたいと思いますが、標準のWin32ソケットを強く好みます。
要約で述べられているように、パケットがマシンを離れることはありません。私は狂人のようにグーグルで検索しましたが、あまり見つかりませんでした。何か案は?