好吧,问题描述得很简单。不知道该如何解决。
我家里有局域网,我有 ISP 的私有 IP。我朋友家也有同样的情况。我有没有办法从我的电脑 ssh 到他的私有服务器。
我的电脑(来自路由器的 192.168.0.2)| 路由器(来自 ISP 的 10.16.8.13)| 公有 IP(111.111.111.111)---公有 IP(222.222.222.222)| 路由器(来自 ISP 的 192.168.125.123)| 他们的服务器(来自他们的路由器的 192.168.0.143)
如您所见,我们两个都位于双 NAT 之后。我考虑过 ICMP 打洞。但正如此链接所示:https://stackoverflow.com/questions/37472235/flaw-in-icmp-holepunching如今,这种方法显然很少能奏效。
我考虑尝试找到一种方法让他反向隧道连接到我的 Android 手机,但是,即使我进一步研究如何做到这一点,似乎我的手机也被赋予了一个私有 IP 而不是公共 IP。
我知道在桌面世界中,有一些工具(如 Team viewer)允许您通过其服务器将一台机器连接到另一台机器。对于 ssh 来说,这似乎是进行中间人攻击的好方法...
答案1
如果没有 ISP 的帮助或使用其他常见端点,就无法做到这一点。
我可能会启动一个便宜的 AWS EC2 实例作为 OpenVPN 服务器,然后从每台 PC 设置 OpenVPN 到它(或者您可以使用 SSH 转发)。当然,它不需要是 AWS 实例,任何最小的 VM 服务器都可以。
您还可以找到一个 VPN 提供商,它可以为您提供端点,从而消除对 EC2 实例的需求。
否则,我猜你们其中一个人需要向你的提供商索取一个静态 IP 地址。
答案2
另一个可能的解决方案是在服务器上设置 TOR 隐藏服务(可能是单洋葱,以牺牲匿名性为代价提供更好的性能,我认为在这种情况下不需要匿名性),并在您的工作站上设置 TOR 客户端。这样,您将能够在双 NAT 后面连接到您的对等方的服务事件。