"如何翻墙"系列:关于 TOR 的常见问题解答

TOR 是一个很老牌的翻墙工具,也是俺在博客中推荐的第一款翻墙工具——当时正赶上朝廷的60大寿,GFW 加强封锁,俺就写了一篇《"如何翻墙"系列:戴"套"翻墻的方法》,算是 TOR 的入门教程。
  
4年过去了,虽然新的翻墙工具不断涌现,但 TOR 的影响力和用户数仍然持续增加——很多人不仅仅是用 TOR 来翻墙,更是用 TOR 来隐匿自己的上网行踪。在这期间,俺也收到很多读者来信/博客留言,询问关于 TOR 的各种问题。甚至有热心读者建议俺专门写一篇博文,聊聊 TOR 的高级话题。

为了帮大伙儿更好地使用 TOR,今天再发一篇教程,解答 TOR 的各种常见问题。

不见图 请翻墙

★TOR 是什么?


TOR 是洋文 (The Onion Router)的缩写,中文又称"洋葱网络/洋葱路由"。简单而言,这是一款专门设计用于隐匿上网身份的工具。

TOR 的官网在"这里"。关于 TOR 的更详细介绍,请看维基百科的"这里"。

★哪些网友需要使用 TOR?


前面说了,设计 TOR 的主要目的是为了上网隐匿身份。所以,跟其它的翻墙工具不同——它的重点功能是"隐 匿性","翻墙"只是顺带的功能。

具有如下特点的用户,可以考虑使用 TOR。

◇为了隐匿自己所在的国家


比如有些视频网站为了版权的原因,会限制某些国家的IP,那么你可以利用 TOR 来伪装成别国的网民,就可以绕过视频网站的版权限制。

◇为了隐匿自己的公网IP

比如你想在网上发布敏感的政治言论,那隐匿公网IP是避免被跨省追捕的必要条件。(提醒一下:隐匿公网IP只是必要条件,不是充分条件,要避免被跨省,需要考虑多个层面的防范,具体请看《如何隐藏你的踪迹,避免跨省追捕》系列博文)。
  
像俺这种长期抹黑朝廷的博主,TOR 是上网的必备工具。俺即使访问国内网站,也要走"基于TOR的多重代理"。(关于"多重代理"后面还会提到)

◇为了保护隐私

刚才已经说了 TOR 的特点,在隐私保护方面,TOR 优于其它的翻墙工具。为了说明 TOR 在隐私方面的优点,拿 TOR 跟 VPN 做一个对比。

很多网友使用 VPN 翻墙,而且长期使用固定的 VPN 提供商。万一 VPN 提供商在 VPN 服务器上记录你的上网行为,那你的所有上网行踪就暴露无遗。

而如果使用 TOR,就可以大大降低这种风险——具体原因,下面会聊。

★软件安装方面的问题

◇Vidalia 跟 TOR 是啥关系?

TOR 本身只提供命令行,没有图形界面。Vidalia 是专门为 TOR 量身打造的图形界面。

在 Vidalia 的图形化界面上,你不但可以配置各项参数,还可以监控 TOR 的流量和 TOR 的线路(后面会提到)。

◇如何获取 TOR 的软件包?

关于这个问题,在 2009 年的入门教程《"如何翻墙"系列:戴"套"翻墻的方法》中已经介绍过,此处不再罗嗦。

◇应该选择哪个安装包?

先说明一下,TOR 是跨平台的。同时支持主流的:Windows、Linux、Mac OS X。

在 TOR 官网有两个下载页面,分别如下:

https://www.torproject.org/download/download-easy.html.en
(这个是面向菜鸟用户的,每个操作系统只提供一个下载链接)

https://www.torproject.org/download/download.html.en
(这个是面向高级用户的,每个操作系提供多种软件包供你选择)

后一个链接提供的 多种选择,俺稍微解释一下。

Tor Browser Bundle
这个软件包捆绑了 Firefox 浏览器(对于2.3.25之后的版本,监听端口改为9150)。
Vidalia Bridge Bundle
这个软件包没有捆绑 Firefox,是用来搭建一个网桥(监听端口是9050)。
Vidalia Relay Bundle
这个软件包没有捆绑 Firefox,是用来搭建一个中继节点/中转节点(Relay 和 Bridge 的区别,下面会说)。
Vidalia Exit Bundle
这个软件包没有捆绑 Firefox,是用来搭建一个出口节点(啥是"出口节点",下面会介绍)。
Expert Bundle
这个软件包是面向高级用户,只有赤裸裸的 TOR,没有其它额外的东西(没有图形界面)。

