如何从互联网上的服务器复制到执行 NAT 的路由器后面的服务器?

如何从互联网上的服务器复制到执行 NAT 的路由器后面的服务器?

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

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

拓扑如下:

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

答案1

我确实这么做了,但是我做的是倒着的。

我在服务器上运行 OpenVPN 服务器,备份服务器运行 OpenVPN 客户端。这是因为服务器不会更改 IP 地址。现在,只要备份服务器处于启动状态,NAT 盒的 IP 地址是什么就无关紧要了,它在 OpenVPN 网络上的 IP 始终相同,服务器也总能找到它。

另外还有额外的好处,由于 OpenVPN 连接是通过 NAT“传出的”,只要允许 UDP 端口出去(大多数设备默认都是这样),NAT 设备就不需要进行特殊配置。

答案2

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

答案3

回答我自己的问题:

这只是表明您所需要的只是一个新的搜索词:“reverse”,如“ssh tunnel reverse”。

因此,要创建反向 SSH 隧道,请从 NAT 后面的机器(在我的示例中为备份)运行 SSH,-R并指定要绑定到本地端口的远程端口,因此:

ssh -R remote_bind_port:localhost:local_port remote_user@server

例如:

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

将 example.com 上的端口 1222 绑定到本地主机端口 22。也就是说:example.com 上的用户可以执行此操作ssh localhost -p 1222以穿越 NAT 并连接到路由器后面的机器上的 SSH 服务器。

答案4

安全文件传输协议是一种非常好且安全的解决方案,但还有其他解决方案,如使用 rsync 或 FTP。

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

此外,隧道解决方案似乎是一个很好的选择,所以我向您推荐 OpenVPN。

相关内容