本文所列内容在Linode和Vultr的VPS上面均测试通过,Debian 7系统。
首先吐槽一下,我还算是个良民吧,对喷政府这种事情没兴趣,也没那个功夫,平时自己做个代理,也就是查资料用的多,偶尔上twitter看看逗逼们,自己也乐呵一下,可这么简单的事情居然无法直接做到,真tm郁闷!我做个代理,不定时中断,这肯定是伟大的gfw功劳,我做个vpn,还是一样,这次真的是怒了!折腾了一个周末,找到了最简单高效的途径来搞定这个事情,操!
1,简要说明
首先假定你已经按照《Debian制作socks5服务器》一文的内容做好了socks5代理,并且配置里面开启了http代理。然后本文会引导你做一个加密隧道,这样就可以将gfw踩在脚底了!
2,服务器端安装配置
debian和ubuntu的命令是一样的:
apt-get install -y stunnel4
然后编辑下面文件,让这个服务默认启动:
nano /etc/default/stunnel4
做如下更改:
ENABLED=1
生成证书和私钥:
openssl genrsa 1024 > stunnel.key openssl req -new -key stunnel.key -x509 -days 1000 -out stunnel.crt
里面有交互的时候,可以自行设置,也可以直接回车。
然后运行命令:
cat stunnel.crt stunnel.key > stunnel.pem mv stunnel.pem /etc/stunnel/
下面做一个配置文件,默认是没有的,下面命令会直接新建:
nano /etc/stunnel/stunnel.conf
内容如下:
pid = /var/run/stunnel4.pid cert = /etc/stunnel/stunnel.pem socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 client=no [http2ssl] accept = 10001 connect = 127.0.0.1:8082 [socks2ssl] accept = 10002 connect = 127.0.0.1:6666
这个配置的意思是说,将接收到的10001端口数据解密后转发到本地的8082,也就是http代理端口;将10002的数据解密后转发到6666,也就是前面我们配置的socks5端口。
服务器端完事。
3,客户端安装配置
首先下载安装,中途会问你那些私钥内容什么的,回车跳过就行,然后编辑安装目录的stunnel.conf文件,内容如下:
cert = stunnel.pem socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 client=yes [http2ssl] accept = 10001 connect = 1.1.1.1:10001 [socks2ssl] accept = 10002 connect = 1.1.1.1:10001
注意,1.1.1.1是服务器IP,这里我懒省事了,怕以后记不住,所以客户端的端口我配置的和服务器一样了,你和我一样懒的话也可以这样,哈哈。
配置文件的意思是说,将客户端的10001和10002端口数据传递到服务器的相同端口。
客户端完事。
然后用起来方法是一样的,stunnel实际上是做了一个二次代理,也就是说你的客户端也成为了代理服务器,而这个客户端代理接收到的数据会发送到服务器,再由服务器传回数据,这两个代理之间的传输是加密的,所以也就不怕gfw了。
[…] 最后呢,跟上篇文章需要说明的一致,squid本身是个明文代理,建议参考《Debian 7(Wheezy)/Ubuntu上使用stunnel+kingate配置加密代理》这篇文章做成加密代理。 […]