提取Tor并搭建Tor Bridge

Tor的Bridge如果传播的范围比较广,可能隔几天就被和谐掉了,频繁地换有点麻烦(恍惚间让我想到了当年改host上Google的时光)。今天折腾了一下,自己在VPS上搭建tor的Bridge来自用。
而且也从Tor Browser里提取出tor,使其不依赖Tor Browser,可以供其他浏览器使用。
警告:部署Bridge可能会增加服务器被墙的概率。

搭建Tor Bridge

首先在VPS上安装tor:

1
$ apt-get install tor

然后安装obfs4proxy:

1
$ apt-get install obfs4proxy

因为这里tor需要使用obfs来混淆流量,所以如果你的软件仓库里找不到这个包,也可以从代码编译:Yawning/obfs4.

1
2
3
4
5
6
7
8
# 从代码编译obfs4proxy
$ git clone git@github.com:Yawning/obfs4.git
$ cd obfs4
# 安装依赖,如果这一步出错,后面讲解决方法
$ go get -d ...
# 从代码构建二进制obfs4
# 构建完毕之后可以将其放到/usr/bin/下,后面在torrc配置中要用到
$ go build -o obfs4proxy ./obfs4proxy

注:如果在下载依赖包go get -d ...时出现了can't download之类的错误,可以从提示的包仓库里自己clone下来放到错误消息提示的路径里去。
tor相关的库可以从gitweb.torproject.org里找到。

如果上面torobfs4都安装成功了,那么编辑tor的配置文件/etc/tor/torrc:

1
$ sudo nano /etc/tor/torrc

将下面的配置填入其中:

1
2
3
4
5
6
7
8
Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort auto
Exitpolicy reject *:*
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ExtORPort auto
PublishServerDescriptor 0

注意:将ServerTransportPlugin的路径改为你上面将编译出来的obfs4proxy放到的路径。

然后执行命令重启tor:

1
$ systemctl restart tor

执行完毕之后查看tor的日志文件/var/log/tor/notices.log:

1
$ cat /var/log/tor/notices.log

会出现下面这样类似的输出:

表明搭建tor网桥成功。记录下红框中的部分:

1
2
ORPort 45.XXX.XXX.95:4XXX9
server's identity key FE3XXXXXXXXXXXXXXXXXXXXXXC16DCF

这两个就是后面将在客户端连接时需要的网桥数据:

1
45.XXX.XXX.95:4XXX9 FE3XXXXXXXXXXXXXXXXXXXXXXC16DCF

接下来再使用tor browser时就可以填入自己的网桥了。

从tor-browser提取tor

首先,先下载tor browser的安装包并安装(目录任意)。
然后打开tor browser的安装路径,将Tor Browser\Browser\TorBrowser\Tor拷贝出来放到一个新目录,如tor_portable.

此时tor_portable的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\USERS\VISIONSMILE\DESKTOP\TOR_PORTABLE
| libeay32.dll
| libevent-2-1-6.dll
| libevent_core-2-1-6.dll
| libevent_extra-2-1-6.dll
| libgcc_s_seh-1.dll
| libssp-0.dll
| libwinpthread-1.dll
| ssleay32.dll
| tor.exe
| zlib1.dll
|
\---PluggableTransports
meek-client-torbrowser.exe
meek-client.exe
obfs4proxy.exe
terminateprocess-buffer.exe

然后在tor_portable下新建一个Data文件夹备用。

此时再打开tor browser的安装目录,找到路径Tor Browser\Browser\TorBrowser\Data\Tor,将该目录下的geoipgeoip6这两个文件拷贝到上一步创建的tor_protable\Data目录下。
同时,也将tor browser安装目录下Tor Browser\Browser\TorBrowser\Data\Tortorrc文件拷贝到tor_protable目录。

执行完毕上面的操作之后,此时tor_protable的目录结构为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
C:\USERS\VISIONSMILE\DESKTOP\TOR_PORTABLE
| libeay32.dll
| libevent-2-1-6.dll
| libevent_core-2-1-6.dll
| libevent_extra-2-1-6.dll
| libgcc_s_seh-1.dll
| libssp-0.dll
| libwinpthread-1.dll
| ssleay32.dll
| tor.exe
| torrc
| zlib1.dll
|
+---Data
| geoip
| geoip6
|
\---PluggableTransports
meek-client-torbrowser.exe
meek-client.exe
obfs4proxy.exe
terminateprocess-buffer.exe

然后使用文本编辑器打开tor_protable\torrc,将下面的配置填入其中:

