VLAN 인터페이스를 기반으로 MAC 멀티캐스트 패킷을 수신하는 방법은 무엇입니까?

VLAN 인터페이스를 기반으로 MAC 멀티캐스트 패킷을 수신하는 방법은 무엇입니까?

다음 질문에 대해 도움을 주실 수 있으신가요?

배경: 각각 2개의 VLAN 인터페이스(eth0.2 및 eth0.3)가 있는 두 대의 PC(PC1 n 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 소켓을 사용하고 있었습니다. 내 목표는 특정 인터페이스에서 수신하는 것이었기 때문에 인터페이스에 바인딩하기 위해 setockopt(Sock,SO_BINDTODEVICE,...)를 사용했습니다. 그러나 소켓의 매뉴얼 페이지를 참조한 후에 SO_BINDTODEVICE가 패킷 소켓에 지원되지 않는다는 것을 알았습니다. 그래서 특정 인터페이스에 바인딩하기 위해 간단한 바인딩()을 사용했습니다. 예상대로 작동했습니다.

감사해요.

관련 정보