实现TCP透明代理(附下载)

原创 2014年05月15日 11:16:29

    本文所描述的TCP代理服务器工作于网络协议层次中的应用层,位于传输层之上。只要是以TCP的方式为客户提供服务的(包括我们的HTTP服务器,HTTP底层走的仍然是TCP),我们都可以在真正的TCP服务器前面增加代理服务器。

  

一.TCP透明代理的作用

TCP代理服务器可以隐藏背后真正TCP服务器,如此便可以起到保护真正TCP服务器的作用。由于TCP代理服务器工作于应用层,所以,黑客对应用层以下级别的协议栈的攻击(比如TCP半连接攻击)就无法穿过TCP代理服务器,这样,即使TCP代理服务器挂了,我们真正的TCP服务器仍然可以正常运行。当然,如果黑客是针对应用层进行攻击的,这时,代理服务器就不起作用的。

当黑客攻击应用层以下级别的协议栈,我们可以在真正的TCP服务器前面部署N个代理服务器,并将它们分布于不同的地方,这样,当其中一个代理服务器因为遭遇攻击而挂掉时,受影响的只是连接到这台代理服务器的用户,而其它的代理服务器上的用户仍然是正常被服务的,就像下面这样:

  

TCP代理服务器还有另外一个重要的作用,就是转址机。比如,我们的机房位于广州,而当北京的用户来访问服务时,网络延迟很大。我们可以在北京的机房部署一台代理服务器,并将该代理服务器与广州服务器之间的网络路由调节到最优。如此,北京的用户就可以通过这台代理服务器来快速地访问我们提供的服务了。对于转址机这项功能而言,有很多现有的软件可以做到,它们通常工作于网络协议层次中的IP层(即网络层),所以它们除了可以做TCP转址外,还可以做UDP的转址。

  所以,概括而言,TCP代理服务器在以下场合适用:

(1)需要隐藏真正TCP服务器的位置。

(2)保护TCP服务器免受应用层以下级别的协议栈攻击。

(3)TCP转址机。

 

二.实现原理 

     在实现TCP代理服务器时,遵循以下几点原则:

(1)当客户端与代理服务器建立TCP连接成功时,代理服务器立即与TCP服务器建立连接,并将它们作为一个连接对管理起来。

(2)当连接对中的任何一个连接断开时,代理服务器都关闭另外一个连接,并释放该连接对所持有的任何资源。

(3)当接收到来自客户端的任何数据时,都原封不动地转发给TCP服务器;当接收到来自TCP服务器的任何数据时,都原封不动地转发给对应的客户端。

(4)通过客户端的端点地址IPEndPoint来识别不同的连接对。


三.下载

使用TCPProxy类,我写了个简单的TCP代理服务器应用程序,对于简单的场景可以直接拿来使用。该程序运行的截图如下:        

     使用时,只需要修改一下TCPProxyServer.exe.config中对应的配置即可。

     可以从这里下载TCP代理服务器




版权声明:本文为博主原创文章,未经博主允许不得转载。

泛洪攻击(Flood)与TCP代理(TCP proxy)

下文摘自H3C攻击防范指导手册泛洪攻击网络上常常会发生泛洪攻击和网络扫描攻击。泛洪攻击指攻击者向攻击目标发送大量的虚假请求,驱使被攻击者由于不断应付这些无用信息而筋疲力尽,合法的用户却由此无法享受到相...
  • Holmofy
  • Holmofy
  • 2017年03月29日 12:31
  • 864

Windows 下面免费的TCP proxy

问题:我需要一个TCP proxy,把发往8080端口的TCP请求,转到89端口上。这样,我一个TCP端口上的服务,可以用两个端口对外提供服务。解决办法:下载rinetd for Windows版本,...
  • berryreload
  • berryreload
  • 2012年12月29日 19:39
  • 4737

20170509 下载劫持/计算机时间/代理服务器/TCP与UDP

周一下午也是一直在现场加班到十点多,又没写,,,,这也是可以的,还是赶紧补上吧 下载劫持 现在劫持表现为我本来想下载A,结果下载的却是B,然后就被流氓软件给包围了,要明白这个还是要...
  • qq_27428835
  • qq_27428835
  • 2017年05月10日 16:32
  • 117

使用Boost.Asio写的多线程TCP转发代理服务器

http://www.cppblog.com/archiveman/archive/2010/03/05/108971.html 应用场景是这样的: 客户端和服务器在不同的网段内,它们之间...
  • zww_sap111
  • zww_sap111
  • 2013年02月18日 17:44
  • 529

TCP Proxy TCP代理

  • 2013年03月07日 17:25
  • 11KB
  • 下载

Python实现TCP代理

渗透测试中,经常遇到无法使用wireshark、无法嗅探和分析流量的情况,可以通过部署简单的TCP代理脚本来了解未知的协议,修改数据包,或者为模糊测试创建环境。 介绍原理代理工作原理大致如下: [需要...
  • cd_xuyue
  • cd_xuyue
  • 2015年10月20日 11:24
  • 1543

代理服务器详细教程

代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。  在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络...
  • waysoflife
  • waysoflife
  • 2014年10月21日 17:30
  • 2523

Ngnix Tcp 代理转发SS服务

使用Nginx的TCP代理模块转发请求。方便后续做集群管理。本来想做MySQL集群后来还是做SS服务简单。...
  • super2007
  • super2007
  • 2016年03月21日 04:52
  • 3368

nginx TCP转发配置

nginx1.90对TCP协议的代理并不是默认开启的,需要在编译的时候配置 --with-stream 参数 进入原有nginx源码目录 ./configure --prefix=/usr/loc...
  • sundehui01
  • sundehui01
  • 2017年01月12日 13:52
  • 6472

windows操作系统自带的TCP端口转发

因为工作中一个项目,总部与各个分部只有citrix服务器才能通讯,总部客户端想通过分部citrix访问分部内网资源。基本思路,通过程序修改获取的ICA文件中的IP地址和端口,将修改后的ICA文件返回给...
  • mergerly
  • mergerly
  • 2016年02月26日 10:36
  • 1976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现TCP透明代理(附下载)
举报原因:
原因补充:

(最多只允许输入30个字)