使用Indy创建TCP TUNNELING系统

时间:2016-04-18 14:54:28

标签: delphi tcp proxy indy

您是否可以创建充当tcp代理服务器的中间应用程序?它将由两部分组成。 IdTCPServer和IdTCPClient。这个想法是:

应用程序>连接到IdTCPServer>所有数据都被重定向到> IdTCPClient连接到目的地。

TCPClient收到的数据将被重定向到IdTCPServer和Application。 我做了这么简单的应用程序,它在HTTP请求中工作,但是当我尝试将它用于RDP客户端时它失败了(我收到错误,即协议错误)。它甚至可能吗?我使用ReadByte方法,并将每个单字节发送到另一个IOHandler。

我想创建某种虚拟tcp通道,允许通过NAT进行连接。

我不太清楚。我想要实现的是这样的:

RDP服务器< IdTCPClient<> IdTCPclient> NAT> IdTCPServer< RDPClient。

2 个答案:

答案 0 :(得分:4)

  

应用程序>连接到IdTCPServer>所有数据都被重定向到> IdTCPClient连接到目的地。

     

TCPClient收到的数据将被重定向到IdTCPServer和Application。

事实上,Indy有一个专门用于此目的的组件 - TIdMappedPortTCP

将其MappedHostMappedPort属性设置为指向目标目标,然后将其激活,并且所有入站连接将自动定向到目标,并且数据在两个方向上来回传递。

答案 1 :(得分:2)

我打算只添加评论,但没有足够的积分。 您的请求说您要“重定向”,Remy为此提供了答案。

但是,您的描述听起来像是想要自己传递数据(中间人)。 RDP contains some guards against that,虽然早期版本可能更加开放。

如果实际重定向不是您要查找的内容,您可能需要更严格地指定问题。