估计很多人都不习惯使用 TOR 内置的 Firefox 浏览器。这种情况下,你可以考虑使用 Vidalia Bridge Bundle 这个软件包。它比较小(不到10兆),而且你可以在自己的浏览� ��上设置代理,不需要使用 Tor Browser Bundle 内置的 Firefox。

◇Bridge 和 Relay 有啥区别?

Bridge 中文就是"网桥"。tor 的网桥是一种特殊的中转节点。它跟其它中转节点的差异在于:普通的中转节点,其信息会被加入到 TOR 在全球的目录服务器,所以普通的中转节点会被所有的人看到,并用来进行流量中转。

而你自己搭建的网桥,其信息不会被加入到全球的目录服务器——只会被你自己所用。

◇Linux 用户如何获取软件包?

因为 TOR 的名气大,那些主流的发行版基本上都提供 TOR/Vidalia 的软件包。如果你用的是主流的发行版,直接用系统的软件包管理工具,就可以自动安装/自动升级 TOR 和 Vidalia。

★浏览器方面的问题

◇如何配置浏览器的代理?

(如果你使用的是 Tor Browser Bundle 内置的 Firefox,就无需再额外配置浏览器代理了)早先的 TOR 客户端同时提供 HTTP 代理和 SOCKS,大概从 2013年开始,新版本的客户端不再提供 HTTP 代理了。所以原先的 8118 代理端口也就废弃了。
  
今后大伙儿需要用 TOR 提供的 SOCKS 代理来上网,端口号如下:
9150(2.3.25版本之后的 Tor Browser Bundle 软件包)
9050(其它的软件包)

Firefox的代理设置如下图(至于 Chrome、IE、或其它浏览器,列位看官请依样画葫芦):

不见图 请翻墙

(顺便说一下:SOCKS 代理其实比 HTTP 代理更好,关于两者的差别,俺抽空写一篇扫盲)

◇如何判断自己的浏览器是否在走 TOR 的线路?

TOR 官网提供了一个测试界面,网址是 https://check.torproject.org/ 猛击该超链接,会打开一个界面。

如果你的浏览器已经在使用 TOR 的线路,会出现一个绿色洋葱头,以及一行绿色的洋文提示。
  
如果你的浏览器没有走 TOR 的线路,会出现一个带红色打叉的洋葱头,同时还有一行红色的洋文警告。

◇Tor Browser Bundle 内置的 Firefox,有啥特殊之处?

这个内置的 Firefox 跟普通的 Firefox 有如下几个差异:

1. 版本差异

这个内置的 Firefox 采用 Mozilla 官方提供的长期支持版本(洋文叫 ESR),而不是最新版本。
因为最新版本总是会增加很多新功能,可能会引入潜在的安全漏洞;而 ESR版本 相对而言比较稳健。

2. 配置差异
这个内置的 Firefox 专门进行了一些安全方面的定制(比如禁用 JavaScript)

◇为啥 Tor Browser Bundle 内置的浏览器无法看视频?

因为这个内置的浏览器没有装 Flash 播放插件。而大多数视频网站需要 Flash 插件来播放视频。

★隐私方面的问题

这一节是本文的重点,看仔细喽。

◇TOR 客户端如何建立联网的线路?


如果你比较好奇,为啥 TOR 的隐匿保护好于其它翻墙工具?那么有必要了解一下 TOR 客户端的联网机制。下面这三张图来自 TOR 的官网。因为图片中是洋文说明,俺稍微修改了一下,注上中文。


不见图 请翻墙

第1图:当 TOR 客户端启动之后,会首先连接 TOR 的目录 服务器。从目录服务器中获取全球的 TOR 节点信息。

不见图 请翻墙

第2图:假设你要访问 网站1,那么 TOR 客户端会随机挑选三个节点用于中转。

为了打字方便,俺把这三个节点分别称为:

入口节点

如果你仅仅使用 TOR 联网,该节点直接跟你的电脑相连;如果你使用双重代理,入口节点跟你的前置代理相连。

