0

生のイーサネット フレームを使用しています。Linux マシンにイーサネット インターフェイス eth0 と仮想 VLAN インターフェイス eth0.100 があります。私の RAW ソケットは、仮想インターフェイス eth0.100 にバインドされています。問題は、VLAN タグ付き (VLAN ID=100) フレームが外部からこのインターフェースに送信されると、アプリケーションが同じイーサネット フレームの 2 つのコピーを取得することです。アプリケーションからは、これらのフレームの違いはわかりません。ペイロードの内容はまったく同じです。インターフェイスがプロミスキャス モードで動作していません。

フレームをキャプチャするために tcpdump を使用しました。以下は結果です。

  • eth0: VLAN タグ付きのフレームを 1 つ取得します - 100。
  • eth0.100: これは、VLAN タグが付けられていない 1 つのフレームを取得します。

eth0 にバインドすると、フレームのコピーが 2 つ取得されます。しかし、eth0.100 を削除して eth0 にバインドすると、コピーが 1 つだけ取得されます。eth0.100 にのみバインドされている場合でも、アプリケーションは eth0 から 1 つと eth0.100 から 1 つのフレームの 2 つのコピーを取得していますか?

BPF を使用しようとしましたが、eth0.100 で使用するフィルターがわかりません。

4

1 に答える 1

0

BPF を使用しようとしましたが、tcpdump を使用してフィルタリング ルールを生成すると、生成されたバイト コードが eth0 および eth0.100 インターフェイスの両方で同じであることがわかりました。だから私はその考えを落としました。以下の解決策は私のために働いた。

仮想インターフェイス eth0.100 を削除し、未加工のソケットをベース インターフェイス eth0 にバインドしました。フレームを送信するときに、フレームに手動で VLAN タグを付けました。基本インターフェイスがすべてのフレームを取得するため、受信時に特別なことをする必要はありません。これで、以前に表示されていた重複フレームは表示されなくなりました。

これは、重複したフレームが表示された理由をまだ説明していません。さらに調査し、回答が得られたら投稿します。

于 2016-05-16T01:40:46.130 に答える