VLAN インターフェイスに基づいて MAC マルチキャスト パケットを受信するにはどうすればよいでしょうか?

VLAN インターフェイスに基づいて MAC マルチキャスト パケットを受信するにはどうすればよいでしょうか?

どなたか次の質問について助けていただけませんか。

背景: それぞれに 2 つの VLAN インターフェイス (eth0.2 と eth0.3) を備えた 2 台の PC (PC1 と PC2)。PC は WRT54GL ルーターによって接続されています。

私の目的は、eth0.3 インターフェースに対しても同様に、eth0.2(PC1) --> eth0.2(PC2) からマルチキャスト(IP ではなく MAC による) データを送信することです。

ここで問題となるのは、eth0.2 が受信したデータをマルチキャストすると、eth0.3 もそれを受信することです。データは eth0.2 のみで受信する必要があります。

特定の VLAN インターフェイスでデータを受信することは可能ですか? 可能であれば、教えてください。

ありがとう。

答え1

MAC マルチキャスト パケットを送信する場合は、各インターフェイスを特定の MAC マルチキャスト アドレスで構成する必要があると思います。

これを行うために使用するコマンドはip maddress add <MAC> <DEV>MAC で、 DEV は追加する MAC アドレスとデバイスです。

答え2

上記の問題に対する私の理解を共有します。

両方のインターフェース、つまり eth0.2 と eth0.3 に対して TCPDUMP を実行すると、意図した受信側 (上記のケースでは eth0.2) のみがパケットを受信しました。eth0.3 インターフェースにはパケットがありませんでした。

私はマルチキャスト データを受信するためにクライアントで PF_PACKET ソケットを使用していました。特定のインターフェイスから受信することが目的だったので、setsockopt(Sock,SO_BINDTODEVICE,...) を使用してインターフェイスにバインドしました。しかし、ソケットのマニュアル ページを参照した後、SO_BINDTODEVICE はパケット ソケットではサポートされないことがわかりました。そこで、単純な bind() を使用して特定のインターフェイスにバインドしました。期待どおりに動作しました。

ありがとう。

関連情報