web-dev-qa-db-ja.com

Linuxで仮想ネットワークインターフェイスを作成してブリッジする

.pcapファイルからのトラフィックを再生するツールと、そのトラフィックを解釈する別のツールがあります。テストの目的で、あるインターフェイスからトラフィックを再生し、別のインターフェイスに入るようにする必要があります。明らかに、2つのNICの間にクロスケーブルを接続するだけで済みますが、Linux内からこれを行うためのより良い方法は確かにありますか?ループバックインターフェイス(トラフィックをloで再生し、loからのトラフィックを解釈する)を使用しようとしましたが、機能しませんでした。

仮想インターフェイスを作成してから、2つの仮想インターフェイスをブリッジする方法はありますか?理想的には、「virt-eth1」からトラフィックを再生し、他のツールに「virt-eth2」をリッスンさせることができます。トラフィックがvirt-eth1に送信されるとき、それはブリッジされ、virt-eth2に入る必要があります。そこから何が起こるかは重要ではありません。

2
Rauffle

ここで使用する必要があるのはTUN/TAPインターフェイスだと思います。 tunctl(CentOSのパッケージ)をインストールすると、仮想ネットワークインターフェイスの作成を開始できます。

tunctl -t tap0
ifconfig tap0 up

詳細はこちら: http://backreference.org/2010/03/26/tuntap-interface-tutorial/

タン/タップインターフェイスは、Linux(およびおそらく他のUNIXライクなオペレーティングシステム)によって提供される機能であり、ユーザースペースネットワーキングを実行できます。つまり、ユーザースペースプログラムが(イーサネットまたはIPレベルで)生のネットワークトラフィックを確認し、それらを実行できるようにします。それと同じように。このドキュメントでは、Linuxでtun/tapインターフェイスがどのように機能するかを説明し、その使用法を示すサンプルコードをいくつか示します。

私が覚えているように、ループバックインターフェイスを使用する場合、それは実際には「実際の」インターフェイスではないため(または、システムによって実際のインターフェイスとして認識されないため)、PCAPライブラリでは正しく機能しません。 ifconfigを実行すると、MACアドレスすらありません。ただし、TUN/TAPインターフェースは機能し、実行しようとしている目的のために、それは単に探しているソリューションである可能性があります(追加の仮想マシンを作成する必要はありません)。

また、1回のタップインターフェイスでタスクを実行できると思います(2つのインターフェイスをブリッジする必要はありません)。最初のプロセスを仮想インターフェイスにバインドしてトラフィックを書き込み、次に2番目のプロセスを仮想インターフェイスにバインドしてトラフィックを読み取るだけです。

3
parkamark