通过 HTTP 进行隧道传输

通过 HTTP 进行隧道传输

我工作时的网络被防火墙锁定,只有使用代理服务器才能连接互联网。在工作时,我可以连接到分布在网络上的数据库。

但是,在家里,我无法连接到代理服务器或数据库。

怎么做?我可以通过 LogMeIn 访问我的工作站,因此我可以在上面安装任何东西。

我想到在工作站安装某种隧道机制。然后,回到家,我就可以连接到该机制,然后该机制将执行所需的连接。

因此,从本质上讲,我想要做的事情可以用下图来表示:Home => Workstation => Database。例如,每当我在家里连接到 10.140.0.1:1234 时,它都会被重定向到我的工作站的 10.140.0.1:1234,因为 10.140.0.1:1234 只能通过公司网络使用。

注意:我使用的是 Windows XP。

答案1

如果你可以将 OpenSSH 安装到你的工作站计算机上(例如,使用赛格威openssh包中),您可以使用名为corkscrew使 OpenSSH 客户端能够通过代理隧道传输出去。Cygwin 有一个corkscrew软件包,因此如果您已经安装了 Cygwin,使用它很方便。阅读corkscrew手册页以获取有关其配置的说明(我相信这只是简单的一行添加/etc/ssh_config)。

接下来,您需要将家用 PC 变成工作站 ssh 客户端连接的可行端点,为此,您需要运行 sshd 守护进程。同样,Cygwin 是获取它的地方之一:安装软件包openssh,然后运行ssh-host-config脚本以创建 sshd 服务。接受配置脚本每个问题的默认答案。

由于您的家用 PC 位于 NAT 路由器后面(对吗?),请将 TCP 端口 22 转发到您的 PC,并将该端口作为例外添加到您的 PC 的防火墙中。这是一个安全风险,因此请采取适当的预防措施(留作练习)。

最后,创建一个隧道来从您的家用电脑传输到您的公司数据库的连接:登录到您的工作站(通过 LogMeIn),然后打开一个隧道回到您的家用电脑,如下所示(在 Cygwin bash shell 中):

ssh -N -R 1234:10.140.0.1:1234 [email protected]

其中username是连接到 sshd 服务器的用户的名称,xxx.xxx.xxx.xxx是您的家庭路由器的真实可路由 IP 地址。您localhost:1234在家庭 PC 上建立的任何连接都将通过隧道转发到,因此看起来好像公司数据库正在监听您家庭 PC 的 TCP 端口 1234。完成后,您可以通过使用 Ctrl-C 终止工作站上的命令来10.140.0.1:1234关闭隧道。ssh

相关内容