wie empfange ich MAC-Multicast-Pakete basierend auf der VLAN-Schnittstelle?

wie empfange ich MAC-Multicast-Pakete basierend auf der VLAN-Schnittstelle?

kann mir bitte jemand bei der folgenden Frage helfen.

Hintergrund: Zwei PCs (PC1 und PC2) mit jeweils zwei VLAN-Schnittstellen (eth0.2 und eth0.3). Die PCs sind dazwischen über einen WRT54GL-Router verbunden.

Mein Ziel ist es, Multicast-Daten (über MAC, nicht über IP) von eth0.2 (PC1) -->eth0.2 (PC2) zu senden, und zwar auf ähnliche Weise auch für die eth0.3-Schnittstelle.

Das Problem besteht nun darin, dass beim Multicasten der Daten eth0.2 diese auch eth0.3 empfängt. Ich muss die Daten nur auf eth0.2 empfangen können.

Ist es möglich, Daten über eine bestimmte VLAN-Schnittstelle zu empfangen? Wenn ja, weisen Sie mich bitte weiter.

Danke schön.

Antwort1

Ich denke, wenn Sie MAC-Multicast-Pakete senden möchten, möchten Sie möglicherweise jede Schnittstelle mit einer bestimmten MAC-Multicast-Adresse konfigurieren.

Der hierfür verwendete Befehl lautet ip maddress add <MAC> <DEV>„MAC“ und „DEV“ sind die Mac-Adresse und das Gerät, zu dem Sie sie hinzufügen möchten.

Antwort2

Ich teile Ihnen mein Verständnis für das oben genannte Problem mit.

Wenn ich TCPDUMP für beide Schnittstellen ausführe, also eth0.2 und eth0.3, hat nur der vorgesehene Empfänger (also eth0.2 im obigen Fall) die Pakete empfangen. Auf der Schnittstelle eth0.3 gab es keine Pakete.

Ich habe den PF_PACKET-Socket im Client verwendet, um die Multicast-Daten zu empfangen. Da ich Daten von einer bestimmten Schnittstelle empfangen wollte, habe ich zum Binden an eine Schnittstelle setsockopt(Sock,SO_BINDTODEVICE,...) verwendet. Nachdem ich jedoch die Manpage des Sockets gelesen hatte, wurde mir klar, dass SO_BINDTODEVICE für Paket-Sockets nicht unterstützt wird. Daher habe ich einfach bind() verwendet, um zum Binden an eine bestimmte Schnittstelle zu verwenden. Es hat wie erwartet funktioniert.

Danke.

verwandte Informationen