通过电子邮件获得赛风(psiphon)科学上网工具

通过电子邮件可以快速得到赛风翻墙软件,支持 Windows 及安卓系统。 



发送邮件


给以下邮件地址发送一封空邮件(邮件标题和内容都可以为空),就可以通过邮箱得到最新版的赛风翻墙软件。

接收到的邮件


发出邮件不久,大约几秒钟,就可以收到回复的邮件,邮件内容是下载赛风的一些链接,但可以忽略这份邮件,因为再稍等一会就会有第二封邮件发送过来。

在第二封邮件,除正文包括一些链接外,在附件中还包含两个文件,分别是:

  • psiphon3.ex_ 用于 Windows 系统,下载回来后,需要修改扩展名,改为:psiphon3.exe ,然后点击执行,等待完成安装。
  • PsiphonAndroid.apk ,用于安卓系统,下载会回来后,需要在安卓系统安装使用。



Windows 版的使用


Windows 版下载回来,修改扩展名后,直接点击就可以启动,启动后自动连接远程服务器,连接成功以后,显示界面如下,这表示已经处于科学上网状态。



更多下载方式


也可以直接访问赛风官方下载网站获得安装程序。

原文:http://www.chinagfw.org/2016/02/psiphon_13.html

通过电子邮件获得赛风(psiphon)科学上网工具

在vps上搭建stunnel,在客户机器用chrome来翻墙的详细教程

如果你有自己的vps,可在vps上搭建stunnel,用来翻墙。

 

