如何根据VLAN接口接收MAC组播数据包?

如何根据VLAN接口接收MAC组播数据包?

有人能帮我解决以下问题吗?

背景:两台 PC(PC1 和 PC2)分别有两个 VLAN 接口(eth0.2 和 eth0.3)。PC 之间通过 WRT54GL 路由器连接。

我的目标是从 eth0.2(PC1)-->eth0.2(PC2)发送多播(通过 MAC 而不是 IP)数据,对于 eth0.3 接口也类似。

现在的问题是当我多播 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() 绑定到特定接口。它按预期工作。

谢谢。

相关内容