我在工作时需要通过家里的互联网浏览几个网站(这些网站也包含 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 更安全。