
一、搭建squid
1、安装quid
yum install squid
2、关闭squid
killall squid
3、修改配置
vim /etc/squid/squid.conf #在http_access deny all上一行加入: http_access allow all
4、验证配置文件
squid -k parse
5、初始化cache目录
squid -z
6、控制
#启动 squid service squid start #重启 service squid restart
7、加入自启动
systemctl enable squid
8、查看端口开启情况
netstat -ntpl
ps:如果代理https协议端口非443,需修改squid.conf文件中https对应端口为实际端口。
至此,基于squid的代理服务器已经搭建好了,在需要使用这个代理的client上设置该主机的公网ip,及刚才指定的端口 3128 即可使用代理访问互联网。
但是,当你使用chrome进行调试的时候就会发现,第一个网页能够打开,但该网页的个别图片请求失败了。刷新下,发现彻底打不开了,提示连接被拒绝。这是因为没有加密,GFW探测到我们的请求返回的内容,就会把访问中断,并把我们的代理ip暂时列入黑名单,因此接下来的所有请求都会失败,这个黑名单时间大概也就几分钟。为了达到数据加密,防止辛辛苦苦搭建的服务被q,我们接下来使用stunnel服务进行连接加密。
二、搭建stunnel服务
1、服务端安装stunnel服务
yum install -y stunnel
2、生成TLS/SSL证书
openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem
3、将证书 stunnel.pem复制到 /etc/stunnel/ 目录下,修改stunnel配置(/etc/stunnle/stunnle.conf)。防火墙开启3129端口,关闭3128端口。基于云计算的虚拟机直接在控制面板设置即可。
##############配置开始#################### cert = /etc/stunnel/stunnel.pem CAfile = /etc/stunnel/stunnel.pem socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 ;;;chroot = /var/run/stunnel pid = /etc/stunnel/stunnel_server.pid verify = 3 ;;; CApath = certs ;;; CRLpath = crls ;;; CRLfile = crls.pem ;setuid = web ;setgid = web ;;; client=yes compression = zlib ;;; taskbar = no delay = no ;;; failover = rr ;;; failover = prio ;;; sslVersion = TLSv1 ;;; fips=no sslVersion = all ;;; options = NO_SSLv2 ;;; options = NO_SSLv3 debug = 7 syslog = no output = /var/log/stunnel/server.log client = no [squid-proxy] accept = 3129 connect = 3128 ###################配置结束####################
[squid-proxy]是代理的名称
accept = 3129 是stunnel监听端口,供客户端连接
connect = 3128 是squid端口,stunnel接到信息后转入到这个端口。
4、客户端安装stunnel客户端(win)
下载:https://www.stunnel.org/downloads.html
5、修改配置为:
#############配置开始################ cert = stunnel_aws.pem Key = stunnel_aws.pem client = yes [squid-proxy] accept = 3128 connect = 10.10.10.10:3129 ###################配置结束###################
cert = stunnel_aws.pem是服务器生成的证书,下载后放到客户端stunnel\config文件夹
Key = stunnel_aws.pem是服务器生成的证书,下载后放到客户端stunnel\config文件夹
client = yes是开启客户端模式
[squid-proxy]是代理名称
accept = 3128是浏览器需要连接的本地端口
connect = 10.10.10.10:3129是远程服务端stunnel的远程端口,ip是外网ip。
然后运行客户端,浏览器安装Proxy SwitchySharp等代理软件,配置IP是127.0.0.1,端口是3128,就可以正常浏览。