Total Pageviews

Tuesday, 2 October 2018

浅析正向、反向、透明代理

一般我们上网,都是插上网线即可,顶多需要拨号。但是在企业应用上网络的环境可能就要复杂的多,这是一般家庭网络所无法体会的。所以,代理这个功能就应运而生了。
在维基百科上的定义是这样的:
代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。
一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
在代理当中,一般会把代理分为三种,即正向代理、反向代理还有透明代理。接下来,我们就依次818这些代理。

正向代理

正向代理就是我们接触最多的代理模式,一般来讲,很多企业以前(现在也有不少)是不允许员工随便访问外网的,有一些则是部分外网,如果你想要或者需要访问外网资源,那你很可能会希望在自己家里搭建一个代理服务器。这时候你就发现,正向代理一般都是 C/S 架构的,它通过客户端,将你要访问某站的请求打包,然后发给代理服务器,而代理服务器负责将你的请求发送给目标站。——通过这样的方式,便可以绕过防火墙的屏蔽了。
另外,如果你想悄悄地访问某站,不想让别人知道,你也可以使用代理,通过高度匿名的代理访问,这样你的踪迹就完全被隐藏了,别人只会找到代理服务器的访问信息而不是你的,从而达到了隐藏痕迹的目的。
由于需求的不同,就肯定催生了一批不同用途的代理,比如说我们最常见的HTTP代理、FTP代理、SSL代理等等。
哦对了,还有比较低层的socks代理,这个比较特殊一些,它不会关心你代理什么协议,它统统会将你的IP包撸走,不过,我们常用的 shadowsocks 虽然使用了sock5代理,但是对于UDP的支持并不是很完善。
正向代理又会根据高度匿名与否来区分:
  • 高度匿名代理
    这样的服务器会把你的数据包原封不动的来转发,就好像自己的一样;这样对目标站来讲,根本就会以为是代理服务器在访问它而不是你;
  • 普通匿名代理
    相对于高度匿名代理来讲,这样的服务器会被目标站认出来是代理服务器,因此很有可能还会追踪到你的真实IP
  • 透明代理
    这个其实不能和正向、反向代理并列,因为它是正向代理中的一种;它不会加密你的信息,而是明明白白的告诉目标站你是通过代理访问的!当然好处是允许缓存,以及一些规则来让你的访问变得更加安全——典型应用就是内网硬件防火墙上的透明代理。
    不过,我们常说的ss透明代理与此定义不同,前者表示相对电脑访问,代理是透明的;后者表示相对目标站点,代理是透明的。

反向代理

说完了正向代理,我们来818与之相对的反向代理,相对于正向代理来说,反向代理的技术含量更高一些,应用的范围也更加广泛,从小到你代理访问网站 ,大到网站内部负载均衡都会使用到这种技术。
其实这个技术最典型的应用是在服务后端。比如说某大型网站服务器有一台,然后后端负责计算的服务器有N台,其实真正的服务器在这N台服务器上,这N台服务器通过某些机制同步内容,然后前端的服务器只负责收发数据,那么前端接收到请求之后就会根据后台某服务器的空闲资源来决定将请求反向代理给谁,从而达到了负载均衡的目的。
比如说淘宝以前访问速度一般,后来就是革新了负载均衡的系统,对于反向代理都需要这个代理的过程。而淘宝把这个代理过程砍掉一半,也就是上文中的N台服务器中的某台收到前端的请求之后,并不会将数据返回给前端,而是直接反馈给了用户。(这个案例具体的忘记了,两年前朋友讲给我听的……求斧正。)
总之呢,后来这个反向代理就已经被人们给玩坏了,从搭建缓存服务器到钓鱼攻击,再到后来的变成了我们经常用的梯子……
它的特点就是绝对可以保护代理后边的东西,用户只能访问到代理服务器,而代理服务器后边发生的事情你绝对不会知晓,这样一来就让它变得很危险,这绝对是个黑箱。比如说用来钓鱼,悄悄篡改你的访问链接之类的,完全没有问题。所以,如果你要使用反向代理的梯子,那一定要找绝对信任的人提供的服务——或者干脆自己动手搭建一个只给身边的人用。
反向代理就讲这么多吧,它一般还是用在开发环境的多,反代的最大特点就是一个域名一个站,比如我们常见的那些谷歌的跨境反代,明明访问的是谷歌,但域名却不尽相同。还有其实你访问的淘宝、京东都是反代网站,只不过应用的技术更多,而且他们只反代他们自己的站点。

透明代理

前边讲过,透明代理本应该是正向代理的一个级别分支,但为什么还是要任性地将它单独拎出来扒一扒呢?正如上文所说,此透明代理非彼透明代理!
我们这里要讲的透明代理,特指装在我们家用小路由器上的各种代理,这样一来,就实现了电脑正常上网但实际上是被代理出去的效果——即相对电脑来说代理是透明的。
这样一来,就要把VPN囊括进来,说起VPN其实不属于代理,简单讲一句就是它们被开发出来的初衷不太相同,这么讲,你家、防火墙、公司这三个地方,虽然代理和VPN的手段都是穿墙,但代理的目的是从公司出去,而VPN则是从家里连到公司。
所以代理只会转发某些对应的数据包,而VPN则是在逻辑上让你“穿越”到了目的地,从而实现在那里上网。
不过,这对于我们的“透明代理”来讲都不重要,在路由器上使用透明代理,一般是使用socks5代理或vpn;通过特制的路由器让它们来实现代理,这样你上网所发出的数据包就会被路由器“自动”地代理。
你看相对你的电脑、手机、iPad来讲,这个代理是不是变得“透明”了呢?

No comments:

Post a Comment