1.1 概述
1. 代理服务器的定义
代理服务器(proxy server)是客户端和应用服务器建立的连接之间起媒介作用的服务器,可以是一台计算机,也可以是一个应用程序。客户端连接到一个代理服务器,提出访问其他服务器上资源或服务(比如文件,网页,连接等)的请求,代理服务器根据自己设定的过滤规则检验客户端的请求,如果请求符合过滤规则,代理服务器就连接被请求的服务器,转发客户端的服务请求,并把服务器的响应转发给客户端。
代理服务器可以放置在客户端上,或者在客户端和被请求的服务器,以及Internet 之间的任何位置,如图1-1所示。
图1-1 代理服务器
2. 代理服务器的分类
(1) 透明代理和非透明代理
按照IETF组织的RFC 2616文档给出的定义,代理服务器分成透明代理和非透明代理两种。
透明代理服务器不对请求和响应做非必要的修改,修改仅限于代理服务器身份认证和识别的需要。该代理服务器通常称为网关(gateway)或隧道代理(tunneling proxy)。客户端无需做任何设置,即客户端在不知情的情况下,发出的服务请求就被透明代理服务器直接转发到被请求的服务器。
非透明代理服务器可能修改客户端发出的请求,或者服务器的响应,以提供额外的服务,比如媒体类型转换等。代理服务器有时甚至不连接被请求的服务器而代为做出响应,这时一般是因为代理服务器已经对相应服务响应做了缓存。该代理服务器通常叫做逆向代理(reverse proxy)。逆向代理通常放置在一组应用服务器附近,所有来自网络的对这些应用服务器的请求都要先经过该逆向代理服务器,以提供SSL加密代理、负载平衡、内容缓存等服务,还能为网页服务器提供一定的安全保护。
(2) SOCKS代理和HTTP代理
HTTP代理是最常见的一种代理服务器类型,仅分析收到请求的HTTP头,因此只能代理转发HTTP数据流。其他还有FTP代理、HTTPS代理等,只能代理转发特定协议的数据。
SOCKS代理则使用一种握手协议将客户端和代理服务器连接起来,可用于任何TCP或UDP连接,也就是SOCKS代理也可用来转发HTTP、FTP、HTTPS等数据流等。SOCKS5代理服务器在将客户端的通信请求发送给真正服务器的过程中,对于请求数据包本身不加任何改变。SOCKS5代理服务器接收到真正服务器的响应后,也原样转发给客户端。
从协议的角度来说,SOCKS 是一种协助客户端/服务器类型的网络数据包通过代理服务器转发的网络协议,位于OSI模型的第五层——会话层(Session Layer)。SOCKS最初是由MIPS Computer Systems的系统管理员David Koblas 开发的,Koblas 在1992年的Usenix Security Symposium会议上发布了SOCKS。SOCKS有两个版本SOCKS4和SOCKS5,它们的主要区别是:
● SOCKS4不支持用户身份认证,而SOCKS5支持多种身份认证机制。
● SOCKS4不支持对UDP协议的代理,而SOCKS5支持。
● SOCKS4需要客户支持DNS,而SOCKS5的客户端可以依靠SOCKS5代理服务器查询DNS。
3. 代理服务器的用途
代理服务器有下列用途:
● 保护客户端的地址不泄露,使它在应用服务器看来是匿名的。
● 内容过滤,使客户只能获取指定类型的资源或服务。
● 加速访问速度,通常用于缓存网页,视频等信息。
● 监听客户端和外部网络的数据流。
● 代理服务器还可用来绕过一些限制性的代理服务器,使得用户获得比较高的访问权限。比如elgooG就曾经是一些地区的用户访问Google的代理服务器。
4. 使用代理服务器的风险
恶意的代理服务器可能获得登录名、口令等私密信息。中间经过多个代理服务器时,虽然被请求服务器不能获得请求客户的信息,但是客户有更多的痕迹留在中间的每个代理服务器上,可能被这些代理服务器利用来追踪客户的活动,而客户却错误地以为自己的隐私得到了很好的保护。因此,正确的方法是只使用有一定信用度的代理服务器,比如代理服务器的管理者是可信的,有清晰的隐私策略。如果没有选择或难以区分,在使用代理服务的时候不要通过代理服务器发送任何未经加密的隐私信息。
5. 代理服务器的使用设置
很多应用程序的客户端都可以设置使用代理,下面以最常用的浏览器(Internet Explorer 6.0及以上)为例介绍如何设置使用代理服务器。
● 单击Internet Explorer“工具”→“Internet选项”→“连接”。
● 如果使用的是拨号上网,单击“设置”进入“宽带连接设置”;如果使用的是局域网上网方式,单击“局域网(LAN)设置”中的“局域网设置”。
● 勾选上“使用代理服务器”,在“地址”和“端口”框内,分别填入代理服务器地址和端口号。如果需要,勾选上“跳过本地地址的代理服务器”。
● 如果网络对不同的服务(如HTTP、HTTPS、FTP或SOCKS)需要单独的代理地址,可单击“高级”按钮,然后键入要使用的单独代理服务器地址和端口。
● 单击“确定”,直到返回Internet Explorer。