如何在linux环境下搭建Tor代理服务器

 

代理配置
现在要使该服务器成为一个TOR代理,使得其他主机可以使用该服务器的TOR代理,需要进行如下配置
vim /etc/tor/torrc 修改SOCK5代理端口,添加以下语句
SOCKSPort 9050 # Default: Bind to localhost:9050 for local connections.
SOCKSPort 0.0.0.0:9150 # Bind to this address:port too.

重新运行TOR,查看网络状态,新打开监听端口9150
tcp 0 0 127.0.0.1:9050 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9150 0.0.0.0:* LISTEN

因为TOR提供的SOCK5代理没有用户密码验证。所以我们需要配置防火墙,修改iptables来指定允许的IP连接该端口。或者直接修改Tor配置文件,只允许指定的IP访问TOR代理接口,在torrc文件末尾添加以下语句。
SOCKSPolicy accept 45.32.24.178
SOCKSPolicy reject *
#SOCKSPolicy accept 192.168.0.0/16

使用其他主机测试该代理,在一台VPS上配置firefox浏览器socks5代理为该服务器的9150端口,然后通过浏览器百度自己的ip,或者访问https://check.torproject.org/?lang=zh_CN,可以发现该浏览器的流量走的是tor网络。如果想要使整个主机流量走TOR网络,可以配合proxyfier等全局代理工具使用。

其他TOR相关配置
配置Tor网络出口节点
比如想实现指定Tor网络出口节点,或者限制出口节点不走某些区域的功能。以指定出口节点为日本为例,在torrc配置文档末尾添加以下语句(StrictNodes 表示强制执行)
ExitNodes {jp}
StrictNodes 1
如果想要排除某些国家/地区的节点,如中国,香港可以添加
ExcludeNodes {cn},{mo},{hk}
StrictNodes 1
这样,Tor客户端会主动规避来自香港的中继节点,但如果Tor在排除之后的中继节点中建立不起来虚拟线路的时候,还是会尝试使用那些排除在外的中继节点。所以,如果要再狠一点,哪怕不能连接也完全不考虑这些排除的节点,则可以再在配置文件中加入StrictNodes 1进行强制执行。

配置前置代理
为Tor配置前置代理,比如在国内是无法直接连接TOR网络的,需要使用前置代理翻墙,然后再使用TOR网络进行双重代理。前置代理可以是HTTP,SOCKS4,SOCKS5等代理,支持用户密码验证,如添加SOCK5代理,添加以下语句在torrc文件末尾。

Socks5Proxy 127.0.0.1:1080
#Socks5ProxyUsername username
#Socks5ProxyPassword password

FAQ:
Q: 若安装Tor碰到错误?
如果错误信息如下:
GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
这个错误是因为手动添加epel源时,未手动添加GPG密钥,
解决方案:
第一种是把这个key从这个源站copy过来,放到/etc/pki/rpm-gpg目录下
第二种是修改repo文件
vim /etc/yum.repos.d/epel.repo
把gpgcheck=1改为gpgcheck=0

Q: 安装和配置正常,但是启动Tor,发现无法连接到Tor网络?
国内需翻墙才能顺利连接接到TOR网络。
———————
作者:宁月_
来源:CSDN
原文:https://blog.csdn.net/smiler_sun/article/details/71124082