博主喜欢折腾东西, 比如说好好的Tor Browser Bundle不用, 非要装一个纯的Tor来玩, 于是各种好玩的事情便纷至沓来。
关于Tor和Meek的基本介绍
TOR
Tor就不怎么说了, 都懂。 三层代理支持, 只有出口节点知道访问内容, 只有入口节点知道访问的IP。
纯Tor目前连接不上, 目录服务器被Block掉了。 导致的后果就是Tor无法直接连接Tor电路。
网桥
目前可用的办法是让Tor连接到中继网桥上, 中继网桥相当于跳板, 将客户端的请求转发到Tor电路中。
常规的中继网桥流量明显, 容易被盯上和封锁, 因此有了几款流量混淆插件。
obfs2/3/4, ScrambleSuit, 当然还有今天的主角Meek。
流量混淆插件可以将非常明显的Tor数据包伪装成普通的包, 防止被流量检测器盯上。
网桥存在问题在于经常会被动态Block, 由于正常用户需要通过各种方式获取可用的网桥信息, 博主猜是他们也用各种类似办法获取网桥, 一旦发现新的就统统干掉。
此外通过分析数据流量和目标地址, 估计也有一些办法可以判定某些目标地址是网桥节点, 只要被盯上就会被干掉。
归根结底就是网桥无法长期稳定使用。
Meek
最后是Meek。
Meek是最近一个牛逼虎虎的插件, 用Meek可以让Tor连接到被封锁的网络上。
Meek的原理简单来说是内容的欺骗, 首先把真正需要访问的地址(Tor网桥地址)塞进HTTPS包内部Header中, 在HTTPS包的外部把目标URL填写为没有被干掉的普通地址, 在传输的过程中由于目标地址正常, 所以数据包可以成功到达服务器。
到达正常服务器, 解析出HTTPS内容, 在包的内部Header中发现HOST字段, HOST字段指向了真正需要访问的被封锁的URL。 由正常服务器将包再次转发。 由于这时候包已经成功到达敌国, 在敌国的传输不会受到干扰, 因此数据包正常到达真正的目标服务器。
相当于拿一个正常的服务器作为跳板转发请求。
Meek现在据称还处于测试阶段, Tor的开发者们把Meek部署到三个大型的服务商里, 分别是亚马逊的AWS, 微软的Azure, 还有谷歌的GAE。 这些大型的服务商都提供了上述的HTTPS解析能力。
Tor的安装
最简单的办法是照着教程做, 直接从torproject上面拉最新版:
http://ift.tt/1uTD44M
源码编译也是可以的。 注意glibc之类的依赖, 博主手气不好, 手动编译经常失败。
Meek的下载和安装
从Tor的Git仓库中拉一个最新版本的代码:
git clone http://ift.tt/18zV4tZ
把代码搞到手之后就可以准备编译了。 代码是用go写的, 博主由于不认识go, 搞了很久才把客户端编译好。
这里需要了解的一点是meek-client是基于Tor的一个库写的, 在代码中也可以看到工程的头部引用了Tor的一个go库。 因此直接进入目录里编译的话会报错。
解决方案是让go拉取Tor的对应库:
go get http://ift.tt/1LrpvVo
当然在这之前还必须把环境变量配置一下, 例如GOPATH什么的。
最后进入meek-client编译:
go build
如果ok的话可以拿到一个叫做meek-client(没有任何后缀)的可执行文件, 拿出来用即可。
这里假设把meek-client放到/tmp/meek-client里。
Tor的配置
接下来需要配置Tor让它走meek通道, 编辑/etc/tor/torrc, 加入下述几行:
UseBridges 1 Bridge meek 0.0.2.0:1 url=http://ift.tt/1GTJ71P front=www.google.com ClientTransportPlugin meek exec /tmp/meek-client --log /tmp/meek-client.log
解释一下:
首先是配置使用Bridge。
然后配置Bridge信息, 是Meek类型的Bridge。
关键的来了, 配置front为Google的玉米, 配置meek服务器的地址为一个appspot的地址。
front便是写在HTTPS请求外层的所谓“合法”地址, 如果Google没有被干掉的话。 url为meek服务器的地址, 也就是请求数据包最终发送到的地址。
最后一行配置了meek本地客户端的信息, 可执行文件的地址, 以及log日志的打印地址。
如此配置之后得到的效果是, 所有本地的Tor数据包首先发送到Meek-client, 由Meek-client封装成为HTTPS包发送到Google, Google解析HTTPS包的内容, 拿到包头的HOST数据, 发现是给appspot的, 再由Google负责转发到对应的appspot地址。
在appspot上等着的是Meek服务器端, 由该服务器解析并将数据传入Tor电路。
神坑
使用apt一类的包管理器安装Tor有一个坑, 由于Tor安装到系统里, 可以使用Service一类的命令启动Tor。
但是配置了Meek插件之后调用
service tor restart
启动Tor会一直报权限不足, 即使用Root也是。
最后在stackoverflow上找到答案, 原来是Tor的Service有bug, 搞定了Meek插件的安装之后, 可以直接通过命令启动:
tor
via 细节的力量 http://ift.tt/1KUEq7j
No comments:
Post a Comment