如果你的vps是centos/fedora系统,则
# yum install stunnel -y
但是我在/etc/stunnel/里面并未发现stunnel.conf,这是因为没有缺省的conf文件的缘故。解决办法:
# yum install yum-utils -y
# repoquery –list stunnel (用此命令可得到stunnel软件包的文件列表)
显示如下内容:
/etc/stunnel
/usr/lib/libstunnel.so
/usr/sbin/stunnel
/usr/sbin/stunnel3
/usr/share/doc/stunnel-4.15
/usr/share/doc/stunnel-4.15/AUTHORS
/usr/share/doc/stunnel-4.15/BUGS
/usr/share/doc/stunnel-4.15/COPYING
/usr/share/doc/stunnel-4.15/COPYRIGHT.GPL
/usr/share/doc/stunnel-4.15/CREDITS
/usr/share/doc/stunnel-4.15/Certificate-Creation
/usr/share/doc/stunnel-4.15/ChangeLog
/usr/share/doc/stunnel-4.15/NEWS
/usr/share/doc/stunnel-4.15/PORTS
/usr/share/doc/stunnel-4.15/README
/usr/share/doc/stunnel-4.15/TODO
/usr/share/doc/stunnel-4.15/VNC_StunnelHOWTO.html
/usr/share/doc/stunnel-4.15/faq.stunnel-2.html
/usr/share/doc/stunnel-4.15/pop3-redirect.xinetd
/usr/share/doc/stunnel-4.15/sfinger.xinetd
/usr/share/doc/stunnel-4.15/stunnel-pop3s-client.conf
/usr/share/doc/stunnel-4.15/stunnel-sfinger.conf
/usr/share/doc/stunnel-4.15/stunnel.conf-sample
/usr/share/doc/stunnel-4.15/transproxy.txt
/usr/share/doc/stunnel-4.15/tworzenie_certyfikatow.html
/usr/share/man/fr/man8/stunnel.8.gz
/usr/share/man/man8/stunnel.8.gz
/usr/share/man/pl/man8/stunnel.8.gz
上面的/usr/share/doc/stunnel-4.15/stunnel.conf-sample即为stunnel.conf的样板文件。
# cp /usr/share/doc/stunnel-4.15/stunnel.conf-sample /etc/stunnel/stunnel.conf
等下我们要编辑stunnel.conf文件。
# cd /etc/stunnel
# openssl req -new -x509 -days 3650 -nodes -out public.crt -keyout private.key
运行上面这条命令后,在/etc/stunnel里会生成public.crt和private.key文件。
然后编辑stunnel.conf文件:
cert = /etc/stunnel/public.crt
key = /etc/stunnel/private.key
;chroot = /var/run/stunnel/ (说明:注释掉chroot = /var/run/stunnel/ 因为/var/run/stunnel并不存在,所以在其前面加;号。
pid = /tmp/stunnel.pid (说明:pid = 的值修改为/tmp/stunnel.pid或/opt/stunnel.pid)
;[ssmtp] (注释掉[ssmtp])
;accept  = 465(注释掉accept  = 465)
;connect = 25  (注释掉connect = 25)
[https]
accept  = 440 (注意这里的端口号不一定非要是443不可)
connect = tinyproxy的端口号8888

(附录:

安装轻量级的http proxy-tinyproxy

如果你的系统是debian/ubuntu,则
# apt-get install tinyproxy -y
配置文件在/etc/tinyproxy.conf
如果你的系统是centos/fedora,则

rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
(http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm,如果你的系统为centos 7 x86_64位)
yum update
# yum install tinyproxy -y
配置文件在/etc/tinyproxy/tinyproxy.conf
然后编辑tinyproxy.conf,不要把Allow 127.0.0.1注释掉,Allow 127.0.0.1的意思是只允许同一台机器-localhost即vps访问这个tinyproxy,拒绝互联网上的其他ip访问这个tiny proxy。“Port 8888 ”这行的8888可改为其他端口(4位数的。我改为5位数的,启动不了tinyproxy),这样安全些。

然后启动tinyproxy即可:
# tinyproxy )

然后重启stunnel服务:
# killall stunnel
# /usr/sbin/stunnel

然后回到本地机器,带参数–proxy-server=https://vps_ip:440 –ignore-certificate-errors启动chrome,即可在chrome中翻墙。

如果你的vps是debian/ubuntu系统,则
# apt-get install stunnel -y
这里的stunnel跟centos/fedora下的stunnel一样,是不能用/etc/init.d/stunnel start命令来启动的,因为/etc/init.d/下没有stunnel文件。
运行apt-get install stunnel -y时,显示:

正在添加系统用户”stunnel4″ (UID 106)…

正在添加新组”stunnel4″ (GID 110)…

正在将新用户”stunnel4″ (UID 106)添加到组”stunnel4″…

无法创建主目录”/var/run/stunnel4″

SSL tunnels disabled, see /etc/default/stunnel4

root@AR:~# ls /var/run/

apache2 mount  shm      upstart-socket-bridge.pid

apache2.pid network  squid3.pid  upstart-udev-bridge.pid

container_type rsyslogd.pid  squid.pid   user

crond.pid saslauthd  sshd      utmp

crond.reboot screen  sshd.pid    xinetd.pid

lock sendmail stunnel4

motd.dynamic sendsigs.omit.d  udev

(/var/run/stunnel4目录其实是存在的。)

root@AR:~# chown -R stunnel4:stunnel4 /var/run/stunnel4/

root@AR:~# nano /etc/default/stunnel4

(把/etc/default/stunnel4文件里的ENABLED的值改为1)

root@AR:~#

# find / -name stunnel (查找stunnel,显示:

/usr/share/doc/stunnel
/usr/lib/stunnel
/usr/bin/stunnel
/etc/stunnel )
stunnel的执行文件为/usr/bin/stunnel
# /usr/bin/stunnel
会有如下错误提示:
2011.05.22 16:01:15 LOG7[2027:3074864816]: Snagged 64 random bytes from /root/.rnd
2011.05.22 16:01:15 LOG7[2027:3074864816]: Wrote 1024 new random bytes to /root/.rnd
2011.05.22 16:01:15 LOG7[2027:3074864816]: RAND_status claims sufficient entropy for the PRNG
2011.05.22 16:01:15 LOG7[2027:3074864816]: PRNG seeded successfully
2011.05.22 16:01:15 LOG7[2027:3074864816]: Certificate: /etc/stunnel/stunnel.pem
2011.05.22 16:01:15 LOG7[2027:3074864816]: Certificate loaded
2011.05.22 16:01:15 LOG7[2027:3074864816]: Key file: /etc/stunnel/stunnel.pem
2011.05.22 16:01:15 LOG7[2027:3074864816]: Private key loaded
2011.05.22 16:01:15 LOG7[2027:3074864816]: SSL context initialized for service stunnel
inetd mode must define a remote host or an executable “
# nano /usr/bin/stunnel (打开/usr/bin/stunnel文件查看一下,里面有显示$stunnel_bin=’usr/bin/stunnel4′;
于是知道stunnel的真正的执行文件为/usr/bin/stunnel4而不是/usr/bin/stunnel
# /usr/bin/stunnel4
# find / -name stunnel4 (显示:

root@AR:~# find / -name stunnel4

/var/log/stunnel4

/var/lib/stunnel4

/etc/init.d/stunnel4

/etc/default/stunnel4

/etc/logrotate.d/stunnel4

/usr/bin/stunnel4

/usr/share/doc/stunnel4

/usr/share/lintian/overrides/stunnel4

/usr/share/doc-base/stunnel4

/run/stunnel4

root@AR:~# )

# cd /usr/share/doc/stunnel4/examples/ (进入后,会发现里面有stunnel.conf-sample文件,stunnel.conf-sample就是stunnel.conf的样板文件。)
# cp /usr/share/doc/stunnel4/examples/stunnel.conf-sample /etc/stunnel/stunnel.conf
# cd /etc/stunnel/
# openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem
这里生成的cert文件和key文件都是stunnel.pem,二者合而为一了。运行上面这条命令后,在/etc/stunnel/里会生成stunnel.pem文件。
然后编辑stunnel.conf文件:
cert = /etc/stunnel/stunnel.pem
key = /etc/stunnel/stunnel.pem
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4
pid = /stunnel4.pid
;[ssmtp] (注释掉[ssmtp])
;accept  = 465(注释掉accept  = 465)
;connect = 25  (注释掉connect = 25)
[https]
accept  = 440 (注意这里的端口号不一定非要是443不可)
connect = tinyproxy的端口号8888
然后重启stunnel服务:
# killall stunnel4
# /usr/bin/stunnel4

然后回到本地机器,带参数–proxy-server=https://vps_ip:440 –ignore-certificate-errors启动chrome,即可在chrome中翻墙。

chrome支持https proxy的功能极大的方便了天朝网民!

如果你的客户机器为mac,则在终端里运行open “/applications/Google Chrome.app/” –args –proxy-server=https://vps_ip:440 –ignore-certificate-errors即可。

你可把open “/applications/Google Chrome.app/” –args –proxy-server=https://vps_ip:440 –ignore-certificate-errors保存为start-chrome-stunnel.sh,

赋予start-chrome-stunnel.sh可执行权限:

chmod 755 start-chrome-stunnel.sh

以后,想要用chrome翻墙时,运行./start-chrome-stunnel.sh即可。

如果你的vps系统为centos7,还需运行

systemctl mask firewalld
systemctl stop firewalld
这样操作后即可。意思是屏蔽和终止firewalld服务。我的vps系统为centos7,我搭建好stunnel和tinyproxy后,在自己的本地机器里用带参数启动的chrome就是翻墙不成功。
后来想起可能是firewalld 惹的祸,运行以上2条命令后,就解决问题了。


vps上的backend(即stunnel.conf中connect的值)当然也可使用squid,不过不能是加密的squid.如果你的vps上已经编译了一个加密的squid,那么你就需要另行编译一个普通的squid,然后即可用这个普通的squid作为stunnel的backend.这个普通的squid的配置文件squid.conf无需做任何修改。当然如果你愿意的话,也可修改其默认的3128端口为其他端口。

wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.13.tar.gz

tar zxvf squid-3.5.13.tar.gz

cd squid-3.5.13

./configure --prefix=/usr/local/squid-3.5.13

make

make install

squid的可执行文件为/usr/local/squid-3.5.13/sbin/squid,运行/usr/local/squid-3.5.13/sbin/squid, squid就启动了。

在stunnel.conf中,

...

[https]

accept = 440

connect = 3128


来源:翻墙论坛 briteming

原文:http://www.atgfw.org/2016/02/vpsstunnelchrome.html

在vps上搭建stunnel,在客户机器用chrome来翻墙的详细教程

无需Java使用I2P——I2Pd简单扫盲

最近收到朋友的来信让我写一篇关于i2p的文章,顺便博客也好久没更新都快长草了..那就写一篇关于i2pd的简介+扫盲文章吧…

什么是I2P?

I2P是Tor的变种,比Tor网络更加安全、更据隐蔽性,如果你不知道Tor又是什么,请戳洋葱路由Tor。 TOR和I2P共同点都是通过若干个节点将你的数据进行层层转包、加密,防止你的真实IP暴露。 (摘自谷歌)

I2P与Tor有什么区别?

  1. 安全性:Tor使用单一的链路进行传输你的数据;而I2P则使用多条链路分别传输你的数据并且每条链路传输的数据量可以不一样。
  2. 难以封杀:I2P使用 Kad 算法来获取网络节点的信息,即不需要目录服务器且Kad算法拿到的节点信息只是整个 I2P 网络的一小部分并且每一台运行 I2P 的主机都可以成为中继。
  3. 速度很慢:这是I2P最大的缺点了,速度很慢…根据笔者的测试,下载速度能上20k左右就谢天谢地了,平时只有10k左右…(如图)
    WTFspeed这么慢能干什么用呢?应急翻墙,在所有梯子都失效的情况下,可以使用I2P应急翻墙下载新的梯子.. /**难以封杀**/

什么是I2Pd,与传统的I2P有何不同?

I2Pd与I2P最大的不同是I2Pd是一个采用C++编写的I2P网络的客户端, 而传统的I2P使用的是Java语言..也就是说你再也不用安装臃肿的JRE了… /**Java退散 **/

哪里能下载到?

前面废话说了那么多,那么来进入正题吧..
I2Pd的官方网站为: 
http://i2pd.website/releases/ 这里可以下载已经编译好的I2Pd..点击进入最新的版本的目录.

I2Pd-lastest-version

如果你是32位系统,则下载 win32_mingw.zip 如果是64位系统,则下载 win64_mingw.zip..

/** 居然没有HTTPS, 真是奇怪呢… **/

安装与配置?

下载解压后,在任何位置建立一个目录,将i2pd.exe放到新建立好的目录中…之后在同目录下建立一个文件名为tunnnel.cfg的文件

内容如下:

[FanQiangProxy-XiaoLan-01]
type=client
host=127.0.0.1
port=8964
destination=nqiki6zqs7j6vzmwmpdcf3cyleqtzabvlzpu6bzdc27ncvjih4eq.b32.i2p
inbound.length=0
outbound.length=0
inbound.quantity=3
outbound.quantity=3

这里的nqiki6zqs7j6vzmwmpdcf3cyleqtzabvlzpu6bzdc27ncvjih4eq.b32.i2p是我搭建的出口代理,如果你找到了更好的出口代理,也可以换成其他的…

为了更方便使用,我们可以来建立一个启动器, start.bat, 内容如下

@echo off
echo i2pd daemon starting…
i2pd –socksproxy.enabled=0 –httpproxy.enabled=0 –floodfill –bandwidth=P –tunconf=tunnel.cfg –ipv6

这些都完成之后,该目录下应该有3个文件:

  • i2pd.exe – I2Pd主程序
  • start.bat – 启动器
  • tunnel.cfg – 配置文件

双击start.bat运行I2Pd后应该会弹出如下窗口,并且会卡在Reseed环节..别见怪,这很正常,因为补种的URL已经被墙

Reseed-failed

之后我们将这个程序关掉退出I2P, 打开%APPDATA%/i2pd/netDb目录(将黑体字直接贴到地址栏中回车)

然后下载补种包,补种包可以有两种方式下载

1. https://github.com/XL2014/I2PdSeed

将补种包解压到%APPDATA%/i2pd/netDb目录

2. 使用脚本下载

strFileURL = “https://raw.githubusercontent.com/XL2014/I2PdSeed/master/netDb.zip”
strHDLocation = “file.zip”
Set objXMLHTTP = CreateObject(“MSXML2.XMLHTTP”)
objXMLHTTP.open “GET”, strFileURL, false
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject(“ADODB.Stream”)
objADOStream.Open
objADOStream.Type = 1
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0’Set the stream position to the start
Set objFSO = Createobject(“Scripting.FileSystemObject”)
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if
Set objXMLHTTP = Nothing
ZipFile=”file.zip”
Set objShell = CreateObject( “WScript.Shell” )
appDataLocation=objShell.ExpandEnvironmentStrings(“%APPDATA%”)
ExtractTo= appDataLocation & “\i2pd\”
Set fso = CreateObject(“Scripting.FileSystemObject”)
sourceFile = fso.GetAbsolutePathName(ZipFile)
destFolder = fso.GetAbsolutePathName(ExtractTo)
Set objShell = CreateObject(“Shell.Application”)
Set FilesInZip=objShell.NameSpace(sourceFile).Items()
objShell.NameSpace(destFolder).copyHere FilesInZip, 16
Set fso = Nothing
Set objShell = Nothing
Set FilesInZip = Nothing
MsgBox(“补种完毕”)

将以上内容保存为reseed.vbs然后双击运行,即可自动补种….(感谢不愿透露姓名的唐马儒的建议…)

之后运行运行start.bat

等待大约2分钟,将浏览器的SOCKS5代理设置为 127.0.0.1:8964 就可以使用I2Pd翻墙了.. :)

