![连接到我无法控制的路由器后面的计算机](https://linux22.com/image/1456353/%E8%BF%9E%E6%8E%A5%E5%88%B0%E6%88%91%E6%97%A0%E6%B3%95%E6%8E%A7%E5%88%B6%E7%9A%84%E8%B7%AF%E7%94%B1%E5%99%A8%E5%90%8E%E9%9D%A2%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA.png)
我的 ISP 为我的整个公寓楼分配了一个 IP 地址(ISP 与该公寓楼签订了独家合同)。“WAN”地址我的路由器看到的是“192.168.1.130”,这告诉我我在另一个路由器后面(并且我无法控制这个路由器,所以我无法打开它上面的端口)。
我如何才能最好地从外部世界拨号接入我的家庭网络?我猜 DDNS 不会起作用。但我想知道我是否可以从其他服务器或服务打开一个活动的 VPN 隧道来连接,或者我是否可以调用其他网络魔法来绕过我的 ISP 的限制?
编辑:没有调制解调器。连接来自墙外的以太网端口。ISP 不合作。
编辑 2:根据建议,我决定暂时使用反向 SSH 隧道来打开特定端口,就像端口转发一样。此 SSH 隧道由主服务器发起并启动,并连接到外部公共 VPS,全天候运行。我发现,如果您使用 PuTTy 从主服务器到外部服务器建立隧道,请务必选中“远程端口执行相同操作(仅限 SSH-2)”。示例:
R<public_port> <LAN_IP_on_home_network>:<listening_port_for_that_machine>
答案1
您希望转发哪种服务?如果您在外面有服务器,SSH 将是一种易于中继的服务。
如果您可以访问外部 SSH 服务器,则可以将该外部服务器上的远程端口转发到您的内部服务器(并可选择让其接受外部连接)。
ssh -R *:12345:internal.server:22 [email protected]
这会将公共服务器上的端口 12345 转发到内部服务器上的端口 22,如果您从该机器连接,则该端口可能是本地主机。
然后,假设公共服务器的防火墙规则设置正确,您将能够通过连接到公共服务器的端口 12345 来访问您的内部服务器。
如果您省略 *: 部分,它将仅在外部服务器的环回接口上转发,因此您必须先通过 SSH 连接到该服务器,然后从该机器通过 SSH 连接到本地主机端口 12345。
答案2
一个解决方案是安装远程控制软件,例如TeamViewer在您希望远程访问的每个系统上。它可供个人使用,可免费使用,可在 Android、iOS、Linux、Mac OS X、Windows、Windows Phone 8、Windows RT 和 BlackBerry 系统上运行。我在家人的 Windows 系统上使用它来远程解决问题,也曾用过它在 Linux 上系统和 Chromebook 上,发现它运行良好。我甚至用它从 Android 手机远程控制 Windows PC,尽管手机屏幕太小,这很困难。如果允许所有出站连接,您不必担心外部网络设备上的传入连接防火墙规则,也不必担心外部路由器上的端口转发。
另一种解决方案是使用SSH连接到外部 SSH 服务器的方法是创建一个反向 SSH 隧道,该隧道将允许您连接到外部 SSH 服务器,并通过隧道将连接路由到家庭系统。您可以将远程桌面协议 (RDP),适用于 Microsoft Windows 系统,或通过 SSH 隧道使用其他协议。例如,请参阅反向 SSH 隧道了解如何在 Linux 系统上设置反向隧道。有关如何在 Microsoft Windows 系统上使用 PuTTY 执行此操作的说明,请参阅如何使用 PuTTY 启动反向隧道?。配置 TCP 保持连接传输以保持连接。