C#アプリのDHCPサーバーからIPアドレスを取得する-仮想マシンのように
-
07-07-2019 - |
質問
複数のソケット接続のアプリケーション(TCPアラームウォッチャー)を開発しています。現在、アラームを模擬するために、VMマシン上で実行される小さなアプリケーションを作成しました(つまり、VMのIPが異なるため)。これにより、アラームエンドポイントをシミュレートします。
やりたいことは、「サーバー」を実行しているのと同じマシンでアラームをモックすることです。 (つまり、最初のアプリケーション)、ただし、これらの模擬アラームに異なるIPを持たせたい場合を除きます。最初のアプリと同じIPでモックを実行したくない(たとえば、サーバーは192.168.1.4、モックは192.168.1.10、その他は192.168.1.11など、すべて同じマシンに住んでいる、VMでできる方法)。
「ブリッジネットワーク」モードの仮想マシンは、DHCPサーバーから別のIPを取得できます(このアイデアはここで得られます)。だから、私はタスクを完了するためにどこで調査するかについて少し混乱しています。私の質問は次のとおりです:
DHCPを介して独自のIPアドレスを取得するための模擬アプリケーションをプログラムで作成するにはどうすればよいですか? (または、.NET Frameworkを考えると不可能ですか?)
ハジ-
解決
DHCPサーバーと確実に通信できます-パケット形式はRFC 2131に文書化されています。C#からこれを行うのは比較的簡単です。
ただし、これはすべて「スチール」です。 DHCPサーバーのプールからのIPアドレス。実際にはネットワークスタックにバインドしません。
このIPアドレスでリッスンするには、アプリケーションを取得する必要があるようです。このIPアドレスがマシンのネットワークアダプターに割り当てられていない限り、これは機能しません。
要するに、複数のネットワークアダプター、またはマルチホームネットワークアダプターが必要です。その場合は、DHCPで自動的に整理する方が良いでしょう。
一方、すべてのトラフィックがローカルである場合、「Microsoft Loopback Adapter」をインストールし、それに多数のIPアドレスを割り当てます。
他のヒント
確かにC#でこれを行うことができますが、これを行うための既存のクラスがあるとは思いません(通常のことではありません!)
おそらく、自分でパケットを受信/送信することで、自分でやらなければならないでしょう。
私は次のリンクを見つけましたが、役に立つかもしれません:
http:/ /social.msdn.microsoft.com/Forums/en-US/wsk/thread/836c2150-583c-43a6-93b3-0e3202c2e2f5
(DHCPサーバーの作成と言っていることは知っていますが、DHCPプロトコルの仕組みを調べるという点から始めるのに適した場所です)
別のIPアドレスからIPアドレスのリースを要求する際に問題が発生する可能性があると言った場合。