올바르게 태그가 지정된 VLAN이 있는 멀티캐스트 트래픽이 태그가 지정된 인터페이스에 도달하지 못하는 이유는 무엇입니까?

올바르게 태그가 지정된 VLAN이 있는 멀티캐스트 트래픽이 태그가 지정된 인터페이스에 도달하지 못하는 이유는 무엇입니까?

저는 클라이언트와 서버 간에 멀티캐스트 트래픽을 보내는 애플리케이션을 개발 중입니다. 이 트래픽은 멀티캐스트를 통해 전송됩니다. 클라이언트와 서버 모두 VLAN 인터페이스를 사용하며 서로 제대로 통신하려면 특정 VLAN에서 통신해야 합니다. 클라이언트와 서버는 동일한 서브넷에 있고(따라서 네트워크 홉이 없음) 해당 IP는 동일한 서브넷에 있습니다(따라서 진행되는 유일한 라우팅은 올바른 VLAN 인터페이스에서 나오는 멀티캐스트 경로입니다).

를 사용하면 tcpdump두 호스트 모두에서 태그가 지정되지 않은 인터페이스의 트래픽을 볼 수 있지만 태그가 지정된 인터페이스를 보면 내 로컬 컴퓨터의 트래픽만 볼 수 있습니다. 태그가 지정되지 않은 인터페이스로 들어오는 트래픽에도 올바른 VLAN 태그가 있음을 확인했습니다.

이를 설명하기 위해 다음과 같이 가정해 보겠습니다.

VLAN: 10
Multicast: 239.1.1.1

내가 보는 것은:

[root@client]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]

상대방도 같은 생각이었다.

[root@server]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]

tcpdump하지만 인터페이스를 표시 하면 다음과 같습니다 .

[root@client]# tcpdump -ei ens192.10 host 239.1.1.1
.... client.[port] > 239.1.1.1.[port]
.... client.[port] > 239.1.1.1.[port]

서버에서도 같은 생각입니다.

나는 그것을 시도했지만 sysctl net.ipv4.conf.all.rp_filter=0아무것도 바뀌지 않았습니다.

나는 또한 strace -fe trace=network -p [PID of software] 2>&1 | grep 239.1.1.1클라이언트와 서버에서 실행 중이고 방금 send_to전화를 걸었지만 메시지를 받지 못했습니다(태그된 인터페이스에서 수신이 표시되지 않은 후에 예상했던 메시지입니다).

또한 다른 모든 VLAN 인터페이스도 구독되었음에도 불구하고 구독되었다는 ip maddr사실 도 확인했는데 , 조금 의심스럽습니다. 트래픽이 다른 VLAN 인터페이스로 이동하지 않는 것을 확인했습니다 . 내부/소스 코드에 액세스할 수 없기 때문에 이 소프트웨어가 구독을 어떻게 수행하는지 전혀 모른다는 점을 인정합니다.ens192.10239.1.1.1tcpdump

운영 체제는 RHEL 7.5입니다.

올바르게 태그된 VLAN 트래픽이 해당 VLAN 인터페이스에 표시되지 않는 이유가 있습니까?

편집: 또한 이 VLAN 인터페이스에서 제대로 작동하는 다른 멀티캐스트 트래픽이 있는데 문제는 이 소프트웨어에만 국한된 것 같습니다.

답변1

내 생각엔 Linux에서는 그런 tcpdump하위 인터페이스를 사용할 수 없을 것 같습니다.ens192.10

특정(또는 전체) VLAN 트래픽을 덤프하는 일반적인 방법은 다음과 같습니다.

tcpdump -i ens192 -e vlan 10 and host 239.1.1.1 # just vlan tag 10
tcpdump -i ens192 -e vlan and host 239.1.1.1 # all tagged vlans

또는 tcpdump버전이 해당 구문을 지원하지 않는 경우 vlan X원시 헤더를 다음으로 바꿀 수 있습니다.

tcpdump -i ens192 -e 'ether[12:2] = 0x8100 and ether[15] = 10' and host 239.1.1.1

관련 정보