提示: 最好长期运行以便自动获取最新的种子避免封杀..

参考资料: “如何翻墙”系列:简单扫盲 I2P 的使用

 

原文:https://xiaolan.me/howtousei2pd.html

无需Java使用I2P——I2Pd简单扫盲

利用Letsencrypt创建免费CA证书完美配合Squid https, 和stunnel say bye bye!

步骤如下:
1. 首先注册一个免费的域名; 推荐使用namecheap, 然后将域名的A记录指向你的VPS IP地址:
2. 在VPS上安装Letsencrypt客户端,这里以CENTOS 为例, Debian应该更简单,因为兼容性更好:
先决条件: python必须在2.7.3以上,git必须安装,安装命令:

git clone https://github.com/letsencrypt/letsencrypt

cd letsencrypt

./letsencrypt-auto –agree-dev-preview –server \https://acme-v01.api.letsencrypt.org/directory auth

   在安装一些依赖包后,Let’s Encrypt 将弹出 蓝色的UI 界面要求选择认证的方式:Apache2或Standalone。选择第2项Standalone独立认证。

   接着输入 Email 地址

   同意许可协议

   输入入域名

    完成!

     当看到下列消息时,说明认证已经成功完成:

  1. - Congratulations! Your certificate and chain have been saved at
    /etc/letsencrypt/live/domainname/fullchain.pem. Your cert will
    expire on 2016-01-25. To obtain a new version of the certificate in
    the future, simply run Let's Encrypt again.
    