1
2
3
4
5
6
7
8
Bridge 45.XXX.XXX.95:4XXX9 FE3XXXXXXXXXXXXXXXXXXXXXXC16DCF
DataDirectory ./Data
GeoIPFile ./Data/geoip
GeoIPv6File ./Data/geoip6
Log notice file ./tor.log
ClientTransportPlugin obfs4 exec .\PluggableTransports\obfs4proxy managed
Socks5Proxy 127.0.0.1:10086
UseBridges 1

Bridge为网桥,可以使用上面在服务器上部署的参数。

注意:不要在Bridge之后填obsf4,测试过程中发现,如果使用这样的格式:

1
Bridge obfs4 45.XXX.XXX.95:4XXX9 FE3XXXXXXXXXXXXXXXXXXXXXXC16DCF

会出现这样的错误:

1
Nov 04 19:22:57.000 [warn] Proxy Client: unable to connect to 45.XXX.XXX.95:4XXX9 ("general SOCKS server failure")

另外,还要注意Socks5Proxy根据自己的配置和需要决定。

执行完上面的操作,tor的提取和配置都执行完毕了。
下面可以在本地启动tor了:

1
2
# 在tor_protable目录下执行
$ tor -f torrc

此时tor_protable目录下会创建出tor.log文件,打开即可查看tor的日志。
当日志中出现下面这样的输出时,即连接成功:

1
2
3
4
5
6
7
8
9
10
Nov 04 19:20:39.000 [notice] Bootstrapped 50%: Loading relay descriptors for internal paths
Nov 04 19:20:40.000 [notice] The current consensus contains exit nodes. Tor can build exit and internal paths.
Nov 04 19:20:42.000 [notice] Bootstrapped 57%: Loading relay descriptors
Nov 04 19:20:42.000 [notice] Bootstrapped 66%: Loading relay descriptors
Nov 04 19:20:42.000 [notice] Bootstrapped 72%: Loading relay descriptors
Nov 04 19:20:42.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Nov 04 19:20:43.000 [notice] Bootstrapped 85%: Finishing handshake with first hop
Nov 04 19:20:44.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Nov 04 19:20:45.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working.
Nov 04 19:20:45.000 [notice] Bootstrapped 100%: Done

tor启动之后会创建一个Socks5代理(127.0.0.1:9050),可以在Chrome上使用插件Proxy SwitchyOmega来设置,如果不能访问Chrome Web Store,也可以从github下载:FelisCatus/SwitchyOmega

设置完毕之后,就可以打开一些“暗网”网址了!

比如DuckDuckGo的暗网网址:https://3g2upl4pq6kufc4m.onion

或者分享书籍的Imperial Library:http://xfmro77i3lixucja.onion

快速启动/关闭tor批处理

上面启动tor时使用的是命令tor -f torrc,可以将其写为批处理:

1
2
rem tor-run.bat
tor -f torrc

接下来时关闭tor的批处理,因为tor会启动obfs4proxy来混淆流量,所以会同时启动torobfs4proxy的进程。我们在关闭时需要杀掉这些进程,在windows下可以使用taskkill /IM命令:

1
2
3
rem tor-stop.bat
taskkill /IM tor.exe /F
taskkill /IM obfs4proxy.exe /F

本文到此完全结束,此时tor_protable完整的目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
C:\USERS\VISIONSMILE\DESKTOP\TOR_PROTABLE
| libeay32.dll
| libevent-2-1-6.dll
| libevent_core-2-1-6.dll
| libevent_extra-2-1-6.dll
| libgcc_s_seh-1.dll
| libssp-0.dll
| libwinpthread-1.dll
| ssleay32.dll
| tor-run.bat
| tor-stop.bat
| tor.exe
| tor.log
| torrc
| zlib1.dll
|
+---Data
| geoip
| geoip6
|
\---PluggableTransports
meek-client-torbrowser.exe
meek-client.exe
obfs4proxy.exe
terminateprocess-buffer.exe
  • 2018.11.05 10:29更新:修改部分措辞和别字。
全文完,若有不足之处请评论指正。

微信扫描二维码,关注我的公众号。

本文标题:提取Tor并搭建Tor Bridge
文章作者:查利鹏
发布时间:2018年11月04日 19时36分
更新时间:2018年11月05日 10时29分
本文字数:本文一共有1.8k字
原始链接:https://imzlp.com/posts/11177/
许可协议: CC BY-NC-SA 4.0
文章禁止全文转载,摘要转发请保留原文链接及作者信息,谢谢!
您的捐赠将鼓励我继续创作!