中间节点

介于入口节点和出口节点之间(这个节点的威胁最小)。

出口节点

该节点直接跟你访问的目标网站相连(这个节点的威胁最大)。

这三个节点中,只有"出口节点"会看到你的"上网行为"(图中标红色的线,表示 TOR 节点会看到"原始流�量")。

所谓的"上网行为"包括:你访问了哪个网站,你从网站传输的流量。

如果这个网站使用加密的 HTTPS 协议,"出口节点"看到的"原始流量"是 HTTPS 的密文,没啥关系;反之,如果这个网站使用明文的 HTTP 协议,那么"出口节点"会看到你从该网站发送/接受的内容(这是主要风险点)。
除了"出口节点",其它节点完全无法知道你的上网行为(图中标绿色的线,表示 TOR 节点看不到"原始流量")。

不见图 请翻墙

第3图:TOR 为了加强隐匿性,会动态变化中转线路。也就是说,每隔一段时间(约10分钟),就会随机挑选三个节点,重新构造一条传输线路。

因为线路动态变化,"出口节点"自然动态变化。所以,即使"出口节点"偷窥你的上网行为,也只能看到一个短暂的片段。

◇TOR 节点是否会偷窥到自己的隐私/上网行为?

如果你弄懂了前一个问题的三张原理图,那你自然就知道,只有"出口节点"会看到你的上网行为

◇如何避免 TOR 节点看到你的上网行为?

前面说了,"上网行为"包括两部分:

1. 你访问了哪个网站
2. 你从网站传输(发送、接受)的流量

对于第1点,是无解的!

不管采用哪种工具来隐匿行踪,最终,你都需要有某个"主机"帮你把数据送到你要访问的网站。所以,这个"主机"必然就知道你访问了啥网站。

对于第2点,是有解的。

主要方法就是:尽量采用 HTTPS 协议。比如像维基百科,同时支持 HTTP 和 HTTPS。那么你就应该采用 HTTPS 方式访问。这种情况下,TOR 的"出口节点"只知道你访问了维基百科,但是无法知道你访问了哪个页面。

◇如何知道正在使用哪些中转节点?

关键是看 Vidalia 的"网络地图"。在 Vidalia 的主界面(控制面板)上,直接就有"网络地图"的按钮。你点了这个按钮之后,会出现如下界面。

相关的说明,俺已经标注在图中。

不见图 请翻墙

在右下方的那个框中,会列出线路中的三个节点,依次是:入口节点、中间节点、出口节点。

◇什么是"陷阱节点"/"蜜罐节点"?

某些国家(比如咱们天朝)的政府会设置"蜜罐节点"。所谓的"蜜罐节点",通俗的说,就是陷阱。
 
如果你使用的线路中,"出口节点"正好是蜜罐,那么该蜜罐就会窥探到你的上网行为——前面已经说了,出口节点肯定会知道你的访问了哪个网站。并且,假如你访问的目标网站没有 HTTPS 加密,蜜罐就会知道你浏览的页面内容。

◇如何避免"陷阱节点"/"蜜罐节点"?

比较简单的做法,就是通过修改 TOR 的配置文件,规避这些不安全国家的节点。

对于天朝的网友,你至少需要屏蔽"大陆、香港、澳门"这三个节点。因为这三个地区都可能被六扇门设置蜜罐。

TOR 的配置文件名叫 torrc,这是一个文本文件,用记事本就可以打开。(如果你找不到该文件,在系统盘中搜索一下 torrc 这个文件名)

在该文件末尾,加入下面这行(ExcludeNodes 表示排除这些国家/地区的节点,strictnode 表示强制执行)。
ExcludeNodes {cn},   {hk},{mo}
strictnodes 1

关于 strictnode,俺补充说明一下:

如果不设置 strictnode 1,TOR 客户端首先也会规避 ExcludeNodes 列出的这些国家。但如果 TOR 客户端找不到可用的线路,就会去尝试位于排除列表中的节点。

如果设置了 strictnode 1,即使 TOR 客户端找不到可用的线路,也不会去尝试这些国家的节点。

除了上述三个地区,还有几个国家跟天朝串通一气。如果你对安全性的要求比较高,可以把这些国家也列入 TOR 的排除节点列表。

