
どなたか次の質問について助けていただけませんか。
背景: それぞれに 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() を使用して特定のインターフェイスにバインドしました。期待どおりに動作しました。
ありがとう。