Tor meek 命令行配置

什么是Tor?

Tor 即The Onion Router,是使用洋葱路由实现匿名通信的软件。The Tor Project是一个非营利(慈善机构)组织负责维护和开发Tor软件。下面是在其网站上对Tor的介绍。

Tor是一个可以在您的计算机上运行的程序,可以帮助您在Internet上保持安全。它通过在世界各地的志愿者运行的分布式中继网络进行通信来保护您:它可以防止有人观看您的互联网连接,了解您访问的网站,并防止您访问的网站了解您的实际位置。这套志愿者中继被称为Tor网络。大多数人使用Tor的方式是使用Tor浏览器,这是一个修复许多隐私问题的Firefox版本。您可以在概述页面上阅读有关Tor如何工作的更多信息。

Tor官方建议使用Tor Browser,但是我不想在电脑中多存在一个浏览器。

桥接中继

桥接中继(或者简称“桥接”)是未在主Tor目录中列出的Tor中继。因为没有完整的公共列表,即使您的ISP正在过滤所有到已知Tor中继的连接,它们也可能无法阻断所有桥接。如果您怀疑Tor网络正被阻止访问,则您可能需要使用桥接。

配置桥接

例如,当您从https://bridges.torproject.org获得桥接时,您将获得如下所示的桥接条目:

1
141.201.27.48:443 4352e58420e68f5e40bf7c74faddccd9d1349413

第一个元素是桥接的IP地址:'141.201.27.48'
第二个元素是端口号:'443'
第三个元素,指纹(桥接的唯一标识符)是可选的: '4352e58420e68f5e40bf7c74faddccd9d1349413'

Pluggable Transport

在过去几年中,即使客户使用桥接,审查机构也已找到阻止Tor的方法。他们通常通过在ISP上安装专用盒子来实现这一目的,这些盒子可以窥视网络流量并检测Tor; 当检测到Tor时,它们会阻止流量。

为了规避这种复杂的审查,Tor引入了 可插拔传输系统(Pluggable Transport)。这些传输操纵客户端与其第一跳之间的所有Tor流量,使其无法识别为Tor连接。如果审查者无法确定连接是否是Tor连接,那么他们就不太可能阻止它。

遗憾的是,如果审查者有足够的时间,可插拔传输系统也不能免于检测。过去,我们将obfs和obfs2提升为安全传输。这些现已弃用,并被obfs3,scramblesuit,fte和obfs4取代。

以上内容翻译自The Tor Project关于桥接的文档.

目前Tor 中常用的可插拔传输系统如下:

ScrambleSuit

ScrambleSuit是一种规避审查制度的多态网络协议,是另一种看似统一随机字节的传输。 它相比obfs3有几个改变:它随机化数据包的大小和时间,服务器通过在响应之前要求客户端的密钥来阻止主动探测。 十六进制转储看起来像您期望的随机噪声。

OBFS4

这是TCP的混淆层协议。其目的是防止第三方根据消息内容得知正在使用的协议。obfs4尝试提供身份验证和数据完整性,但它仍然主要围绕为现有的经过身份验证的协议(如SSH或TLS)提供一层模糊处理。该协议有两个阶段:在第一阶段,双方都建立密钥。在第二,双方交换超级加密的流量。

FTE

FTE,即Format Transforming Encryption 格式转换加密传输,它利用格式转换加密,可将明文转换为符合预定义格式的密文,通常是转换为另一种协议的格式。因此,它能编码数据使其匹配任意的正则表达式。这个想法是因为审查硬件使用正则表达式将流量分类为允许和不允许的类别。就正则表达式而言,FTE使您的流量看起来像允许类别中的某些内容。

meek

meek是一种Pluggable Transport,是Tor的一个混淆层,旨在逃避互联网审查。流量通过很难限制的第三方服务器进行中继,例如通过CDN。它采用了一种名为domain fronting的技巧来与Tor中继通信,进而去跟另一个域通信。

Tor当前内置的meek是meek-azure也即让您看起来像是在和Azure服务器交互(但是您实际上在和Tor网络进行交互)。参见这里

以上介绍均翻译自Tor的官网文档。

Tor命令行配置

因为国内的特殊网络环境,我们需要使用meek桥接来使Tor在国内可以使用。

下载 Tor 命令行版

官网上的这个页面。选择Source Code下载适合你的版本。

解压,然后:

1
2
./configure
make

然后我们可以通过tor使用了。

安装 meek

meek 使用Go语言编写,所以首先你需要安装Go语言。如果你还没有安装Go,请参照这里

下载Meek代码:

1
2
3
4
git clone https://git.torproject.org/pluggable-transports/meek.git
cd meek/meek-client
go get
make

make得到产物 meek-client

配置meek

参照meek-client 文件夹内的 torrc 文件,修改您的torrc配置文件。

meek-client的文件夹里,就已经有一个配置好的torrc文件,里面放了两个默认的meek节点。

1
2
3
4
5
6
7
8
9
UseBridges 1

# Socks4Proxy localhost:1080
# Socks5Proxy localhost:1080
# HTTPSProxy localhost:8080

Bridge meek 0.0.2.0:2 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com
Bridge meek 0.0.2.0:3 url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
ClientTransportPlugin meek exec ./meek-client --log meek-client.log

没有使用代理,而是添加了两个使用meek插件的桥接。我们可以通过下面这样来启动Tor:

1
tor -f torrc

此时你会看到Tor提示在127.0.0.1:9050启动了Socks,实际上是Socks5代理;接下来便可以在Firefox或其他浏览器的设置界面配置代理了。

检查是否通过 Tor 发出请求,访问: check.torproject.org

通过Tor发出的请求花费的时间确实比较长,而且有时会出现超时的情况。