동일한 네트워크에 우분투 머신 A(ip 192.168.0.20)와 우분투 머신 B(ip 192.168.0.21)가 있다고 가정합니다. 예를 들어 시스템 A가 RTP를 멀티캐스트 주소 및 포트로 스트리밍하는지 확인하는 방법
239.0.0.1:5005
B 머신에서요?
답변1
IP 멀티캐스트가 단순 스위치의 모든 포트에 단순히 플러딩되는 것이 아닌 환경에서는 tcpdump
트래픽을 캡처하지 못할 수도 있습니다. 스위치는 IGMP 보고서 및 쿼리를 수신하고(또는 자체 쿼리를 수행) 이 멀티캐스트 트래픽이 그렇지 않음을 확인합니다. 필요합니다. 머신 B 포트는 이를 보내지 않습니다. 이것반품setsockopt(fd, SOL_IP, IP_ADD_MEMBERSHIP, ...)
소켓에서 멀티캐스트 클라이언트를 사용해야 합니다.
설치 socat
및 사용:
socat -d -d -u udp4-recv:5005,reuseaddr,ip-add-membership=239.0.0.1:192.168.0.21 /dev/null
이는 다음을 수행합니다.
초기 IGMP 멤버십 보고서를 전송하여 인터페이스 192.168.0.21에서 멀티캐스트 그룹 239.0.0.1에 참여하세요. 쿼리자가 있는 경우 IGMP 스누핑 브리지에서 처리하면 스마트 스위치가 머신 B 스위치 포트로 트래픽을 보내게 됩니다.
선택적으로 여기에서
reuseaddr
동일한 명령을 여러 번 실행할 수 있습니다(시스템 수준 멀티캐스트만 각 명령이 단일 멀티캐스트 스트림의 복사본을 수신하도록 함).-d -d
자세히 표시socat
: 수신된 패킷의 소스도 표시됩니다.가입 후에는 이제 239.0.0.1과 관련된 모든 것을 캡처할 수 있습니다
tcpdump
.192.168.0.20이 239.0.0.1로 전송되는 경우 수신된 패킷에는 192.168.0.20이 소스로 포함되어 이를 보낸 시스템이 표시됩니다.
데이터가 수신되었으나 잊혀졌습니다
/dev/null
. 데이터가 비디오 스트림(실제로는 5004가 아닌 포트 5005)인 경우 대체 장치는/dev/null
해당 명령을 사용하여- | mpv -
비디오를 표시합니다.mpv
언제소캇중지되면 커널은 IGMP 종료 메시지를 보냅니다. 스위치 설정에 따라 해당 멀티캐스트 대상을 컴퓨터 B로 보내는 것이 즉시 중지되거나 다음 분 내에 발생합니다. tcpdump
따라서 트래픽이 계속 캡처될 수 있지만 이것이 지속되지는 않습니다.
노트:
멍청한 스위치(또는 가상 Linux 브리지)로 네트워킹을 처리하는 환경mcast_querier스위치를 설정하지 않은 경우) tcpdump
스위치가 모든 포트에서 트래픽을 플러딩하기 때문에 모든 경우에 멀티캐스트 트래픽이 캡처됩니다.