实现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代理服务器




版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhuweisky/article/details/25787787

Linux环境下基于条件约束的HTTP/TCP透明代理和流量牵引方案

一. 前言 代理技术,是针对客户端(Client)和服务器(Server)之间的通信交互而言的一种介入技术。依据代理方式的不同,大致可以分为两种:1. 非透明代理;2. 透明代理。 1.      ...
  • cancanfairy
  • cancanfairy
  • 2016-03-11 16:48:27
  • 2786

nginx做透明代理

在VPN网关上设置一个透明代理能在一定程度上提高客户端的下载速度。最适合做透明代理的自然是squid,但squid有两个缺点: 不支持多CPU; 存在内存泄漏问题,我设置squid内存缓存...
  • xiaolang85
  • xiaolang85
  • 2014-07-29 10:57:17
  • 6986

iptables:tproxy做透明代理

透明代理:客户端向真实服务器发起连接,代理机冒充服务器与客户端建立连接,并以客户端ip与真实服务器建立连接进行代理转发。因此对于客户端与服务器来说,代理机都是透明的。...
  • u011431128
  • u011431128
  • 2017-08-22 16:16:48
  • 2382

Apache配置反向代理、负载均衡和集群(mod_proxy方式)

转载自:点击打开链接 Apache配置负载均衡和集群使用mod_jk的方式比较多。 但是mod_jk已经停止更新,并且配置相对复杂。 Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比...
  • wjciayf
  • wjciayf
  • 2016-08-06 21:26:14
  • 2064

haproxy实现tcp代理

简介haproxy大多数情况下在http(七层)代理,如apache,tomcat等,下面我们就来讲下haproxy的tcp(四层)代理,可以用于ssh、mysql、mongodb等多种场合。需求 ...
  • yanggd1987
  • yanggd1987
  • 2016-07-29 09:44:58
  • 3441

TCP转发服务器的例子

2009-05-28 15:02:14|  分类: 电脑知识|字号 订阅 这几种机器用事件模型应该够用了。  下面是一个TCP转发服务器的例子,他的作用是有一些客户端连到服...
  • cuiyifang
  • cuiyifang
  • 2012-12-06 23:10:03
  • 2018

Tcp转发服务器代码

  • 2013年12月13日 14:41
  • 254KB
  • 下载

TCP to TCP 数据转发

TCP to TCP 数据转发 MSN:yiqianfeng@hotmail.com 需要转载请联系作者 目的     我们部门在内网有一台Web服务器A,用于部门文档信息管理,可分公...
  • cuiyifang
  • cuiyifang
  • 2012-12-06 23:08:18
  • 1274

媒体转发服务器-TCP 在 EPOLL 模型中的注意细节

前段时间在公司开发了基于udp的流媒体转发服务器,在公网udp转发ts,花屏比较严重。课下之余写了epoll-tcp模型的转发服务器作为测试,比较一下效果,其间遇到不少问题,在此做个笔记。代码最后附上...
  • liuhongxiangm
  • liuhongxiangm
  • 2013-12-13 14:47:27
  • 2574

tcp域名转发工具

  • 2014年12月30日 16:07
  • 264KB
  • 下载
收藏助手
不良信息举报
您举报文章:实现TCP透明代理(附下载)
举报原因:
原因补充:

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