24

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

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

功能说明7 查看大功能说明

是否有任何类型的开源或企业软件可以解决这个问题?

糟糕的解决方案

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

好的解决方案

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

如果隧道客户端可能不是专用服务器,而是在客户端浏览器中运行的 java 闪存小程序,它将 100% 满足我的需求。

4

3 回答 3

31

有大量项目通过 HTTP(S) 建立 TCP 隧道。您将不得不做一些工作来选择最适合您需要的那个(并且可能会稍微修改它)。

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

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

  • Netty HTTP Tunnel(Java,Netty 的一部分,一个非常好的网络库;示例代码)。我认为这需要客户端和服务器都使用 Netty,但除此之外,它还可以替代 Netty 中的常规套接字。

  • ProxyChains (C, Unix, 非常流行)

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

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

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

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

于 2013-01-02T00:24:39.253 回答
6

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

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

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

然后在客户端可以在windows或任何任何操作系统中的一种 SSH 客户端,通过端口 443(您的 SSH 服务器正在侦听的端口)连接到您的服务器。

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

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

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

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

于 2013-01-04T15:06:13.973 回答
2

我写了一个叫 sshh。 http://sourceforge.net/projects/sshh/

我有点发疯了,它实际上可以让你通过它向后建立连接。

于 2013-11-28T03:14:47.187 回答