我怎样才能从互联网上的服务器复制到路由器后面的服务器做NAT?

我有一个VPS和NAT防火墙后面的服务器。 我想使用NAT防火墙后面的服务器作为VPS的备份。 VPS需要能够启动备份过程,并通过互联网发送备份,通过做NAT的路由器和备份机器。 我没有控制路由器,所以我的备份机器没有公共IP地址。

有没有办法让我打开从备份机器到服务器的SSH隧道(或同等),以便服务器可以通过此连接复制文件?

拓扑如下所示:

________ _______________ ________ | server | -- ( internet ) -- | router w/ NAT | -- | backup | -------- --------------- -------- 

我这样做,但我做倒退。

我在服务器上运行OpenVPN服务器,备份运行OpenVPN客户端。 这是因为服务器不会更改IP地址。 现在,只要备份启动,NAT盒子的IP地址就没有关系,OpenVPNnetworking上的IP地址总是一样的,服务器总能find它。

另外,为了获得奖励,由于OpenVPN连接通过NAT“传出”,只要允许UDP端口(在大多数设备上是默认的),NAT设备也不需要特殊的configuration。

打开从家庭服务器到VPC的SSH连接,启用隧道连接,以便VPC计算机可以连接到家庭计算机上的服务; rsync或ftp可能会是最简单的。

安全的文件传输协议是相当好的和安全的解决scheme,但也有其他的解决scheme,如使用rsync或FTP。

对于rsync,您可以打开路由器上的端口n°873并将其转发到备份目标。 对于简单的FTP问题,有两个对称的解决scheme,第一个是打开备份目标上的ftp端口,然后再次转发。 第二个似乎是有用的,即使你没有访问路由器来更改NAT规则,在这种情况下,你必须在服务器上设置一个FTP守护进程作为存储库,并做一个同步脚本,将做转移备份机器。

此外,隧道解决scheme似乎是一个很好的select,所以我build议你OpenVPN。

回答我自己的问题:

这只是表明,所有你需要的是一个新的search术语:“反向”,如“ssh隧道反向”。

因此,要创build一个反向SSH隧道,使用-R从NAT后面的机器(在我的示例中是备份)运行SSH,并指定将哪个远程端口绑定到本地端口,因此:

 ssh -R remote_bind_port:localhost:local_port remote_user@server 

所以,例如:

 ssh -R 1222:localhost:22 [email protected] 

将example.com上的端口1222绑定到localhost端口22.即:example.com上的用户可以执行ssh localhost -p 1222以遍历NAT并连接到路由器后面的机器上的SSH服务器。