1

私のコンピューターには、異なるサブネットに接続する 2 つのネットワーク アダプターがあります。以下のように:

アダプタ A: 10.20.30.201 アダプタ B: 10.20.31.201

アダプター A を介して特別なプロセス (たとえば、Process A ) のすべての発信データを作成したいと考えています。つまり、アダプター A をプロセスのデフォルト ルートとして作成したいと考えています。

特別な宛先のルート テーブルを変更できることはわかっていますが、ここでやりたいことは大きく異なります。プロセス Aは多くの異なる IP と通信する可能性があり、事前にわかりません。

Winsock2 は、TCP/IP スタックに dll を配置する方法としてLSPを提供します。私は LSP に詳しくなく、LSP で自分のやりたいことができるかどうかわかりません。

誰か提案してくれませんか、ありがとう。

4

1 に答える 1

1

LSPの簡単な背景:

Winsock2 APIを使用するアプリケーションは、WSAプレフィックス関数の組み合わせ(WSAConnect、WSASocket、WSASend、WSARecvなど)を呼び出します。

アプリケーションがまだ古いwinsock関数を使用している場合、これらの関数はとにかく舞台裏でWinsock2にマップされます。たとえば、send()はWSASend()にマップされ、recv()はWSARecv()にマップされます。

WSAプレフィックス関数は、LSPによって提供される対応するWSPプレフィックス関数を内部的に呼び出します。たとえば、WSASend()はWSPSend()を呼び出し、WSASocket()はWSPSocket()を呼び出します。つまり、WSAWhateverFunction()はWSPWhateverFunction()を呼び出します。それらのパラメータ/リターンも同じです(完全ではありませんが、一種です)。

LSPは、これらのWSPプレフィックス関数が実装されたdllです。アウトバウンド/インバウンドトラフィック、フィルタリングなどを変更します。ただし、LSPは依然としてユーザースペースdllです。他のユーザースペースプログラムと同じように制限されており、インターネットブラウザなどのホストアプリケーションよりも高い特権はありません。他のプログラムで利用できるのと同じシステム機能のセットにアクセスできます。winsockなど。

結論として、プログラムが発信トラフィックを特定のNICに転送できる場合、LSPも​​それを実行できます。できない場合は、LSPも​​できません。したがって、LSPは問題とは無関係です。

于 2011-02-05T14:15:19.080 に答える