我在远处的路由器后面有一个视频监控系统(一堆 IP 摄像机,具有私有 IP)。该地点唯一可用的 ISP 为我提供了 3G/4G USB 适配器(基本上是移动互联网)。显然,这个加密狗(连接到路由器)本身会执行一些路由/魔法(并且不可配置),因此我无法使用路由器进行端口转发(至少没有任何帮助)。这意味着虽然摄像机可以访问互联网(因此可以向我推送信息),但我无法直接通过互联网访问它们(所以基本上没有实时反馈)。
我正在考虑通过在与 IP 摄像机相同的子网中放置一台低功耗计算机(软件在这个问题中并不重要,但我将使用 Linux)来解决这个问题 - 我们称这台计算机为 A;我还在某个地方租了一个 VPS,可以通过互联网公开访问 - 我们称之为 B。
我认为这个设置应该可以让我通过实时直播解决这个问题。至少从概念上来说,如果我让 A 打开到 B 的隧道,那么通过 BI 应该可以访问 A 的网络。
假设上述工作有效(我不明白为什么不行,但这就是我问的原因)你们能推荐一个可以尽可能轻松地完成上述工作的系统吗?我的意思是..我应该设置一个VPN,其中A作为VPN客户端,B作为VPN服务器吗?那么想要查看摄像头的人只需连接到安装在 B 上的 VPN 服务器即可?
我认为这应该可行,但也许有比在我想要检查摄像头的每台计算机上设置 VPN 更简单的方法。
我对软件并不直接感兴趣(我确信它存在并且我会设法配置它),而是对网络概念感兴趣。
理想的情况是,我在(例如)端口 8080 连接到 B,并且流量将自动通过隧道从 B 路由到 A,此时 A 将通过该连接提供从摄像机“1”获得的数据;然后来自摄像机“2”的 8081 等等。
答案1
假设 VPS 也运行 Linux,我将设置一些从 A 到 B 的 SSH 隧道,其中 B 作为网关。这样,您可以告诉 B 侦听端口 8080,该端口对应于网络摄像机一的 IP
因此,从 A 框中,使用这些参数运行 ssh
ssh -nNT -R 8080:ipcam1:<ipcamport> -R 8081:ipcam2:<ipcamport> <VPS IP>
希望您的 VPS 有一个静态 IP 地址。
还希望您能够完全控制您的 VPS,因为您需要修改 SSH 守护进程以允许GatewayPorts
其他计算机通过 B 连接到达 A。
在 Debian 中,GatewayPorts 选项在 中指定/etc/ssh/sshd_config
。在该文件末尾
添加GatewayPorts yes
应该就足够了,然后重新启动 ssh 守护程序以使更改生效。
答案2
如果ssh
在 3G/4G 路由器后面安装了一个系统,那么您可以从该系统 ssh 到 3G/4G 路由器外部的另一个系统,并设置反向 SSH 隧道。
然后,该隧道将允许您访问外部计算机上的 port@host,这将允许您访问 3G/4G 路由器后面的 port@host。
$ ssh -f -N -T \
-R 8080:cam1:<cam's port> \
-R 8081:cam2:>cam's port> \
<hostname of external system>
请参阅这些问题,以允许路由器后面的 ssh 服务器能够访问其本地主机之外的端口。该功能在 中称为 GatewayPorts sshd_config
。
请务必阅读第二个链接,标题为:ssh 到私有 IP,我非常详细地介绍了如何做你想做的事情以及如何设置GatewayPorts
等以及如何测试整个设置。