Total Pageviews

Tuesday 22 March 2016

“在vps上搭建stunnel,用来翻墙的详细方法”一文的补充

服务端没有什么好说的,apt-get或者yum安装dante和stunnel.
安装完了编辑/etc/dante.conf,可以直接贴我下面的配置

logoutput: stderr
internal: 127.0.0.1 port = 1999 #1999是所指定的dante的端口
external: eth0 #如果你的vps是openvz vps,则修改eth0为venet0

method: none

user.privileged: proxy
user.notprivileged: nobody
user.libwrap: nobody

connecttimeout: 30
iotimeout: 86400

client pass {
    from: 192.168.0.0/0 port 1-65535 to: 0.0.0.0/0
}

client pass {
    from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}

client block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
}

block {
    from: 0.0.0.0/0 to: 127.0.0.0/8
    log: connect error
}

pass {
    from: 192.168.0.0/0 to: 0.0.0.0/0
    protocol: tcp udp
}

pass {
    from: 127.0.0.0/8 to: 0.0.0.0/0
    protocol: tcp udp
}

block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: connect error
}

然后愉快的重启dante,接着去配置stunnel,先弄证书

cd /etc/stunnel/

openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem

按提示输入生成证书,然后把/etc/stunnel下的stunnel.pem弄到本地,可以用winscp之类的~拷完了把stunnel.pem留好,继续去折腾stunnel的配置。

编辑/etc/default/stunnel4,把ENABLED改为1

编辑/etc/stunnel/stunnel.conf,在win下可以愉快的使用:

chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4
pid = /stunnel4.pid

CAfile = /etc/stunnel/stunnel.pem
cert = /etc/stunnel/stunnel.pem
verify = 2

; performance
options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client = no

[socks]
accept = 1998 #1998是所设置的stunnel的端口
connect = 1999 #1999是socks代理服务器(比如dante。当然你也可用其他的socks代理服务器程序,比如ssocks,kingate,mocks)的端口

然后重启stunnel:
service stunnel4 restart    #有报错继续参考上面链接

如果一切ok的话可以配置客户端了,必须写win下的配置

去https://www.stunnel.org/downloads.html下载win的版本,下完了安装,貌似也可以直接解压.

然后进到安装stunnel的目录,进到config文件夹,把刚刚弄到stunnel.pem扔进去(貌似第一次运行stunnel它会让你创建证书,这样的话config里会有个stunnel.pem,直接覆盖就好啦)然后找个文本编辑器打开stunnel.conf,删光所有内容,把下面粘贴进去:

debug = 7
cert = stunnel.pem
;key = stunnel.pem

options = NO_SSLv2
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client=yes

[socks]
accept = 127.0.0.1:2345
connect = x.x.x.x:1998

x.x.x.x换成服务器的ip地址,没啥错误可以把debug等级减下来,然后去打开stunnel.exe,没有报错就一切安好.
然后为浏览器设置127.0.0.1:2345的socks5代理,搞定.
需要注意的是这里用到的各种端口要注意不要和别的软件冲突,冲突的话去配置文件改就好.

注:
上面在配置stunnel.conf时,这一段内容:
[socks]
accept = 1998 #1998是所设置的stunnel的端口
connect = 1999

connect的就是backend程序(某个代理服务器程序)的端口,因此这个backend程序也可以是http代理服务器程序,比如squid,tinyproxy.如果你选择http代理服务器程序做后端,则那段内容改为:
[http]
accept = 1998 #1998是所设置的stunnel的端口
connect = 3128 #3128是http代理服务器程序squid的端口

服务器上所设置的后端代理程序是http代理服务器程序(socks代理服务器程序),则本地的浏览器所设置的代理需相应的为http代理(socks5代理)。

相关帖子:http://briteming.blogspot.com/2012/01/vpsstunnel.html