通过另一台主机浏览互联网,无需任何主机上的外部公共 IP

通过另一台主机浏览互联网,无需任何主机上的外部公共 IP

我在工作时需要通过家里的互联网浏览几个网站(这些网站也包含 Flash 内容)。因此,网站服务器只能看到来自我家 IP 的访问。

家用电脑和办公室电脑都没有直接的外部公共 IP 地址,而且我无法访问路由器进行任何更改(NAT/端口转发等)。
我在云端也有自己的服务器,它有一个公共外部 IP,我可以使用它来建立此路由。我们可以在家用电脑、办公室电脑和云服务器上安装任何软件。

我找到了一些有用的链接:

如何设置通过 SSH 隧道传输流量的本地 SOCKS 代理?

http://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel

但无法为我的情况提供完整的配置。您能告诉我有哪些方法可以解决这个问题吗?

答案1

外部服务器当然提供了选项,但我想首先探索直接连接。

它们速度更快,通常也更可靠。但它们确实需要 IP 来连接,并且需要另一端的路由来将连接从路由器连接到服务器。你说你没有这些,但我认为你可能忽略了其他选项。

  • 我很难(并非不可能)相信你合法 IP。大多数家庭连接都有一个。路由器获取它并使用 NAT 和 DHCP 为您提供私有内部 IP。在家时,您可以向 Google 询问你的 IP 地址它会告诉你。

    许多家庭连接使用动态 IP 寻址,这意味着您的 IP 将按照 ISP 确定的时间表更改。您可以使用以下方法解决这个问题众多动态 DNS 选项之一

  • 路由比较难。传统上,我会要求您通过登录路由器来转发端口。你说你不能这样做……那么 UPNP 呢?许多路由器默认启用此功能,这实际上允许您执行相同的操作。您从路由器租用一个端口。在 Ubuntu 中设置它相当简单:

    sudo apt-get install miniupnpc
    upnpc -a <local_ip> 22 22 TCP
    

    然后外部机器就可以通过您的公共 IP 访问您的 SSH 服务器。


如果做不到这一点,你可以创建一个从家用电脑到外部服务器的持久连接,该连接将一个端口隧道回连到家用电脑上运行的 SSH 服务器。然后人们就可以通过你的服务器连接到你家。我把这称为反向端口隧道

  • 从家里:ssh -L 22:0.0.0.0:2200 serveruser@server将家里的 SSH 暴露给服务器。您可能还需要编辑/etc/ssh/sshd_config并打开GatewayPorts看到这个
  • 然后从任何地方ssh -D -p2200 homeuser@server

当然,您可能会发现从家到服务器的连接停滞或超时。各种选择解决这个问题。


无论选择哪种方式,您都会将一扇大门暴露在您的系统中。请练习安全计算并按照我的教程进行操作使 SSH 更安全

相关内容