使用闲置的小机搭建Tor网桥

但愿有了.cn的加持不会被找喝茶

Tor(The Onion Router)大家应该都听说过。对!没错,就是那个可以让你匿名上网的那个东西,由于Tor网络遭到了我国GFW官方认证,所以大家在使用的时候难免要用到网桥,虽然Tor里提供了免费的网桥,但是毕竟是公共免费网桥,所以速度嘛,也可想而知(Azure-meek说的就是你)。因此我个人更倾向于自己建一个网桥,用自己的网桥的话速度会快不少。

在一开始,我还是要介绍一些基本信息

Tor的节点分为三种

  1. 作为出口节点,Exit Nodes 。出口节点实际上是暴露于互联网的,相当于最后真正去访问站点的那个人。
  2. 在 Tor directory 中列出的中继节点,叫 Tor Relay 。IP 很可能被检测到,很可能被屏蔽。
  3. 在 Tor directory 中不列出的中继节点,叫 Bridges Relay,也就是我这篇文章重点介绍的节点。它可以帮助你绕过网络运营商对于 Tor 的封锁。

自制Tor网桥为什么要使用混淆

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

各个服务商对Tor的许可程度

并非所有 VPS 商都允许使用 Tor,所以应该事先了解政策支持情况,下面网站列出了常用的 VPS 支持情况: (以下网址可能需要科学上网) https://trac.torproject.org/projects/tor/wiki/doc/GoodBadISPs

在CentOS 7环境下安装

  • 下载并安装Tor
yum install tor -y
  • 编译安装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/
  • 配置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服务

systemctl restart tor
  • 使用网桥

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

[notice] Your Tor server's identity key fingerprint is 'Unnamed 530FA95A79B9145D315F15F01215BE2F3BE921EB'
[notice] Your Tor bridge's hashed identity key fingerprint is 'Unnamed 83D1AC9EC2F15D7024278461DC91A8B2E9BBF43A'
[notice] Registered server transport 'obfs4' at '[::]:46396'
[notice] Tor has successfully opened a circuit. Looks like client functionality is working.
[notice] Bootstrapped 100{316b4279126502ea1b70170ae71cba2d782c79191ac90e6de6711f7fd58241f2}: 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 监听的端口(本例中是 46396)。并且还能找到你的 server identity fingerprint(本例中是 530FA95A79B9145D315F15F01215BE2F3BE921EB),也复制下来。

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

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

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

本例中最后成品:

obfs4 123.456.789.10:46396 530FA95A79B9145D315F15F01215BE2F3BE921EB cert=6LMNcXh6MIfApbZiMksnS4Kj+2sffZ5pybSqtcOO5YoHgfrMpkBJqvLxhuR2Ppau0L2seg iatmode=0

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

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

好了,Tor网桥到这里就搭建好了,享受你的快一点的Tor网络吧

对于Ubuntu和Debian,在之后我会更新教程,感兴趣的朋友们可以持续关注!

谢谢

This Post Has 3 Comments

  1. 是否能自建 中继和出口节点?

    1. 理论上可以操作,但是需要参考Tor官方列表中各运营商对节点的支持度

  2. 请问:obfs4proxy 协议还没有被墙识别吗?
    我看很多bridges都连不上,是用的协议识别还是ip封锁?

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close Menu