如何在没有第三台计算机的情况下通过 NAT 和防火墙连接两台计算机

如何在没有第三台计算机的情况下通过 NAT 和防火墙连接两台计算机

我正在尝试通过 ssh 进入我家里的 Linux 机器。我的家是宿舍式环境 - NAT 和防火墙,个人笔记本电脑运行 Arch Linux。我的工作是企业式 Windows 7 - NAT 和代理防火墙,没有管理员权限。

我可以连接两个运行 Team Viewer 便携式软件的设备。但是,这并不符合我的真正需求。我希望简单地通过 SSH 进入我家里的 Linux 机器,让我的 Linux 机器完全退出登录 - 当我不在家时,基本上就是无头的。

我已经阅读了有关隧道的资料,但如果我理解正确,我需要一台两台计算机都可以连接的第三方服务器。我没有这样的服务器,也不想为这样的东西付费。


有什么简单而安全的解决方案可以在工作时通过 SSH 连接我的笔记本电脑?有没有免费且安全的“第三台服务器”?我在 Google 上搜索了好几遍,但似乎越来越困惑了。

答案1

普纳特是一个开源工具,据说可以解决这个问题。它说:

pwnat 是一个允许 NAT 后面任意数量的客户端与单独的 NAT 后面的服务器进行通信的工具,端口转发和在任何路由器上设置 DMZ 以便直接相互通信。服务器不需要知道有关尝试连接的客户端的任何信息。

没有中间人,没有代理,没有第三方,不需要 UPnP/STUN/ICE,没有欺骗,也没有 DNS 技巧。

更重要的是,客户端可以连接到任何远程主机上的任何主机或端口,或者连接到服务器决定的固定主机和端口。

pwnat 建立了这种连接:

机器 A(IP:192.168.1.3)-> NAT A(IP:122.xxx)-> Internet -> NAT B(IP:59.xxx)-> 机器 B(192.168.2.10)

pwnat 仅适用于 Linux,但本文 PWNAT:Windows 编译版本包含Windows 版本. 另请参阅同一作者PWNAT:示例

pwnat 使用的方法非常巧妙,但不能保证它适用于您的环境。

答案2

我个人认为隧道是您的最佳选择,即使您还没有第三台服务器。

Amazon EC2 提供了免费套餐定价选项允许新客户运行 Linux/Windows 微型实例,每月最多 750 小时,免费,为期一年。我自己没有使用过这项服务,但假设如果您只在需要时运行虚拟服务器,您就可以免费启动和运行 SSH 隧道。您甚至可能发现这项服务足够便宜,值得付费?

哈克5对隧道(具有持久性)进行了很好的介绍。您还可以设置一个 CRON 触发脚本来尝试连接到虚拟服务器,这样您就可以在启动 EC2 实例后几分钟内访问笔记本电脑……

答案3

如果可以的话,最好的选择是设置端口转发,但如果您的校园有防火墙,而您自己无法进行任何端口转发,那么请使用此建议。

是的,有免费的第三台服务器,而且您已经在使用它了,TeamViewer。确保您已将 TeamViewer 安装为服务(或适用于 Linux 的任何等效服务,我只使用 Windows 版本)。然后在工作和家中安装 VPN 驱动程序。然后,您将能够使用 VPN 从工作地点进行连接,并且您的家用机器将具有 7.xxx IP 地址。然后,如果您想进入终端会话,请通过 VPN 链接运行 SSH。

安装 VPN 选项位于高级设置下。 在此处输入图片描述

这将为您可以进行的连接类型添加“VPN”选项。 在此处输入图片描述

答案4

您可以使用公共 XMPP/Tox 服务器作为“第三台服务器”。也就是说,有以下项目通托克斯点对点链路(PPP over Any Transport),使用这些即时通讯协议作为传输层。

我尝试过支持 XMPP 的 PPPoAT,与 PWNAT 不同,这种机制确实对我来说有效。

要使用它,您需要在任何公共服务器上拥有两个 XMPP 帐户 - 一个用于您要登录的服务器,另一个用于您的客户端。pppoat在服务器上启动后,然后在客户端上启动(两者都具有适当的配置参数),您可以立即开始连接,例如

ssh [email protected]

当然,它会比直接连接慢,并且速度很可能取决于您选择的 XMPP 服务器,但对于正常的控制台活动来说它已经足够了。

至于安全性,SSH 可以在完全不安全的网络中工作,因为它已经实现了自己的加密,所以当您使用 SSH 时,基于 XMPP 的连接是否安全实际上并不重要。

相关内容