CentOS7使用squid配合stunnel实现代理服务

CentOS7使用squid配合stunnel实现代理服务。

1. 服务端 配置 squid

yum -y install squid

添加认证用户 user1

# 需要安装 httpd-tools
htpasswd -c /etc/squid/passwd user1

配置 vi /etc/squid/squid.conf

# 认证方式为basic,认证程序路径和密码文件路径 
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
# 认证程序的进程数 
auth_param basic children 5
#  认证有效时间 
auth_param basic credentialsttl 1 hours
# 浏览器显示输入用户/密码对话框时,显示的内容 
auth_param basic realm my test prosy
acl myusers proxy_auth REQUIRED
# 普通用户需要通过认证才能访问 
http_access allow myusers
# 最下面,匹配是从上到下的 
http_access deny all

# 监听端口8089,如果只监听本地stunnel,可设置为 127.0.0.1:8089
http_port 8089

# 另加两行
via off
forwarded_for delete

初始化

squid -z

启动

systemctl enable squid
systemctl start squid

生成自签名证书

openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 3650
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem

2. 服务端 配置stunnel

先安装stunnel

yum -y install stunnel

配置 vi /etc/stunnel/stunnel.conf

[squid]
accept = 8087
connect = 127.0.0.1:8089
cert = /etc/stunnel/stunnel.pem

启动stunnel服务端

stunnel

3. 客户端 配置stunnel

安装stunnel

yum -y install stunnel

把服务器端生成好的证书拿下来。

配置 vi /etc/stunnel/stunnel.conf

[squid]
# 表示是客户端,注意与服务端的差别
client = yes
accept = 8189
connect = server_ip:8087
cert = /etc/stunnel/stunnel.pem

启动stunnel客户端

stunnel

4. 浏览器使用代理

假定stunnel客户端所在的内网IP为 192.168.0.125
编辑浏览器配置中的代理项
IP:192.168.0.125
PORT:8189 (stunnel客户端的监听端口)
用户名:user1
密码:password (执行htpasswd时设置的密码)

5. shell中使用代理

alias proxy='export all_proxy=http://user1:password@192.168.0.125:8189'
alias unproxy='unset all_proxy'

为什么要用stunnel

为什么要用stunnel而不是直接用squid的代理?

如果是在国内用代理访问国内的站点,或者在国外代理访问国外的站点,则完全用不到stunnel。但如果要科学上网,则需要用stunnel来加密转发,不然会收到Connection reset by peer的错误,接下来几分钟内连国内的站点不能再访问,原因你懂的。

所以保险起见,还是用stunnel吧。

最后,只用一个stunnel

上面stunnel安装了两次,分别是服务器端和客户端,貌似有点麻烦。其实只装一个也可以,就是只装客户端,由客户端直接去监听squid。不是在国外服务器端装stunnel的客户端,要装在国内服务器上,不然等于没装!原因见上。

squid.conf 修改如下

# http端口
http_port 8089
# https端口
https_port 4430 cert=/path/to/cert.pem key=/path/to/key.pem 

客户端stunnel.conf配置

connect = server_ip:4430

2 thoughts on “CentOS7使用squid配合stunnel实现代理服务”

  1. 按楼主的文档 操作几次,不知道哪里的问题依然调式不通,可以加个QQ么?

Leave a Comment

豫ICP备19001387号-1