Transmisión RTSP hacia el socket remoto (¿Proxy RTSP?)

Mis disculpas por la generalidad de la pregunta. He intentado muchas cosas pero nada parece funcionar. Tengo un servidor? (llamémoslo Servidor A ) que reside en una red de área local donde también hay una cámara IP. Esa cámara web proporciona constantemente un feed RTSP en la dirección … digamos … rtsp://192.168.1.50:554/cam.sdp . La cámara no tiene acceso al mundo exterior (debe permanecer en la LAN y, por lo tanto, solo tiene acceso al servidor A , no al servidor B ), pero el servidor A sí. Lamentablemente, el Servidor A no tiene una IP pública, por lo que no puedo acceder al Servidor A desde cualquier lugar del mundo. El servidor A puede apagarse si quiere, pero nadie puede entrar al servidor A … (es un niño mimado … demasiados juguetes cuando era un niño)

Ahora, hay otro servidor ( servidor B , para ser original) en el mundo exterior antes mencionado, que es un servidor web normal con su IP pública y todo. Ese servidor permite a la gente acceder a él (no estropeado, muy bonito … pone la mesa, lava los platos … ese tipo de cosas). Tanto el Servidor A como el Servidor B son mis computadoras y ejecutan Ubuntu 12.04 y algunas aplicaciones Python que diseñé (el Servidor B actualmente ejecuta Django, pero no creo que sea demasiado relevante). Lo que quiero decir con esto es que tengo control sobre lo que está sucediendo en ambos servidores. Puedo instalar / desinstalar paquetes, puedo abrir puertos, cerrar puertos … lo que sea necesario (incluso puedo formatearlos si quiero, aunque no creo que eso ayude mucho … o sí … quién sabe) ?)

  _____________ _____________ ----------- | | | | __ | | | | | | | \| WebCam |================| Server A |===========| INTERNET |===========| Server B | |__/| | ->/cam.sdp  --------------> * | | | |___________| |___________| ----------- 

La pregunta es: ¿Cómo puedo capturar el flujo RTSP con el servidor A volcarlo en un socket designado del servidor B y abrirlo (con un progtwig capaz de entender las fonts RTSP, como VLC)?

Supongo que necesito algo como un proxy RTSP, tal vez? Pero realmente no sé por dónde empezar.

Cualquier sugerencia, enlace … sería apreciado.

Gracias de antemano

No sé RTSP, pero parece ser un protocolo estándar de solo TCP. Intente ejecutar en el servidor A:

 ssh -g -R 554:192.168.1.50:554 server_B_hostname 

Esto abrirá el puerto público 554 en el servidor B y lo reenviará a 192.168.1.50:554 desde el punto de vista de A.

Algunos servidores tienen sshd configurado para rechazar el reenvío ssh -g -R (sin ninguna razón). Si puede, debe marcar / etc / ssh / sshd_config en el Servidor B y agregar AllowTcpForwarding yes .

RTSP es un protocolo de control de TCP hacia un servidor de transmisión. El protocolo utiliza comandos de OPCIÓN para obtener información sobre la transmisión. Cuando el cliente tiene suficiente información sobre el servidor y sus capacidades, puede enviar un comando REPRODUCIR con una “cadena de transporte” que lo indica. Cómo transmitir, generalmente en el puerto UDP 554. El cliente, antes de enviar el JUEGO, debe estar preparado para realizar la recuperación (SRV UDP, PORT). Hay comandos de transporte que pueden hacer que el servidor también se transmita en el TCP. Al decir esto, supongo que puede escribir su propio proxy RTSP + DATA en la red local. Tenga en cuenta que también debe pasar todas las cabeceras TCP que se ejecutan todo el tiempo entre las partes, indicando los marcos actuales del cliente y demás. En el servidor ‘CLOUD’ necesita otro software personalizado para poder obtener lo que envía y exponerse como una fuente rtsp.