匿名突破网络限制 (Tor工作原理分析)


转载自:http://blog.163.com/mike_gz/blog/static/247532200672932800/

网管顾名思义,就是天天管着网络、想尽各种手段限制我们上网的人。在网络中订立种种规则,不许下载、不许用IM、不许访问受限网站等,让我们无法尽情的享受Internet带给我们的乐趣。想不想神不知归不觉的突破这些限制,在网管眼皮子底下自由自在的上网呢?用The Onion Router(以下简称Tor)可以帮你实现这一切。

  一.纸上谈兵——Tor工作原理分析

  我们首先将对Tor的工作原理进行介绍。就像我们出门一样,去东边要走东城门,去西边就要走西城门。我们的软件与别人联系也要走城门(端口),如用QQ聊天时,你在QQ里打一行字,选择发送,QQ就会把这行字转为数据包裹送到城墙边上(防火墙或网关服务器),然后他会寻找第8000号城门(端口),并穿过这个城门,将数据发给你的好友。但是如果黑心的网管不希望你用QQ聊天,他可以关闭第8000号城门,这样你的数据包裹会被城门挡住,你的聊天信息也就发不出去了。为了解决这个问题,网上出现了帮助转发包裹的好心人(代理服务器)。例如,我们在QQ中设置代理服务器地址为:202.106.0.20,端口为:8080,则再用QQ发送信息时,QQ将包裹送到城墙边上后,不会再去8000号城门吃闭门羹,而是转走8080号城门,并将包裹送到网络上地址为:202.106.0.20的那台机器上,这台机器再通过它自己的8000号城门将信息转给你的好友。这个机器就叫做代理服务器。

  不过水平稍微高一点的网管,可以在端口上加入包过滤的功能。即他会安排哨兵把守所有城墙上的城门(防火墙或网关服务器端口),他们不再禁止你将数据包裹运到城外。但是,所有经过城门的包裹都必须经过他们的检查,他们会将所有的包裹都拆开,查找里边是否有敏感数据(如QQ的数据包裹可能会包含Tencent),凡是包含敏感数据的包裹都会被这些哨兵拦截,即使你使用代理服务器,也无法躲过哨兵的检查。

  为了解决这些问题,Tor诞生了,Tor的工作示意图如图1所示。图中标有“+”号的机器为Tor的转发点,这些转发点形成了一个内部的环路,这些机器之间的数据包裹发送都经过加密。你在机器上安装了Tor的客户端软件后,你再聊QQ的过程就变成了,你的QQ首先将数据包裹发给本机的Tor代理服务器,Tor会将这些数据包裹进行加密保护,然后再送到有哨兵把守的城门,由于数据包裹已经经过加密,所以哨兵无法看到包裹中的敏感信息,就只好放行。由于包裹加过密,无法直接发给你的好友,Tor会先将其发给Tor环路中的一个转发节点,并由这个节点继续转发。经过几次转发后,最后的一个Tor转发点会将你的数据包裹翻译成明文,并发给你的好友,你的好友的回复信息则按照原路返回。

  

图1 Tor工作示意图

  Tor的工作机制给我们带来两大好处,Tor自动维护网络中的转发节点,你不需要再花费精神去寻找网络上可用的代理服务器了;而且由于数据发送是加密的,霸道的网管员将无法再封杀你,也无法知道你发送数据的具体内容。

 二、安营扎寨——安装与配置Tor

  了解了原理,我们就开始实践一下吧,Tor分为客户端和服务器端,服务器端就是我们上边提到的转发点,客户端则用来连接服务器端,它也是我们用来匿名上网的好助手。

  1.安装Tor

  如果你只是使用Tor的客户端,则配置工作非常简单,运行下载下来的安装包,安装非常简单,一路Next即可,安装完成后双击桌面上的“Tor”快捷方式,此时会弹出一个命令行提示窗口,如图2所示。稍等片刻即可看到Tor成功建立环路的提示。

  

图2 Tor成功运行的提示

  此时Tor通常会连接3台网络上的转发节点,并在本地打开了9050端口的Socks5服务。当然连接服务器的数量和IP都会随着时间的变化而变化。如果你觉得总开这么一个黑窗口很难看,可以将Tor以后台服务的方式来运行,选择“开始→运行”输入:cmd,回车后打开命令行提示窗口,然后定位到Tor的安装目录,以默认安装为例,则输入:cd C:\”Program Files”\Tor或回车,然后再输入:

  tor -install

  tor -service start

  这样设置后,你每次开机,程序都会在后台运行,你可以在运行中输入:services.msc,在里边查看Tor服务的运行状况,输入:tor -stop可以停止服务;输入:tor -remove则可取消其按照服务的方式运行,但是你必须先停止手动这个服务。

  2.为Tor配置界面

  如果你觉得对着命令行的黑白窗口过于枯燥,你还可以尝试使用Tor的一些界面插件,例如:Tor Tray,下载软件后将其拷贝到Tor的安装目录,双击运行,即可在右下角看到Tor的图标,如图3所示,在这个图标上单击鼠标右键,即可选择运行或停止Tor。

  

