いくつかの仮想ネットワーク インターフェイスをシミュレートするプログラムを作成しようとしています。私のプログラムは、 Aで示される Linux PC で実行され、Rで示されるルーターに接続されていeth0
ます192.168.1.2
。私のプログラムは、DHCP 経由でルーターから複数の異なる IPv4 アドレスを取得でき192.168.1.3
ます192.168.1.4
。次に行う必要があるのは、ルーターRにも接続されているBで示される別の物理 PCが、私のプログラムによって取得された IPv4 アドレスの 1 つ (物理インターフェイスに割り当てられたものではない) と通信しようとしたときです。Aのeth0
)、たとえば、「実際の」ネットワーク インターフェイスであるBに192.168.1.3
表示される必要があります。たとえば、B pingの場合、(パケットが実際にAの物理ネットワーク インターフェイスを通過したとしても)からの応答を受信できるはずです。さらに、私のプログラムは、パケット全体が受信される仮想インターフェイスで IP パケットを抽出できるはずです。192.168.1.3
192.168.1.3
192.168.1.3
eht0
つまり、私のプログラムが実現したいのは、VirutalBox や VMWare Player などの仮想マシンの「ブリッジ ネットワーク」のようなものです。
誰かが私が何から始めるべきか教えてもらえますか? TAP を使用する必要がありますか? 使用できる既存のライブラリはありますか? それとも、自分の目的のためにリンク層ソケットを作成する必要がありますか? (Richard Stevens の Unix Network Programming の「Datalink Access」を読みましたが、詳しい情報ではありません。) ありがとう、Tom