VMware を使用した TCP 事前再生

VMware を使用した TCP 事前再生

これはテストベッドのセットアップに関する質問のようなものです。

VMware を使用して、VM 内の Linux カーネルのネットワーク コードをデバッグしたいと考えています。VM には 2 つのネットワーク インターフェイスがあります。やりたいことは、ホストでキャプチャ ファイルを再生し、VM でパケットを受信することです。問題は、再生されたパケットが VM に表示されないことです。

  1. 私は VMware と tcpreplay をホスト上で sudo として実行しています。したがって、デバイス ファイルへのアクセスに問題はないと思います。
  2. VMwareワークステーション7.0を実行しています

a. 最初は、独自の仮想ネットワーク名を作成するオプションを提供するカスタム ネットワークから始めました。2 つのインターフェイスにそれぞれ /dev/vmnet3 と /dev/vmnet4 と書きました。しかし、ゲストを起動した後、ホスト上にこれらのインターフェイスやデバイス ファイル (/dev 内) が作成されていないことがわかりました。

b. 次に「ホストのみ」を試しましたが、インターフェイスに関連付けられているブリッジ/デバイス ファイルが表示されません。

c. 最後に、ブリッジ ネットワーク モードを試しました。

ホスト上に vmnet1、vmnet8、vboxnet0 があります。上記の 3 つのケースすべてについて、これらの各インターフェイスでキャプチャ ファイルを tcpreplay しました。「tcpdump -i any」を使用して VM でパケットをキャプチャしようとしました。しかし、パケットは表示されません。

何かアイデアやアドバイスはありますか?

答え1

最近 VMware Workstation でこれを試していませんが、通常、これは次のいずれかの結果です。

  1. キャプチャしようとしている VM は NIC を無差別モードに設定していないため、その VM 宛てでないパケットは表示されません。この問題を解決するには、VM で root として tcpdump を実行するか、送信パケットの送信先として VM の MAC アドレスを使用するように tcpreplay を変更します (tcpreplay には tcprewrite が付属しており、この変更は簡単です)。または、再生されるパケットの送信先 MAC アドレスをブロードキャスト アドレス ff:ff:ff:ff:ff:ff にすることもできます (警告: 非常に危険です。何をしているのか本当に理解していない限り、これを行う前に物理ネットワークからプラグを抜くことをお勧めします)。

  2. ホストは、VM がインターフェイスを無差別モードにすることを許可していません。 VMware Workstation でこれを調整する方法はわかりませんが、ESX[i] では、vSwitch に「無差別モードを許可する」オプションがあります。 1 で述べたように、tcpreplay ストリームの宛先 MAC アドレスを変更することで、これを回避することもできます。

  3. ホストの vmnet の権限が正しくないため、プロミスキャス モードが機能しません (ホスト OS として Linux を使用していると仮定)。これについては VMware KB の記事が多数ありますが、解決方法は一貫していません。/dev/vmnetX インターフェイスを 777 に chmodding することで解決できるかもしれませんが、他の回答のいずれかで解決しない場合は、リプレイ トラフィックを VM の MAC 宛てに設定した方がよいでしょう。

幸運を、

--ジェド

答え2

再生しているキャプチャ内の宛先 MAC アドレスが VM 内のインターフェイス上の MAC ではなく、同じ VLAN 内にその MAC を持つホストがある場合、仮想スイッチはその MAC に関連付けられたポートでフレームを転送するため、トラフィックは表示されません。

ブリッジ転送テーブルをリストし、宛先 Mac を検索してみてください。

関連情報