图3 Tor Tray运行或停止Tor

  如果你觉得Tor Tray过于简陋,还可以尝试使用Tor Control Panel,它是Tor的一个图形控制界面,可以查看Tor的详细运行情况,以及流量等信息,安装过程也非常简单,唯一需要设置的地方就是,需要向软件指明Tor的安装路径,如图4所示。安装完毕后运行软件,即可看到Tor的运行日志,如图5所示。

  



图4 指明Tor的安装路径

  



图5 Tor Control Panel可显示Tor的详细日志

  设置完成后,我们就可以利用Tor提供的代理功能上网了,以MSN的设置为例,打开MSN Messenger,选择“工具→选项”,在弹出的界面左侧选择“连接”,然后单击“高级设置”按钮,在“SOCKS”中输入:127.0.0.1,端口输入:9050,然后单击“测试”按钮,测试连接是否成功,如果提示成功,则说明你的MSN可以借助Tor上网了。

三、一个好汉三个帮——Tor辅助工具

  比较让人郁闷的是,Tor只支持SOCKS代理协议,而我们的很多网络软件不支持SOCKS协议,或者干脆就不支持任何代理协议,这时我们就需要使用一些辅助工具以拓展Tor的功能。

  1.为Tor增加HTTP代理

  首先出场的是Privoxy,他可以帮助我们将HTTP代理协议转换成SOCKS代理协议,设置非常简单,首先安装Privoxy,运行软件,然后选择“Option→Edit main configration”,在弹出的配置页面顶端输入:forward-socks4a / localhost:9050 .(注意在9050后边还有一个英文的句号,不可省略),设置完成后重启一下Tor和Privoxy。然后再打开支持HTTP代理协议的网络软件,如:Firefox,在地址栏输入:127.0.0.1,端口使用:8118既可。测试Tor+Privoxy组合是否生效的方法是,访问网站:http://www.showmyip.com/cn/,如果左上角列出的IP地址与你实际的不符,则证明这个组合在正确的运行。  Privoxy会将你每一次对网络的访问操作都记录在它的日志当中,如果你的访问量较大,日志文件将非产大,我们可以里面可以关掉日志记录,具体操作方法是,选择“Option→Edit main configration”,搜索里边的:logfile privoxy.log和jarfile jar.log字段,在这两个字段前边加上#,这样Privoxy就不会自动记录日志了。

  2.让所有网软用代理

  但是并不是所有的网络软件都支持代理协议,很多网络程序干脆就不支持任何的代理。这是就需要SocksCap出马了,它可以让任何不支持代理的网络程序使用SOCKS代理协议,具体做法是,安装并运行软件,然后选择“文件→设置”,在“SOCKS 服务器”中输入:127.0.0.1,端口为:9050。然后将需要使用代理的网络程序图标直接拖入到程序的窗口中,如图6所示,选择“新建应用程序标识项…”,在弹出的窗口中单击“确定”,然后SocksCap会在其窗口中建立网络程序的快捷方式,在SocksCap中双击这个网络程序,其就会通过SOCKS代理来访问网络。

  

图6 设置程序使用SOCKS代理

  注意事项:

  Tor的功能非常的强大,它可以帮助我们突破几乎所有的网络限制,但是我们在使用的时候最好还是遵循一定的规矩:首先你不要将其用于BT下载等P2P应用,抛开合法性不谈,Tor的转发节点都是网络上的志愿者们使用自己的服务器和网络带宽建立起来的,如果通过Tor网络来进行巨额数据的传输,实在是非常的不厚道;垃圾电子邮件,Tor的加密功能可以帮助实现匿名电子邮件的发送,请不要使用这一功能发送垃圾邮件,给别人造成麻烦;恶意攻击,由于加密和层层转发的特性,通过Tor进行攻击很难被发现,为了Tor可以一直为我们服务,请不要将其用于这类违法活动。当然Tor在设计之初也考虑到这些问题,具备上述特性的网络活动很可能会在Tor的内部环路中被过滤掉,不会发送到外网去。

  至此Tor的主要用法就给大家介绍完了,如果你觉得上述设置比较麻烦,你可以下载Tor+Privoxy+SocksCap的三合一版本,这个版本用法非常简单,只需双击文件夹中的run.bat即可,无需任何其他的安装和配置,上述三个软件都将被安装并运行,非常简单。