少数派报告——树莓派搭建Tor匿名站点

Tor介绍

Tor is free software and an open network that helps you defend against traffic analysis, a form of network surveillance that threatens personal freedom and privacy, confidential business activities and relationships, and state security.
如果需要了解更多请看 Tor官方网站

树莓派介绍

The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects.
如果需要了解更多请看 Raspberry Pi官方网站

序言

众所周知,现在国内上网需要掌握许多种科学上网的方法。最近还要封杀VPN了,简直过分。这两天看了不少网上搭建Tor匿名站点的方法,但大都鱼龙混杂,而且并没有考虑到我国的”特殊国情”。在经过两天的奋斗之后,我终于搞定了整套流程,现在把它记录在这里,希望可以帮到大家。

Step0. 准备材料

  • 硬件:树莓派(安装Raspbian Jessie系统)
  • 网络:可以联网即可,支持内网穿透。

Step1. 更新apt源

首先,我们需要把apt的源更换为国内的源,将原有的源备份。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

编辑source.list文件

sudo vim /etc/apt/sources.list

将source.list中的内容替换如下(这个是我自己的配置)

deb http://mirror.sysu.edu.cn/raspbian/raspbian/ jessie main contrib non-free
deb-src http://mirror.sysu.edu.cn/raspbian/raspbian/ jessie main contrib non-free
#阿里云
deb http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
 deb-src http://mirrors.aliyun.com/raspbian/raspbian/ wheezy main non-free contrib
#清华
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
#东软
deb http://mirrors.neusoft.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.neusoft.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
#中科大
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ wheezy main contrib non-free rpi

更新apt列表

sudo apt-get update

更新软件

sudo apt-get upgrade

Step2. 安装PHP

目前网站服务器搭建最流行的就是LAMP框架了,所以我们首先来安装PHP和PHP-FPM。由于nginx并不支持PHP的解析,所以我们用PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,比spawn-fcgi具有更多优点。

sudo apt-get install php5 php5-fpm

Step3. 安装nginx

相比于LAMP中的Apache,nginx更加适合树莓派安装。

sudo apt-get install nginx

nginx的配置在 /etc/nginx/nginx.conf中,我们需要根据自己的实际情况来设置nginx.conf文件。nginx.conf配置里面包括了

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

所以在这里,我们直接编辑/etc/nginx/sites-available/default就好。

sudo vim /etc/nginx/sites-available/default

下面是修改好的文件内容:

server {
    #更改监听端口为8080
    listen 8080 default_server;
    #是否支持IPV6
    #listen [::]:80 default_server;
    #设置网站根目录
    root /var/www/html;
    # 如果要使用PHP,需要添加index.php
    index index.html index.htm index.nginx-debian.html index.php;
    server_name _;
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        # try_files $uri $uri/ =404;
    }
    #php配置项
    #将php交给php5-fpm来处理
    location ~ [^/]\.php(/|$){
        include fastcgi-php.conf;
        include pathinfo.conf;
        include typecho.conf;  
        fastcgi_pass unix:/run/php5-fpm.sock;
    }
}

其中pathinfo.conf的代码为:

set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "(.+?\.php)(/.*)")
{
    set $real_script_name $1;
    set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;

其中typecho.conf的代码为:

if (-f $request_filename/index.html){
    rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
    rewrite (.*) $1/index.php;
}
if (!-e $request_filename){
    rewrite (.*) /index.php;
}              

Step4. 启动nginx和php5-fpm

sudo service php5-fpm start
sudo service nginx start

Step5. 安装Typecho内容发布系统

Typecho是一个非常轻巧的内容发布系统,我觉得用在树莓派上十分合适。而且安装过程也十分简单,丝毫不逊于WordPress的五分钟安装法。
安装的时候需要选择数据库,这里我推荐使用Sqlite,还是那个原因,比较轻便。在安装的过程中我遇到了不少坑,主要是nginx配置不正确造成的,我在上面的配置文件中已经修正过来了,所以应该可以很顺利的运行Typecho。如果有问题可以试着自己搜索一下。

Step6. 安装Tor

首先添加key文件签名

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

之后就可以安装Tor了

sudo apt-get install tor

Step7. 配置Tor

sudo vim /etc/tor/torrc

在最下面添加以下内容:

Socks5Proxy 127.0.0.1:1080
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:8080    

添加Socks5Proxy是因为国内的网络环境不支持使用Tor,所以我们需要科学上网一下才可以正常使用。

Step8. 安装XX-net

XX-Net是一个集成了GoAgent和GoGotest的封包软件,能自动根据当前网络状况搜索最新Google IP,并且替换到GoAgent里面,是GAE最高效利用方式。

需要注意的是:

  1. 由于封锁严重,软件自带IP已经被封杀殆尽。因此需要数分钟到数小时的初始化IP扫描,方能正常运行。
  2. 虽然系统内置了公共appid, 还是建议部署自己的appid,公共appid限制看视频。需要注意的是,只有当你能访问Google之后,才能部署自己的APPID。

首先使用Git从Github上拉取最新的Source

git clone https://github.com/XX-net/XX-Net.git

安装 libnss3-tools

sudo apt-get install libnss3-tools

安装gtk

sudo apt-get install python-gtk2

Step9. 配置XX-net

第一次使用需要使用Sudo权限导入证书,进入XX-net目录

sudo ./start 

之后你可以去泡杯茶喝了,这一过程可能需要数分钟到数小时来扫描IP。在完成扫描之后,打开http://127.0.0.1:8085来进行XX-net的配置。
我们利用XX-net的X-Tunnel功能,建立了一个SOCK5的代理端口,端口号为1080,也就是之前填在Tor配置中的那个地址。

Step10. 启动Tor

启动Tor

sudo service tor start

在hidden_service文件夹中可以找到hostname,这里记录了随机生成的Tor域名

cd /var/lib/tor/hidden_service/
cat hostname

用Tor浏览器访问的.onion的域名,查看是否可以正常访问。