Let’s Encrypt 将认证的信息保存于 /etc/letsencrypt/live/你的域名目录下。

然后运行:

cd /etc/letsencrypt/live/你的域名/

cp fullchain.pem  privkey.pem /etc/squid/

vi /etc/squid/squid.conf

做如下修改:

https_port 443 cert=/etc/squid/fullchain.pem  key=/etc/squid/privkey.pem

然后ESC :wq 存盘

ps -ef |grep squid

终止squid的所有进程

然后重启squid

squid

回到你的浏览器,新建一个https: 你的域名:443的代理,切换到此代理(主要一定要写你的域名,不能写VPS IP地址,否则没用!,而且域名必须指向你的VPS IP),搞定!

下面是测试结果:

可惜私钥证书的有效期只有三个月,三个月以后又得重新申请证书

来源:翻墙论坛 Gary12

原文:http://www.atgfw.org/2016/02/letsencryptcasquid-https-stunnel-say.html

利用Letsencrypt创建免费CA证书完美配合Squid https, 和stunnel say bye bye!

关于在VPS部署squid https通道的终极教程(已经彻底解决SSL编译的问题)

这里以squid4.0.4为例,平台是centos 7:
1. 编译:
wget http://www.squid-cache.org/Versions/v4/squid-4.0.4-20160205-r14526.tar.gz
tar -xvzf squid-4.0.4-20160205-r14526.tar.gz
cd squid-4.0.4-20160205-r14526
编译之前做好基础准备,安装好openssl 和gcc等,这里就不废话了.
下面是编译的重中之重,直接决定了squid是否能真正支持SSL, 这也是我摸索了好久,今天终于摸索出来突破的成果:
./configure  ‘–build=x86_64-redhat-linux-gnu’ ‘–host=x86_64-redhat-linux-gnu’ ‘–program-prefix=’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib64’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–disable-strict-error-checking’ ‘–exec_prefix=/usr’ ‘–libexecdir=/usr/lib64/squid’ ‘–localstatedir=/var’ ‘–datadir=/usr/share/squid’ ‘–sysconfdir=/etc/squid’ ‘–with-logdir=$(localstatedir)/log/squid’ ‘–with-pidfile=$(localstatedir)/run/squid.pid’ ‘–disable-dependency-tracking’ ‘–enable-eui’ ‘–enable-follow-x-forwarded-for’ ‘–enable-auth’ ‘–enable-auth-basic=DB,NCSA,NIS,POP3,RADIUS,SMB,getpwnam’  ‘–enable-auth-digest=file’ ‘–enable-auth-negotiate=kerberos’  ‘–enable-cache-digests’ ‘–enable-cachemgr-hostname=localhost’ ‘–enable-delay-pools’ ‘–enable-epoll’ ‘–enable-icap-client’ ‘–enable-ident-lookups’ ‘–enable-linux-netfilter’ ‘–enable-removal-policies=heap,lru’ ‘–enable-snmp’ ‘–enable-ssl’ ‘–enable-ssl-crtd’ ‘–enable-storeio=aufs,diskd,ufs’ ‘–enable-wccpv2’ ‘–enable-esi’   ‘–with-aio’ ‘–with-default-user=squid’ ‘–with-filedescriptors=16384’ ‘–with-dl’ ‘–with-openssl’
预配置完成以后,开始编译
make
等待15-20分钟
完成:
make install && cp basic_ncsa_auth /usr/bin/
这里basic_ncsa_auth是实现用户认证的关键文件,后面再讲,先把squid的https通道跑通再说。
然后运行:
squid -v
Squid Cache: Version 4.0.4-20160205-r14526
Service Name: squid
configure options:  ‘–build=x86_64-redhat-linux-gnu’ ‘–host=x86_64-redhat-linux-gnu’ ‘–program-prefix=’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib64’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–disable-strict-error-checking’ ‘–exec_prefix=/usr’ ‘–libexecdir=/usr/lib64/squid’ ‘–localstatedir=/var’ ‘–datadir=/usr/share/squid’ ‘–sysconfdir=/etc/squid’ ‘–with-logdir=$(localstatedir)/log/squid’ ‘–with-pidfile=$(localstatedir)/run/squid.pid’ ‘–disable-dependency-tracking’ ‘–enable-eui’ ‘–enable-follow-x-forwarded-for’ ‘–enable-auth’ ‘–enable-auth-basic=DB,NCSA,NIS,POP3,RADIUS,SMB,getpwnam’ ‘–enable-auth-digest=file’ ‘–enable-auth-negotiate=kerberos’ ‘–enable-cache-digests’ ‘–enable-cachemgr-hostname=localhost’ ‘–enable-delay-pools’ ‘–enable-epoll’ ‘–enable-icap-client’ ‘–enable-ident-lookups’ ‘–enable-linux-netfilter’ ‘–enable-removal-policies=heap,lru’ ‘–enable-snmp’ ‘–enable-ssl’ ‘–enable-ssl-crtd’ ‘–enable-storeio=aufs,diskd,ufs’ ‘–enable-wccpv2’ ‘–enable-esi’ ‘–with-aio’ ‘–with-default-user=squid’ ‘–with-filedescriptors=16384’ ‘–with-dl’ ‘–with-openssl’ ‘build_alias=x86_64-redhat-linux-gnu’ ‘host_alias=x86_64-redhat-linux-gnu’
你会发现squid确实是4.0.4了。
2. 制作证书:
cd /etc/squid/