下面给出这些流氓国家的代码,你依样画葫芦加入到 ExcludeNodes 那一行,国家代码之间用逗号分隔。

北朝鲜  {kp}
伊朗  {ir}
叙利亚  {sy}
巴基斯坦  {pk}
古巴  {cu}
越南  {vn}

◇TOR 的加密流量能否被破解?

根据斯诺登曝光的材料,NSA 目前具备的运算能力,可以解密很大一部分 TOR 流量。

因为目前的 TOR 中继服务器,大部分还在使用 1024 位的 DHE 密钥,这类密钥虽然普通人难以破解,但是 NSA 掌握的运算能力可以在几小时内暴力破解。目前只有 10% 左右的中继服务器采用 ECDHE 密钥(基于椭圆曲线)。这类 ECDHE 密钥 NSA 比较难破解(更多介绍请看"这篇报道")。

至于天朝方面,肯定没有 NSA 这么牛的破解能力。所以天朝的同学们,咱们暂时还不用担心这个问题 :)

另外,等到大部分中继服务器升级到 2.4 版本,ECDHE密钥 的使用就会普及,到时候这个风险会减低。

◇啥是流量关联分析?

先声明:流量关联分析有很 多种。这里说的是"针对TOR的流量关联分析"。

"关联分析"是数据挖掘的一种手段——先积累足够多的数据,然后通过某种算法找出数据之间的某些相关性特征。考虑到数据挖掘不是本文的主题,就不深入介绍了。

简单而言,如果某个攻击者能够监控你接入 TOR 网络的流量(入口节点之前的流量)以及你离开 TOR 网络的流量(出口节点之后的流量)。那么经过足够长时间的数据积累,攻击者就可以利用数据挖据猜测出:某些网络行为其实是来自某个公网IP的用户。

  举例:
如果你仅仅使用 TOR(没用双重代理)联网,然后经常到 A网站 发敏感言论。
假设1:
如果 GFW 对所有的 TOR 流量都做了记录(这只是假设,到底有没有,俺不晓得)
假设2:
A网站 对所有的用户留言做了记录(很多的国内网站都会记录)
假设3:
朝廷可以获取 A网站 的用户访问记录(只要是国内网站,朝廷肯定能拿到;至于国外网站,要看情况)
假设4:
朝廷针对 TOR 部署了关联分析的系统(这只是假设,到底有没有,俺不晓得)

如果上述这 N 个假设同时成立,那么,经过足够长时间的积累(具体需要多长时间,取决于你发帖的频繁度),关联分析系统可以猜测出你是谁。

◇如何规避(针对TOR的)流量关联分析?

要规避"针对 TOR 的流量关联分析",目前最直接有效的方法是:多重代理。因为一旦用了多重代理,TOR 的流量类型就被掩盖掉了。

比方说:如果你使用 VPN+TOR,那么你的 ISP 监控你的流量,看到的是 VPN 流量——(因为 VPN 加密)ISP 看不到你的 TOR 流量。在这种情况下,流量关联分析 的难度大大提高了。

除了"针对 TOR 的流量关联分析",还有其它的流量分析技术。考虑到篇幅,就不深入介绍了。等俺有空,单独写一篇博文,专门聊这个话题。

★双重代理方面的问题

如果你对"双重代理"还不太了解,请先看俺之前的博文《如何隐藏你的踪迹,避免跨省追捕[5]:用多重代理隐匿公网IP》。

◇为啥要使用双重代理?

俺总结了如下几个原因:

原因1

因为 TOR 的影响力很大,GFW 对 TOR 进行重点封杀。全球大多数的 TOR 中继节点都被 GFW 列入 IP黑名单。所以天朝的网友,如果单独使用 TOR,很难联网成功。这种情况下,就需要使用双重代理。

原因2

所有的软件都可能有缺陷(TOR � ��不例外)。如果你仅仅使用 TOR,万一 TOR 出现安全漏洞并且被攻击者利用,那么攻击者就有可能对你进行逆向追溯(说不定能追溯出你的真实公网IP)。

而如果使用多重代理,即使出现上述风险,攻击者也只能追踪到 TOR 的前置代理,而不会直接追踪到你本人。这样一来,风险大大降低。

原因3

