2012-12-07 44 views
2

我对这个问题的普遍性抱有歉意。我尝试了很多东西,但似乎没有任何工作。 我有一台服务器? (我们称之为服务器A),它驻留在一个也有一个IP-Webcam的局域网中。那个网络摄像头不断地提供一个RTSP的地址...让我们说... rtsp://192.168.1.50:554/cam.sdp。摄像机无法访问外部世界(它必须留在局域网中,因此只能访问服务器A,否则服务器B),但服务器A呢。不幸的是,服务器A没有公共IP,所以我无法从世界任何地方进入服务器A服务器A可以走出去,如果它想,但没有一个能进入服务器A ...(这是一个被宠坏的小孩......太多的玩具,当它是一个孩子)转发RTSP流到远程套接字(RTSP代理?)

现在,有另一台服务器( 服务器B,原创)在上述外部世界这是一个普通的网络服务器,其公共IP和所有。该服务器允许人们进入它(不被宠坏,非常漂亮......设置桌子,做菜......那种东西)。这两个服务器A服务器B是我的电脑,并运行Ubuntu 12.04和我设计的一些Python应用程序(服务器B实际上运行Django,但我不认为这太相关)。我的意思是,我可以控制两台服务器上正在发生的事情。我可以安装/卸载软件包,我可以打开端口,关闭端口......任何需要的东西(我甚至可以格式化它们,如果我想的话,虽然我认为这不会有太大的帮助...或者是...谁知道?)

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

的问题是:我怎么能抓住与服务器的RTSP流A转储到服务器B的指定插座并打开它(用能理解RTSP饲料,这样的程序作为VLC)?

我猜我需要类似RTSP代理的东西,也许?但我真的不知道从哪里开始。

任何提示,链接......将不胜感激。

预先感谢您

+0

我不知道RTSP,但它似乎是一个标准的TCP-only协议。尝试在服务器A上运行:'ssh -g -R 554:192.168.1.50:554 server_B_hostname'。这将打开服务器B上的公共端口554,并从A的角度将其转发到192.168.1.50:554。 –

+0

嗯...转发在局域网内部工作,但我仍然有问题,当涉及到公共服务器...看起来很有希望,但是,谢谢... – BorrajaX

+0

一些服务器已配置sshd拒绝'ssh -g -R'转发(没有很好的理由)。如果可以的话,你应该检查服务器B上的'/ etc/ssh/sshd_config':值得注意的是,你希望'AllowTcpForwarding yes'。 –

回答

2

我不知道RTSP,但它似乎是一个标准的,只允许TCP协议。尝试在服务器A上运行:

ssh -g -R 554:192.168.1.50:554 server_B_hostname 

这将打开服务器B上的公共端口554,并从A的角度来看转发到192.168.1.50:554。

一些服务器配置了sshd来拒绝ssh -g -R转发(没有很好的理由)。如果可以,请检查服务器B上的/ etc/ssh/sshd_config并添加AllowTcpForwarding yes