openssl req -new -x509 -days 7777 -nodes -out vps.pem -keyout vps.pem
openssl gendh 2048 >> vps.pem
openssl x509 -subject -dates -fingerprint -in vps.pem

3. 配置 squid.conf

vi /etc/squid/squid.conf

主要做以下修改(暂时不开启用户认证):

#http_access deny all
http_access allow all
# Squid normally listens to port 3128
#http_port 127.0.0.1:3128
https_port 443 cert=/etc/squid/vps.pem key=/etc/squid/vps.pem 

然后ESC :wq 存盘。

启动squid

[root@vultr ~]# squid 

查看后台进程:

[root@vultr ~]# ps -ef |grep squid
root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:01 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     22642 22621  0 12:40 pts/3    00:00:00 grep –color=auto squid

到此为止:服务端基本配置完毕。

4. 客户端配置:

客户端配置远远没有你们想象中那么简单,因为自签发的证书是通过不了chrome的CA认证的!

所以,简单的建立一个https: vpsip:443的代理,chrome是无法识别,拒绝连接的!

怎么办? 所以这里需要引入stunnel, 通过stunnel跟VPS的SSL证书握手,因为stunnel不检查CA证书,所以没有这个问题,然后把外部的https连接转换为普通的本地http代理,这样chrome就不会检查证书了,因为普通的http连接是不需要检查证书的。 下面是详细的步骤:

a. 通过winscp把上面的vps.pem证书传回本地:

b. 下载安装stunnle (https://www.stunnel.org/downloads.html)

安装以后,主要不要签发生成stunnel自带的证书:

然后把vps.pem放入stunnel的config目录,然后编辑stunnel.conf文件:

把里面的内容统统删光,把下面的内容粘贴进去:

[https]
client = yes
accept  = 800
connect = VPS IP:443
cert = .\vps.pem

把你的VPS IP粘贴进去,800是本地代理监听端口,可以随便改。

启动stunnel 

然后chrome通过swithyomega,新建一个http: 127.0.0.1:800的代理.

切换到此代理,OK! 搞定!现在已经可以用了! 至此squid的https通道已经完全搭建好了!

5. 实现squid用户认证:

因为你可能不希望什么人都可以随意的连接到你的VPS,需要更严格更安全的认证,这时候需要引入squid用户认证。

前面的编译的时候已经做了铺垫,编译生成了用户认证的关键文件: basic_ncsa_auth

下面还需要生成一个密码文件:

yum install httpd

htpasswd  /etc/squid/passwd user1
user1就是用户名
然后输入密码
New password:
Re-type new password:
记住此密码,密码文件存放在/etc/squid/passwd最后配置squid.conf文件

vi /etc/squid/squid.conf

主要做以下修改:

# And finally deny all other access to this proxy

auth_param basic program /usr/bin/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic realm Example.com’s Squid proxy-caching
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

#http_access deny all
#http_access allow all
# Squid normally listens to port 3128
#http_port 127.0.0.1:3128
https_port 443 cert=/etc/squid/vps.pem key=/etc/squid/vps.pem 

完成以后

运行: ps -ef | grep squid

终止掉squid的进程

ps -ef |grep squid

root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:01 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     22642 22621  0 12:40 pts/3    00:00:00 grep –color=auto squid

这里运行两次kill 21539

然后重启squid

[root@vultr ~]# squid

看看后台进程:

ps -ef |grep squid

root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:02 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     23148 23132  0 13:00 pts/0    00:00:00 grep –color=auto squid

这里已经多了basic_ncsa_auth的用户认证进程,说明squidd的用户认证功能已经成功实现!

至此教程全部完成! 这里面最难的其实还是自编译squid SSL支持的实现

来源:  翻墙论坛 Gary12

原文:http://www.atgfw.org/2016/02/vpssquid-httpsssl.html

关于在VPS部署squid https通道的终极教程(已经彻底解决SSL编译的问题)

关于在VPS部署squid https通道的终极教程(已经彻底解决SSL编译的问题)

这里以squid4.0.4为例,平台是centos 7:
1. 编译:
wget http://www.squid-cache.org/Versions/v4/squid-4.0.4-20160205-r14526.tar.gz
tar -xvzf squid-4.0.4-20160205-r14526.tar.gz
cd squid-4.0.4-20160205-r14526
编译之前做好基础准备,安装好openssl 和gcc等,这里就不废话了.
下面是编译的重中之重,直接决定了squid是否能真正支持SSL, 这也是我摸索了好久,今天终于摸索出来突破的成果:
./configure  ‘–build=x86_64-redhat-linux-gnu’ ‘–host=x86_64-redhat-linux-gnu’ ‘–program-prefix=’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib64’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–disable-strict-error-checking’ ‘–exec_prefix=/usr’ ‘–libexecdir=/usr/lib64/squid’ ‘–localstatedir=/var’ ‘–datadir=/usr/share/squid’ ‘–sysconfdir=/etc/squid’ ‘–with-logdir=$(localstatedir)/log/squid’ ‘–with-pidfile=$(localstatedir)/run/squid.pid’ ‘–disable-dependency-tracking’ ‘–enable-eui’ ‘–enable-follow-x-forwarded-for’ ‘–enable-auth’ ‘–enable-auth-basic=DB,NCSA,NIS,POP3,RADIUS,SMB,getpwnam’  ‘–enable-auth-digest=file’ ‘–enable-auth-negotiate=kerberos’  ‘–enable-cache-digests’ ‘–enable-cachemgr-hostname=localhost’ ‘–enable-delay-pools’ ‘–enable-epoll’ ‘–enable-icap-client’ ‘–enable-ident-lookups’ ‘–enable-linux-netfilter’ ‘–enable-removal-policies=heap,lru’ ‘–enable-snmp’ ‘–enable-ssl’ ‘–enable-ssl-crtd’ ‘–enable-storeio=aufs,diskd,ufs’ ‘–enable-wccpv2’ ‘–enable-esi’   ‘–with-aio’ ‘–with-default-user=squid’ ‘–with-filedescriptors=16384’ ‘–with-dl’ ‘–with-openssl’
预配置完成以后,开始编译
make
等待15-20分钟
完成:
make install && cp basic_ncsa_auth /usr/bin/
这里basic_ncsa_auth是实现用户认证的关键文件,后面再讲,先把squid的https通道跑通再说。
然后运行:
squid -v
Squid Cache: Version 4.0.4-20160205-r14526
Service Name: squid
configure options:  ‘–build=x86_64-redhat-linux-gnu’ ‘–host=x86_64-redhat-linux-gnu’ ‘–program-prefix=’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib64’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–disable-strict-error-checking’ ‘–exec_prefix=/usr’ ‘–libexecdir=/usr/lib64/squid’ ‘–localstatedir=/var’ ‘–datadir=/usr/share/squid’ ‘–sysconfdir=/etc/squid’ ‘–with-logdir=$(localstatedir)/log/squid’ ‘–with-pidfile=$(localstatedir)/run/squid.pid’ ‘–disable-dependency-tracking’ ‘–enable-eui’ ‘–enable-follow-x-forwarded-for’ ‘–enable-auth’ ‘–enable-auth-basic=DB,NCSA,NIS,POP3,RADIUS,SMB,getpwnam’ ‘–enable-auth-digest=file’ ‘–enable-auth-negotiate=kerberos’ ‘–enable-cache-digests’ ‘–enable-cachemgr-hostname=localhost’ ‘–enable-delay-pools’ ‘–enable-epoll’ ‘–enable-icap-client’ ‘–enable-ident-lookups’ ‘–enable-linux-netfilter’ ‘–enable-removal-policies=heap,lru’ ‘–enable-snmp’ ‘–enable-ssl’ ‘–enable-ssl-crtd’ ‘–enable-storeio=aufs,diskd,ufs’ ‘–enable-wccpv2’ ‘–enable-esi’ ‘–with-aio’ ‘–with-default-user=squid’ ‘–with-filedescriptors=16384’ ‘–with-dl’ ‘–with-openssl’ ‘build_alias=x86_64-redhat-linux-gnu’ ‘host_alias=x86_64-redhat-linux-gnu’
你会发现squid确实是4.0.4了。
2. 制作证书:
cd /etc/squid/

openssl req -new -x509 -days 7777 -nodes -out vps.pem -keyout vps.pem
openssl gendh 2048 >> vps.pem
openssl x509 -subject -dates -fingerprint -in vps.pem

3. 配置 squid.conf

vi /etc/squid/squid.conf

主要做以下修改(暂时不开启用户认证):

#http_access deny all
http_access allow all
# Squid normally listens to port 3128
#http_port 127.0.0.1:3128
https_port 443 cert=/etc/squid/vps.pem key=/etc/squid/vps.pem 

然后ESC :wq 存盘。

启动squid

[root@vultr ~]# squid 

查看后台进程:

[root@vultr ~]# ps -ef |grep squid
root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:01 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     22642 22621  0 12:40 pts/3    00:00:00 grep –color=auto squid

到此为止:服务端基本配置完毕。

4. 客户端配置:

客户端配置远远没有你们想象中那么简单,因为自签发的证书是通过不了chrome的CA认证的!

所以,简单的建立一个https: vpsip:443的代理,chrome是无法识别,拒绝连接的!

怎么办? 所以这里需要引入stunnel, 通过stunnel跟VPS的SSL证书握手,因为stunnel不检查CA证书,所以没有这个问题,然后把外部的https连接转换为普通的本地http代理,这样chrome就不会检查证书了,因为普通的http连接是不需要检查证书的。 下面是详细的步骤:

a. 通过winscp把上面的vps.pem证书传回本地:

b. 下载安装stunnle (https://www.stunnel.org/downloads.html)

安装以后,主要不要签发生成stunnel自带的证书:

然后把vps.pem放入stunnel的config目录,然后编辑stunnel.conf文件:

把里面的内容统统删光,把下面的内容粘贴进去:

[https]
client = yes
accept  = 800
connect = VPS IP:443
cert = .\vps.pem

把你的VPS IP粘贴进去,800是本地代理监听端口,可以随便改。

启动stunnel 

然后chrome通过swithyomega,新建一个http: 127.0.0.1:800的代理.

切换到此代理,OK! 搞定!现在已经可以用了! 至此squid的https通道已经完全搭建好了!

5. 实现squid用户认证:

因为你可能不希望什么人都可以随意的连接到你的VPS,需要更严格更安全的认证,这时候需要引入squid用户认证。

前面的编译的时候已经做了铺垫,编译生成了用户认证的关键文件: basic_ncsa_auth

下面还需要生成一个密码文件:

yum install httpd

htpasswd  /etc/squid/passwd user1
user1就是用户名
然后输入密码
New password:
Re-type new password:
记住此密码,密码文件存放在/etc/squid/passwd最后配置squid.conf文件

vi /etc/squid/squid.conf

主要做以下修改:

# And finally deny all other access to this proxy

auth_param basic program /usr/bin/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic credentialsttl 2 hours
auth_param basic realm Example.com’s Squid proxy-caching
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

#http_access deny all
#http_access allow all
# Squid normally listens to port 3128
#http_port 127.0.0.1:3128
https_port 443 cert=/etc/squid/vps.pem key=/etc/squid/vps.pem 

完成以后

运行: ps -ef | grep squid

终止掉squid的进程

ps -ef |grep squid

root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:01 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     22642 22621  0 12:40 pts/3    00:00:00 grep –color=auto squid

这里运行两次kill 21539

然后重启squid

[root@vultr ~]# squid

看看后台进程:

ps -ef |grep squid

root     21537     1  0 12:02 ?        00:00:00 squid
squid    21539 21537  0 12:02 ?        00:00:02 (squid-1)
squid    21540 21539  0 12:02 ?        00:00:00 (logfile-daemon) /var/log/squid/access.log
squid    21555 21539  0 12:03 ?        00:00:00 (basic_ncsa_auth) /etc/squid/passwd
root     23148 23132  0 13:00 pts/0    00:00:00 grep –color=auto squid

这里已经多了basic_ncsa_auth的用户认证进程,说明squidd的用户认证功能已经成功实现!

至此教程全部完成! 这里面最难的其实还是自编译squid SSL支持的实现

来源:  翻墙论坛 Gary12

原文:http://www.atgfw.org/2016/02/vpssquid-httpsssl.html

关于在VPS部署squid https通道的终极教程(已经彻底解决SSL编译的问题)

ShadowsocksR C# windows客户端 更新至版本3.7.4.1 修正超时统计 优化统计流程

最新版下载链接:https://github.com/breakwa11/shadowsocks-csharp/releases
BitTorrent Sync:BHS55LP54SO7A434QBB5Z2O6B7A45B2BX
发布链接:https://github.com/breakwa11/shadowsocks-rss
服务端配置教程:Wiki (含单用户和多用户)
ShadowsocksR其它版本:SSR python manyuser, SSR Android, SSR-libev

推荐使用BitTorrent Sync免翻自动更新,最及时自动获取最新版本


版本特点
  1. 全能代理,同一端口支持socks4/socks4a/socks5/http
  2. 节点统计,包括延迟、连接数、当前下载速度、最高速度、出错率等等
  3. 连接管理,随时断开指定节点的连接,或修改节点后自动断开
  4. 协议转换,把UDP包封装于TCP里发送,或把TCP包封装于UDP里发送
  5. 多重代理,通过设置前置socks5/http代理,可达到任意重代理
  6. 协议插件,支持自定义协议和协议混淆,详见ShadowsocksR插件文档

你要是有兴趣和我联系的话,特别是编程技术上的支持,那就到
Twitter: @breakwa11
聊天室: https://gitter.im/breakwa11/shadowsocksr
社区: ShadowsocksR
Blogger: https://breakwa11.blogspot.com Google Group: ShadowsocksR

配置术语说明:
  1. TCP over UDP
    打钩则把TCP包以UDP隧道发送,协议还在完善中,需要和相应的服务端配合使用。目前协议的设计是优化下载和看视频(打开网页不见得比原来的TCP好),但如果在封锁UDP严重的地区,效果会比直接使用TCP更差。建议不要过度使用以免IP被盯上。如果服务器不支持,打钩此选项会导致网页无法打开。
  2. UDP over TCP
    不打钩即以UDP方式发送UDP包,打钩则把UDP包在TCP里发送。以TCP方式发送UDP包在封锁UDP的网络环境下特别有用,如无此需求就不必打钩。
    如果在发送UDP数据失败,可能是服务器不支持。此选项不会影响浏览网页(TCP)
  3. 重连次数
    目标服务器连接失败时选择其它服务器再次尝试连接,仅当没有发送接收任何有效数据时进行(即出现密码错误或加密方式错误时可能不能重连)
  4. 超时秒数(TTL)
    TTL为Time to Live的缩写,表示连接超过多久没有再发送或接收数据时断开(服务端默认值为300),时间单位是秒,较小的值可减少浏览器出现卡顿时的时间,但同时在网络连接不佳时可能会导致部分页面元素或整个页面随机性下载失败。一般网页浏览建议设置为30~120,下载或看视频时建议直接设置为0。设置为0表示不使用TTL设置(实际TTL值由服务端及客户端较小的一方控制)。
快捷操作提示:
  1. 单击任务栏图标弹出服务器配置窗口,Shift+单击弹出选项窗口,而右键图标弹出菜单
  2. 中键点击任务栏图标弹出服务器连接统计窗口
  3. 连接统计窗口点击服务器会切换当前服务器
  4. 连接统计窗口双击服务器会打开服务器配置窗口
  5. 点击连接统计窗口列标题可排序(部分列不允许排序)
  6. 连接统计窗口,在连接状态的错误记录列,双击则重置错误数,双击百分比列则重置本服务器的所有信息
  7. 连接统计窗口,在连接状态的“开”一列,鼠标点击切换开关状态(随机时有效),红色为关闭
  8. 连接统计窗口,右键弹出清空所有的菜单
  9. 连接统计窗口,双击连接数,断开该节点现有的连接(不一定立即清零,双击过就行了)
其它提示:
  • 负载均衡功能,适用于网页浏览,不适用于看视频或下载等需要大流量的环境。如需下载请在连接统计窗口通过下载测速测试速度最快的服务器然后单独连接之。
更新记录:

版本3.7.4.1 2016-02-01
1.修正超时统计
2.优化统计流程
3.发现协议非标准不断开连接

原文:http://www.atgfw.org/2016/02/shadowsocksr-c-windows-3741.html

ShadowsocksR C# windows客户端 更新至版本3.7.4.1 修正超时统计 优化统计流程