前面提到,全球的 TOR 网络中可能会有陷阱节点。虽然你可以利用俺刚才介绍的方法,排除危险国家/地区的节点,但并不能确保万无一失。

比如说你碰到某个小概率事件——你使用的线路上,碰巧三个节点都是陷阱——这种情况下,你的真实公网IP会暴露。

但如果你用了双重代理,即使碰到这种小概率事件,只会暴露你使用的前置代理服务器的IP,而不会暴露你的本人的公网IP。

举例:
一个月前,美国地下网络"丝绸之路"的站长被 FBI 逮捕。他一直使用 TOR,为啥会暴露?
因为他没有使用双重代理。而 FBI 利用 NSA 的技术(据传闻是流量关联分析技术),再加上 FBI 本身也设置了蜜罐节点,最终定位了"丝绸之路"站长。
原因4

刚才介绍了针对 TOR 的"流量关联分析"。如果你使用双重代理,会降低被关联分析的风险。

◇哪些工具可以跟 TOR 组合双重代理?

大部分翻墙工具都可以跟 TOR 组合。比如:所有的 VPN,无界、自由门、赛风、世界通、等等。

另外,你也可以使用公网上的一些代理服务器(公共代理),用来跟 TOR 组合成双重代理。前提是:这些"公共代理"支持 HTTPS 代理或 SOCKS 代理。

如何用 TOR 组合"公共代理",请看《2012年9月翻墙快报(兼谈复活TOR的方法)》。

◇为啥 GAE 翻墙工具无法跟 TOR 组合成双重代理?

貌似 GAE 的翻墙工具,都只提供 HTTP 代理,没有提供原生的 HTTPS 代理。而 TOR 客户端需要使用 HTTPS 跟中转节点进行数据传输。

◇为啥 GoAgent 无法跟 TOR 组合成双重代理?

GoAgent 也是 GAE 翻墙工具的一种,请参见前一个问题的解答。

★其它方面的问题


◇为啥要使用虚拟机?

虚拟机是为了进行网络隔离,确保你本机的软件总是经过代理联网,而不会直接联网——直接联网可能会导致你的公网IP暴露。

具体的原理图,请看《如何隐藏你的踪迹,避免跨省追捕[6]:用虚拟机隐匿公网IP原理介绍)

举例:
前几个月,美国 FBI 为了打击儿童色情,逮捕了 TOR 匿名托管服务 Freedom Hosting 的负责人。然后 FBI 在该服务器上设置了木马。
该木马会利用 TOR 内置的 Firefox 浏览器的一个安全漏洞,来收集 TOR 用户的真实公网IP。
(木马会向 FBI 的服务器发送一个信息,FBI 的服务器就会记录下发送端的 IP。如果没有虚拟机,这个直接联网的企图就得逞了)。

如果你之前没用过操作系统虚拟机,可以先看俺写的系列教程《扫盲操作系统虚拟机》。

◇啥是 obfs / obfsproxy?

这玩意儿也是 TOR 官方提供的工具,主要是用来混淆 TOR 的流量。

因为 TOR 的名气太大了,很多网络监控系统(比如天 朝大名鼎鼎的 GFW)可以根据网络传输内容,判断该流量是否为 TOR 的流量。如果是 TOR 流量就进行阻断。
(请注意:"判断流量类型" 不等于 "解密内容")。

为了应对这类威胁,TOR 官方提供了一个额外的工具,用来混淆流量,让监控系统识别不出。原理图如下:

不见图 请翻墙

虽然有 obfsproxy 这个工具,但是俺本人不提倡用它——俺依然提倡用双重代理。双重代理的优点刚才分析过,此处不再罗嗦。

★结尾

本文写得有点仓促,涉及的问题未必覆盖到方方面面。如果你觉得本文还有哪些问题没有覆盖到,欢迎到俺博客留言。

俺博客上,和本文相关的帖子(需翻)
如何翻墙(传说中的翻墙入门教程,不定期更新)
"如何翻墙"系列:戴"套"翻墻的方法
如何隐藏你的踪迹,避免跨省追捕
扫盲操作系统虚拟机

版权声明

本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者"编程随想"和本文原始地址。

学习翻墙

用国外邮箱发信给help_gfw@yahoo.com即可收到翻墙教程
如有其它问题,用program.think@gmail.com联系俺
发表评论