搭建利用obfs4混淆的Tor bridge的过程

Tor的目的在其匿名性,众所周知,如果我们想连接到Tor网络可能需要一个网桥,一般的网桥还不行,因为会被检测到Tor流量,ip直接被ban掉,当我还知之甚少的时候,一个VPS的ip就被某知名防火墙封禁了3天,当然恢复后,这个ip也不好再用了。

Tor的节点分为三种

1.作为出口节点,Exit Nodes。出口节点实际上是暴露于互联网的,相当于最后真正去访问站点的那个人。

2.在Tor directory中列出的中继节点,叫Tor Relay。IP很可能被检测到,很可能被屏蔽。

3.在Tor directory中不列出的中继节点,叫Bridges Relay,也就是我们这篇文章重点介绍的节点。它可以帮助你绕过网络运营商对于Tor的封锁。

混淆插件

在过去的几年中,审查者开始可以屏蔽即使使用了Bridges的Tor clients。故,在严格审查的环境下,我们应该使用混淆插件进行规避,比如meek,比如obfs4,在这里,将着重介绍如何使用obfs4。

VPS对于Tor的支持

并非所有VPS商都允许使用Tor,所以应该事先了解政策支持情况,下面表格列出了常用的VPS支持情况:

VPSBridgesRelayExit
DigitalOceanYESYESNO
VultrYESYESNO
LinodeYESYESAmbiguous

获取更多信息,可以参考支持/禁封列表

本文以 Debian 9 (推荐)、 Ubuntu 16.04 和 Centos 7 为例

Debian 9

1.下载并安装 Tor 和 obfs

apt install tor obfs4proxy -y

2.配置Tor Bridges

首先,确认服务器上的时钟日期是正确的。

然后编辑/etc/tor/torrc,定义一个ORPort,不作为出口节点,设置成Bridge:

Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 443  
Exitpolicy reject *:*  
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ExtORPort auto
PublishServerDescriptor 0

重启Tor服务:

service tor restart

3.使用网桥

查看日志文件tail -F /var/log/tor/notices.log,当看到有类似的输出,证明很成功:

[notice] Registered server transport 'obfs4' at '[::]:46396'
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort <redacted>:443 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.

记住obfs4监听的地址。并且还能找到你的server identity fingerprintt,也复制下来

/var/lib/tor/pt_state/obfs4_bridgeline.txt文件中可以看到类似如下的内容:

Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

把Bridge去了,ip换了,端口写对了,fingerprint粘贴了,之后,把这行复制即可,这个,就是你的网桥了。愉快使用吧。

Ubuntu 16.04

1.下载并安装Tor

sources.list中添加源:

deb http://deb.torproject.org/torproject.org xenial main
deb-src http://deb.torproject.org/torproject.org xenial main

添加gpg key:

gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -

安装tor:

apt-get update
apt-get install tor deb.torproject.org-keyring

2.下载并安装obfs4

sources.list添加源:

deb http://deb.torproject.org/torproject.org obfs4proxy main

安装

apt-get update && apt-get install obfs4proxy

3.配置Tor Bridges

首先,确认服务器上的时钟日期是正确的。

然后编辑/etc/tor/torrc,定义一个ORPort,不作为出口节点,设置成Bridge:

Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 443  
Exitpolicy reject *:*  
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ExtORPort auto
PublishServerDescriptor 0

重启Tor服务:

service tor restart

4.使用网桥

查看日志文件tail -F /var/log/tor/notices.log,当看到有类似的输出,证明很成功:

[notice] Registered server transport 'obfs4' at '[::]:46396'
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort <redacted>:443 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.

记住obfs4监听的地址。并且还能找到你的server identity fingerprintt,也复制下来

/var/lib/tor/pt_state/obfs4_bridgeline.txt文件中可以看到类似如下的内容:

Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

把Bridge去了,ip换了,端口写对了,fingerprint粘贴了,之后,把这行复制即可,这个,就是你的网桥了。愉快使用吧。

Centos 7

1.下载并安装Tor

安装tor:

yum install tor -y

2.编译安装obfs4

安装所需软件:

yum install git mercurial golang -y

开始安装obfs4proxy:

export GOPATH=`mktemp -d`
go get git.torproject.org/pluggable-transports/obfs4.git/obfs4proxy
cp $GOPATH/bin/obfs4proxy /usr/local/bin/

3.配置Tor Bridges

首先,确认服务器上的时钟日期是正确的。

然后编辑/etc/tor/torrc,定义一个ORPort,不作为出口节点,设置成Bridge:

Log notice file /var/log/tor/notices.log
RunAsDaemon 1
ORPort 443  
Exitpolicy reject *:*  
BridgeRelay 1
ServerTransportPlugin obfs4 exec /usr/local/bin/obfs4proxy
ExtORPort auto
PublishServerDescriptor 0

重启Tor服务:

service tor restart

4.使用网桥

查看日志文件tail -F /var/log/tor/notices.log,当看到有类似的输出,证明很成功:

[notice] Registered server transport 'obfs4' at '[::]:46396'
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100%: Done
[notice] Now checking whether ORPort <redacted>:443 is reachable... (this may take up to 20 minutes -- look for log messages indicating success)
[notice] Self-testing indicates your ORPort is reachable from the outside. Excellent.

记住obfs4监听的地址。并且还能找到你的server identity fingerprint,也复制下来

/var/lib/tor/pt_state/obfs4_bridgeline.txt文件中可以看到类似如下的内容:

Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

把Bridge去了,ip换了,端口写对了,fingerprint粘贴了,之后,把这行复制即可,这个,就是你的网桥了。

另外还需要注意对防火墙的配置:

vi /etc/firewalld/zones/public.xml

添加如下行:

<port protocol="tcp" port="ORPort端口"/>
<port protocol="udp" port="ORPort端口"/>
<port protocol="tcp" port="obfs4端口"/>
<port protocol="udp" port="obfs4端口"/>

使新规则生效:

firewall-cmd --complete-reload

至此,网桥可以使用。