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




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

相关文章推荐

Nginx的tcp反向代理初探

前面一篇文章只是简单使用了一些nginx的http代理,大家可以看到,非常的easy。 只要对nginx.conf稍作简单的配置就可以实现http反向代理了。但是我们现在的应用场景不一样,我们现在...
  • oldmtn
  • oldmtn
  • 2015-08-13 16:30
  • 9426

【Nginx】基于TCP的反向代理

Nginx默认只支持http的反向代理,想要支持tcp的反向代理,需要在编译时增加tcp代理模块【nginx_tcp_proxy_module】一、安装步骤:cd /app wget http://n...
  • claram
  • claram
  • 2015-09-01 18:33
  • 7643

TCP转发服务器的例子

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

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

http://tech.ddvip.com/2013-07/1374257975199277.html 因为工作中一个项目,总部与各个分部只有citrix服务器才能通讯,总部客户端想通过...

nginx TCP转发配置

nginx1.90对TCP协议的代理并不是默认开启的,需要在编译的时候配置 --with-stream 参数 进入原有nginx源码目录 ./configure --prefix=/usr/loc...

Nginx配置实现基于tcp协议的反向代理和负载均衡

1.安装环境 系统环境:centos6.3_x64 软件版本:nginx-1.4.2.tar.gz  nginx_tcp_proxy_module-master.zip 2.软件安装 ...

nginx TCP 转发配置

今天有客户需要增加移动线路,但机房刚好移动线路还没有开通,试用了一下转发。效果还不错 客户需求是 服务器只做TCP服务,对应的是7000 7001 7002 7003 转发 先在移动机房增加一台CEN...

nginx中获取真实ip

server {         listen       80;         server...

iptables NAT+squid实现透明代理

iptables 设置(NAT和ip限制,80转发,需要有ip文件ip2.txt): intra="192.168.0.0/24" myip="219.217.235.73" myDNS="202...

Ubuntu编译运行Redsocks2实现透明代理

redsocks1有bug,不能关闭已建立的连接,一旦超越linux的最大限制,就会报“Too many open files”异常,导致服务瘫痪,需要每隔一段时间进行重启 在我的使用还发现redso...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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