将同时客户端连接到单个连接的代理

时间:2012-04-05 04:49:04

标签: linux sockets networking proxy vpn

我正在寻找一个工具(在linux下),它允许我设置端到端代理,在一端接受一个端口上的多个同时客户端,使用单个转发数据到另一端连接然后“扩展”另一端的连接以连接回接受多个连接的服务。为了澄清,这是我想要实现的图表:

http://i.stack.imgur.com/rgTMd.png

(显然我需要超过10个代表才能将图像嵌入此页面)

如果您感兴趣,我试图这样做的原因是因为我想构建一个系统,使其更容易通过任意协议进行隧道传输,只要协议支持某种方式从某些方式发送消息一端到另一端。我将系统放在上图中的代理端A和代理端B之间。

以下是我希望它如何工作的示例:

首先,我将运行以下命令

mkfifo backpipe

nc -l 7778 0<backpipe | tee f1 | nc localhost 7777 | tee f2 >backpipe

“服务器代理”将在端口7777上运行。

应用程序将连接到的“客户端代理”将在端口8080上运行

客户端代理将连接到端口7778

解决“服务器代理”和“客户端代理”

2 个答案:

答案 0 :(得分:0)

OpenSSH已经通过-D选项支持此功能:

ssh -D <port> -l username remotehost

SOCKS服务器将侦听连接并将其转发到SSH连接的另一端。

答案 1 :(得分:0)

我决定在同一时间编写自己的解决方案。它是一些python代码,它接受多个客户端,并基本上通过标准输入/输出代理通信。如果有人有兴趣,这里是代码http://pastebin.com/1E45Exsy

不要相信此代码能够完美运行。我没有正确测试它,它没有处理断开连接的客户端。

我将继续寻找更优雅,更强大的解决方案,但在此期间应该这样做。我会在这里发布代码更新。