我在我的(高端)笔记本电脑上开发网站,并且在各种物理位置工作。
我想省去不断与外部可见的 Web 服务器同步的麻烦,以便客户测试网站的进度(或用于相关目的)。因此,我正在尝试找到一种方法来使我的笔记本电脑成为自动地从互联网、任何位置都可公开看到,即使我无法访问路由器来设置端口转发(例如从咖啡店或其他公共无线连接)。
我已经使用 DynDNS 将我选择的域名通过路由器转发到桌面服务器,有设置...但就像我说的,我想放弃使用这个桌面服务器的步骤。
我希望付费反向代理服务(按月收取帐户费用)能够提供可用于此目的的专有套接字级客户端/服务器“反向代理”软件。我找不到。我已经使用 TeamViewer 和 LogMeIn,它们提供类似的专有服务。事实上,我尝试使用 LogMeIn Hamachi VPN 来实现这一点 - 通过让我的桌面(互联网上已经可以看到)通过 VPN 将请求端口 80 的 IP 流量转发到我的笔记本电脑。但是,似乎不可能像这样设置 Hamachi/Windows(但我可能是错的)。
我希望有一个简单而强大的方法来实现这一点。
答案1
如果您有一个可以通过 SSH 连接到的服务器,并且该服务器允许您在相关端口上监听公共 IP 地址(如果您控制它,它将会 - 如果您通过 cygwin 或类似程序安装 SSHd,甚至可能是您描述的台式机)您可以使用 SSH 的隧道选项将流量拉到您的本地服务器。
类似于:一旦连接并经过身份验证,将使 11.22.33.44 上的端口 80(假设这是服务器的公共地址)进行连接,然后转发到您的本地端口 80。您需要在服务器上启用 GatewayPorts 选项才能以这种方式侦听非本地主机地址,并且需要以 root 身份登录才能侦听 1024 以下的端口,如果已经有服务在端口 80 上侦听,您显然需要选择其他内容。建议添加选项以启用通过 SSH 传输的流的压缩,特别是当您通过慢速网络连接笔记本电脑时(也许被困在偏僻的地方,只有 GPRS 移动连接可用)。ssh [email protected] -g -R 11.22.33.44:80:127.0.0.1:80
-C
要在 Windows 上使用 ssh,您有几个选择。您可以安装 cygwin 的端口 [然后我上面给出的命令应该 JustWork(tm)] 或使用其他客户端。油灰是一个非常流行的选项,它支持远程端口隧道。
这样,无论您从哪里连接,您机器的 Web 服务器在连接时都将始终在同一地址上可用,因此无需使用动态 DNS 来分配您可能希望分配的人性化名称(当然,假设您连接的服务器具有固定的公共地址)。
与其使用家庭或办公室服务器来实现这一点,除非您拥有良好的双向快速连接,否则这可能会进一步降低速度,不如在某处(最好在同一个国家)租用小型 Linux VPS 来实现这一目的,这样可能会获得更好的效果。只要有足够的带宽,您只需要最小的机器,这样每月只需花费几美元。
除了 SSH,您还可以考虑使用 VPN 工具(例如 OpenVPN),并在服务器上使用简单的 iptables 规则在连接时将连接转发到您的机器。设置后,这可能会更高效、更省事,但如果您不熟悉它和一般的路由,配置起来可能会有点麻烦。同样,廉价的 VPS 或您自己的办公室/家庭服务器可以作为 VPN 的服务器端。