但愿有了.cn的加持不会被找喝茶
Tor(The Onion Router)大家应该都听说过。对!没错,就是那个可以让你匿名上网的那个东西,由于Tor网络遭到了我国GFW官方认证,所以大家在使用的时候难免要用到网桥,虽然Tor里提供了免费的网桥,但是毕竟是公共免费网桥,所以速度嘛,也可想而知(Azure-meek说的就是你)。因此我个人更倾向于自己建一个网桥,用自己的网桥的话速度会快不少。
在一开始,我还是要介绍一些基本信息
Tor的节点分为三种
- 作为出口节点,Exit Nodes 。出口节点实际上是暴露于互联网的,相当于最后真正去访问站点的那个人。
- 在 Tor directory 中列出的中继节点,叫 Tor Relay 。IP 很可能被检测到,很可能被屏蔽。
- 在 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,在之后我会更新教程,感兴趣的朋友们可以持续关注!
谢谢
hello
7 Nov 2019是否能自建 中继和出口节点?
Skoilly
10 Nov 2019理论上可以操作,但是需要参考Tor官方列表中各运营商对节点的支持度
Hello
3 Mar 2020请问:obfs4proxy 协议还没有被墙识别吗?
我看很多bridges都连不上,是用的协议识别还是ip封锁?