生のイーサネット フレームを使用しています。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 で使用するフィルターがわかりません。