我正在寻找一种软件来通过 HTTPS 隧道传输 RDP 或其他二进制 TCP 流量。因为很多客户端只允许 HTTP/S(在防火墙中只打开端口 80 和 443)。
但是需要将 RDP(和其他协议(protocol))从 DMZ 中的机器转发到客户端。
7 View large function description
是否有任何类型的开源软件或企业软件可以解决这个问题?
糟糕的解决方案
类似 F5 big ip 的解决方案有一个问题,我必须用这个软件创建连接配置。如果可以通过使用 api 来执行此操作,那将是一个很好的解决方案。但我宁愿只获得隧道组件,而无需使用整个网关软件。因为我需要从我自己的软件中创建隧道(1000 条),并且需要将隧道访问限制为允许的用户(由 session cookie 标识)
好的解决方案
http://http-tunnel.sourceforge.net/
如果隧道客户端不是专用服务器,而是在客户端浏览器中运行的 flash java 小程序,那么它将 100% 满足我的需求。
最佳答案
有大量项目通过 HTTP(S) 传输 TCP。您将需要做一些工作来选择最适合您需求的那个(并且可能会稍微修改一下)。
SuperTunnel ( java )。看起来不错,他们似乎已经考虑过如何处理行为不端的代理。
JHttpTunnel ( java )。 gnu httptunnel 的一个端口,我认为使用相同的网络协议(protocol)。
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)、开瓶器、htunnel、...
我认为 SuperTunnel 和 JHttpTunnel 都可以包含在客户端的小程序或您自己的 Java 应用程序中,它们不需要作为独立代理运行。
Netty 也会这样做,但是(我认为)它要求您的服务器也使用 Netty:换句话说,它允许您将常规 TCP connect()
替换为使用 Netty 的服务器TCP-over-HTTP connect()
,但不会代理与其他服务器的任意连接(除非您编写自己的简单代理)。
关于tcp - 通过 HTTP/s 传输任何类型的 TCP 流量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14080845/