如何基於VLAN介面接收MAC組播封包?

如何基於VLAN介面接收MAC組播封包?

任何人都可以幫助我解決以下問題。

背景:兩台PC(PC1 n PC2)分別有兩個VLAN介面(eth0.2和eth0.3)。

我的目標是從 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()來綁定到特定的介面。它按預期工作。

謝謝。

相關內容