iptables에서 RTSP 활성화

iptables에서 RTSP 활성화

VLC를 통해 RTSP 스트림을 수신하고 싶지만 실행하려고 하면

sudo -u non_root_user cvlc -vvv -I dummy rtsp://ip:port/x.sdp 

나는 얻다:

Unable to determine our source address: This computer has an invalid IP    address: 0x0

방화벽을 비활성화하면 스트림을 수신할 수 있기 때문에 포트가 닫혀 있는 것 같습니다. RTSP를 수신할 수 있도록 iptables 설정 방법을 문의하고 싶습니다. 감사해요.

답변1

당신은 만난 적이 있나요?못생긴 해커존재하다라이브 555, VLC 라이브러리는 RTSP 클라이언트 기능을 제공하는 데 사용됩니다. (VLC의 RTSP 서버 코드는 VLC에 따라 다릅니다.) 해커는 컴퓨터가 LAN에서 어떤 IP를 사용하고 있는지 알아내려고 합니다. (이 해킹이 보기 흉하기는 하지만 Live555가 이 작업을 수행하는 더 나은 방법을 모르겠습니다.)

발생한 오류를 수정하려면 방화벽에서 UDP 포트 15947을 열어야 합니다. 이는 이번 해킹을 위해 Live555가 사용하는 "테스트 포트"입니다.

이 작업을 완료한 후에는 방화벽 작동 방식에 따라 스트림을 수신하기 위해 다른 포트를 열어야 할 수도 있습니다. RTSP는 단지 스트림일 뿐입니다.제어스트림이 아닌 프로토콜물건을 배달하다규약. RTSP를 실제 스트리밍 프로토콜의 "VCR 버튼"(재생, 중지, 일시 중지, 빨리 감기, 되감기...)으로 생각하십시오. RTSP 클라이언트는 스트림을 협상합니다.물건을 배달하다"재생" 작업의 일부로 서버에 연결하는 포트입니다.

그 결과 클라이언트(이 경우 VLC)는 SETUPRTSP 명령의 특정 포트에 미디어를 보내도록 서버에 요청합니다.

SETUP rtsp://192.168.0.1:8554/42.ts/track1 RTSP/1.0
CSeq: 4
User-Agent: LibVLC/2.0.2 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP;unicast;client_port=60860-60861

즉, VLC는 포트 60860 및 60861에서 RTP를 통해 미디어를 전달하려고 RTSP 서버에 알립니다. 클라이언트는 이러한 포트를 무작위로 선택합니다. 방화벽이 이를 차단하면 RTSP 협상이 성공하더라도 스트리밍을 차단합니다.

최선의 시나리오에서는 방화벽이 이렇게 높은 포트를 차단하지 않거나 이 RTSP 협상이 감지되면 차단을 해제할 수 있는 상태 저장 검사 기능을 갖습니다.

방화벽이 이를 차단하는 경우 다음을 사용하여 디버깅할 수 있습니다.와이어샤크. RTSP 프로토콜을 이해합니다. RTSP 스트림에서 패킷을 마우스 오른쪽 버튼으로 클릭하고 "TCP 스트림 따르기"라고 말합니다. 팝업 창에서 RTSP SETUP명령을 찾으십시오. 그런 다음 Wireshark를 다시 시작하고 이번에는 이 포트에서 UDP 트래픽을 찾습니다. (이 모든 일은 RTSP 클라이언트가 스트림을 계속 다운로드하거나 스트림 다운로드를 시도하는 동안 발생합니다.)

관련 정보