tcp - 通过 HTTP/s 传输任何类型的 TCP 流量

标签 tcp applet portforwarding http-tunneling big-ip

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

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

Function description 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/

相关文章:

boost::asio 发送数据比通过 TCP 接收数据更快。或者如何禁用缓冲

linux - 如何在 Linux 中打开端口

java - 小程序。为什么paint方法需要图形作为参数

linux - 使用 WinSCP 通过隧道抓取文件

linux - SSH本地端口转发无法从外部访问

基于多个 DNS 结果的 Java 传出 TCP 连接故障转移

Java应用程序将 "forward"数据从TCPSocket到WebSocket?

java - 在 Java 小程序中绘制异国情调的字体

Java:JPanel 在 CardLayout 中无法正确显示

JBoss HTTP Transport 不是 Vagrant 的端口转发