通过HTTP / s隧道传输任何类型的TCP流量

时间:2012-12-29 10:38:05

标签: tcp applet portforwarding http-tunneling big-ip

我正在寻找通过HTTPS隧道隧道传输RDP或其他二进制TCP流量的软件。因为许多客户端只允许HTTP / S(防火墙只打开端口80和443)。

但是需要将RDP(和其他协议)从DMZ中的机器转发到客户端。

Function description 7 View large function description

是否存在针对此问题的任何类型的开源或企业软件?

糟糕的解决方案

F5 big ip这样的解决方案存在我必须使用此软件创建连接配置的问题。如果可以通过使用api来实现这一点,那将是一个很好的解决方案。但我宁愿只使用隧道组件而不需要整个网关软件。因为我需要从我自己的软件中创建隧道(1000ds),并且需要限制对允许用户的隧道访问(由会话cookie识别)

好的解决方案

http://http-tunnel.sourceforge.net/

如果隧道客户端可能不是专用服务器而是客户端浏览器中运行的Flash的Java小程序,那么它将满足我的需求。

3 个答案:

答案 0 :(得分:26)

有大量项目通过HTTP(S)隧道传输TCP。您将需要做一些工作来选择最适合您需求的工作(并且可能稍微修改一下)。

  • SuperTunnel(Java)。看起来不错,他们似乎已经考虑过如何处理行为不好的代理。

  • JHttpTunnel(Java)。我认为gnu httptunnel的端口使用相同的网络协议。

  • Netty HTTP隧道(Java,Netty的一部分,一个非常好的网络库; sample code)。我认为这需要客户端和服务器都使用Netty,但除此之外是Netty中常规套接字的直接替换。

  • ProxyChains(C,Unix,非常受欢迎)

  • GNU httptunnel(C,没有HTTPS支持,这可能是所有http隧道的祖父)

  • node-http-tunnel(Node.js),Net::HTTPTunnel(Perl),nRedir(Python),Corkscrew,htunnel,...

我认为SuperTunnel和JHttpTunnel都可以包含在客户端的applet或Java应用程序中,它们不需要作为独立代理运行。

Netty也会这样做,但(我认为)它要求您的服务器也使用Netty:换句话说,它允许您使用TCP-over-HTTP使用Netty将常规TCP connect()替换为服务器connect(),但不代理与其他服务器的任意连接(除非您编写自己的简单代理)。

答案 1 :(得分:5)

如果您处于Windows世界,我强烈建议您查看Windows 2008 / 2008R2 / 2012 SSTP VPN服务。它使用443端口,可以与IIS共同托管(在443上)。它在Windows Vista / 7/8上就像一个魅力。我听说过mac OSX解决方案,但还没有。

然而,有一个很好的旧解决方案。

如果在linux上,只需安装一个openssh-server。如果在Windows上,请获取并安装OpenSSH服务器(例如,来自itefix https://www.itefix.no/的copSSH)。将端口修改为使用443而不是默认值22。

然后在客户端可以在Windows上使用Putty(http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)或kitty(http://kitty.9bis.net/)或任何操作系统中的任何类型的SSH客户端通过端口443(您的SSH)连接到您的服务器服务器正在听)。

例如,可以在几个站点上找到有关通过putty进行隧道连接的说明:

永远记住,您必须指向当地主办方才能执行此操作。

在Windows上还有MyEnTunnel(http://nemesis2.qx.net/pages/MyEnTunnel)来简化隧道配置和维护的过程。

在浏览器上利用此隧道非常简单:只需告诉您的浏览器您在客户端配置的本地端口(eh localhost 8080)上有一个socks代理(putty,kitty,myentunnel或其他任何东西)。

答案 2 :(得分:2)

我写了一个名为sshh的文章。  http://sourceforge.net/projects/sshh/

我有点疯了,它实际上让你通过它向后连接。