“在代理人的帮助下,我们来到了自由的互联网”(1)

做为一名优秀的翻墙党党员,诸位一定很熟悉一个词:代理服务器(Proxy Server)。很多人最先就是在免费代理服务器[1]的帮助之下第一次看到了真正的互联网是什么样的。

那么代理服务器是怎样让我们看到真正的互联网的呢?代理服务器和翻墙软件之间又是什么关系呢?

事实上所有的翻墙手段都可以概括为这么一个过程(那些仅仅对付了DNS污染的部分翻墙手段不算在内):本地客户端发起通往远程服务器的连接,远程服务器再把用户请求发送给目标网站,再把目标网站的响应传回客户端。这个远程服务器,就是所谓的代理人:A告诉代理人“我想向B询问现在几点”——》代理人找到B,问“现在几点了?”——》B告诉代理人“现在是晚上8点”——》代理人再告诉A“B说现在是晚上8点”。这一过程中,B认为是代理人来请求查询时间的,不知道A的存在(不过也不一定,A的真实身份是有可能泄露出去的[2])。代理人会对A发来的数据包进行处理,把原先的头部重写,把源地址换成自己的IP地址,然后再把数据包发给B,从而让B以为访问者是代理人。

看起来,远程服务器就是代理服务器,所有翻墙软件(也可以叫做代理)都要依靠代理服务器才能正常运行。不过请注意一点:“代理”一词并不包括VPN,因为两者从一开始的诞生目的就不一样:代理是用于进行内容监视和过滤(对于代理服务器的控制者而言),绕过防火墙以及匿名(对于使用者而言,通常都是个人使用者)的;而VPN则是为企业准备的,目的是搭建一条虚拟的专线供企业通信使用。

那么就来看看究竟有哪些类型的代理吧:

1,NAT[3](Network Address Translation,网络地址转换):很惊讶吧,NAT就是一种代理,而NAT box就是一种代理服务器。其实简单想一下就能明白:客户端实际拥有的是内网IP,而客户端访问目标网站的时候,目标网站看到的是NAT box的公网IP,这完全符合代理的定义啊。

“对了,我一直有一个疑问:一个人使用代理的情况很好理解,但如果这个代理有很多人都在用,特别是不同的客户端同时请求访问同一个网站的时候,代理服务器是怎样搞清楚目标网站传回的数据包分别是谁的?不会送错吗?”

“我说,你参考一下NAT不就好理解了吗,不过这也是要看情况的:每个客户端的Tor电路里的cell是有独一无二的CircID的[4],这样就能搞清楚谁是谁了,I2P估计也是类似的原理(PS:不影响匿名,因为大家都是密文,你也不知道谁干了些什么啊);而其他的一重代理就是类似于NAT box了:相同的IP,不同的端口,有一张table进行映射,由此来区分谁是谁啊(所以如果代理服务器不靠谱,匿名就会被完全破坏,代理服务器在明文情况下可是很清楚谁是谁的)”

2,反向代理[5]:正常的代理是客户端通过代理服务器的中转再访问目标网站服务器的,而反向代理则是这样:客户端首先连接到反向代理服务器上,反向代理服务器装成服务器端(客户端以为它就是网站),然后再访问其他网站服务器把用户请求的内容拿来(网站服务器也可以当反向代理服务器)

今年一开始GFW就进行了重大升级,通过DNS污染把撞墙的人引导到了其他的网站上[6],这下可苦了那些网站的管理员们。其实有一个好办法:在网站服务器上设置反向代理,对中国IP提供人权观察大赦国际无国界记者等“反动网站”的网页内容,看看GFW还敢不敢造次:)

3,透明代理[7]:所谓透明代理就是工作在网络层,不修改中转数据,不需要客户端进行任何设置即可正常工作的代理,客户端都不会感觉到代理的存在。啊,听起来没法用来翻墙或匿名,起到的作用就像是网关或路由器一样,纯粹进行了一下转发而已。

不过还是有用的,可以用来防止TCP SYN flood攻击:TCP连接通过three-way handshake建立,第一步就是发送SYN报文,然后目标服务器向客户端发送SYN+ACK报文,等待客户端的ACK报文[8];要知道服务器的发送和等待都是要消耗资源的,那么如果有一个攻击者故意在短时间内发送极大量的SYN报文,那么服务器就会不堪重负从而无法与合法用户建立连接,这就是所谓的DoS(Denial-of-Service,拒绝服务)攻击。而如果设定目标网站必须通过透明代理访问,而透明代理服务器又对并发TCP连接请求数做了限制,那么攻击者就无法得逞了。

4,开放代理[9]:开放代理就是那种任何人都可以连接的代理,基本上免费代理都是开放代理。而对应的,那种需要客户端身份认证(输入用户名密码或者需要证书)或者限制IP的代理就是封闭代理了。

5,DNS代理:DNS代理负责将DNS查询请求通过代理服务器转发然后访问DNS服务器进行查询,可以用来对付DNS污染和DNS劫持[10](前提是客户端到代理服务器的这段路上要加密)

6,网页代理:形式是一个网页,提供一个URL输入框,只要输入URL就可以看到被封锁的网页。有加密的也有不加密的。

啊,好像已经说了很多了,那么这三位就留到下一篇吧:CGI代理,HTTP代理,SOCKS代理

科普文链接集合:https://plus.google.com/109790703964908675921/posts/TpdEExwyrVj

参考资料:
1,http://www.cnproxy.com/proxy1.html
2,破坏匿名的凶手——WebRTC
https://plus.google.com/109790703964908675921/posts/1KjRdwo3jid
3,SSL/TLS的原理以及互联网究竟是如何工作的(6)
                                                                    ——嘿,我是IP!
https://plus.google.com/109790703964908675921/posts/8GLWQxp5yJN
4,Tor: The Second-Generation Onion Router
https://svn.torproject.org/svn/projects/design-paper/tor-design.pdf
5,https://en.wikipedia.org/wiki/Reverse_proxy
6,http://www.chinagfw.org/2015/01/gfwdns.html#links
7,https://en.wikipedia.org/wiki/Proxy_server
8,GFW的工作原理(4)
                                ——“连接被重置!”
https://plus.google.com/109790703964908675921/posts/Hwcm9QURSYh
9,https://en.wikipedia.org/wiki/Open_proxy
10,GFW的工作原理(2)
                                 ————不靠谱的DNS,总是被钻空子
https://plus.google.com/109790703964908675921/posts/Wqz2qrXdyqs

原文:https://plus.google.com/109790703964908675921/posts/5kWkXKdysQz

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s