ubuntu16+squid+stunnel搭建代理服务器

来源:赵克立博客 分类: Linux 标签:Linux命令发布时间:2019-09-21 21:08:05最后更新:2019-09-21 22:03:06浏览:2198
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-09-21 22:03:06
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

前言

http代理可以使用很多功能,一般情况下如果你的代理在国外就很简单啦,”没有太坎坷的经历“,基本安装好就好啦,如果代理服务器在国外因为要过GFW,可能就要出一点问题,网络申查可能要误伤一大片网站,特别是我们开发人员经常用到的google.一般都会被墙。

代理搭建好后访问网站会出现立即显示网络被重置的情况,这种情况一般都是因为被检测到直接被拦截啦,虽然没有访问什么违法的网站但是没有解释,就是给你拦截。

显示网页已经被重置的提示,说明你的请求根本就没有到达代理服务器,数据在传送过程中就被拦截啦,因为你的数据到代理之间传的是明文很容易被GFW识别出来,解决方法就是在你的客户端到代理服务器这一段使用加密通道传送数据,方法就是配置squid的https或使用stunnel.

squid可以实现ssl但是我试啦啦过程太麻烦,因为直接安装的squid里面是没有openssl功能的,需要自己编译安装,编译真是个苦力活,滚动啦5到10分钟,最终安装的时候又出现啦莫名奇妙的问题。最终放弃。选择使用stunnel,它可以在两个点之间创建一个加密的连接来传数据,原理就是在你们的客户端和代理服务器之间创建加密传输,数据到代理服务器后再出squid去取数据,再由加密连接传到客户端显示

安装代理

安装认证工具

安装代理服务器前要安装下面工具来生成谁文件

apt-get install apache2-utils -y

安装squid

apt-get install squid

安装stunnel

apt-get install stunnel4

配置代理

生成认证文件

cd /etc/squid
htpasswd -c squid.passwd youproxy(用户名)

修改代理配置

打开/etc/squid/squid.conf 配置文件,注意里央的几个添加用户认证的地方

#添加用户认证
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid.passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
# acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
# acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
# acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
# acl localnet src fc00::/7       # RFC 4193 local private network range
# acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
#添加用户认证
acl ncsa_users proxy_auth REQUIRED
acl SSL_ports port 443
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443  	# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl CONNECT method CONNECT
#添加允许访问的条件
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
#用户认证
http_access deny !ncsa_users
http_access allow ncsa_users
http_access allow localhost manager
http_access deny manager
http_access allow localhost
http_port 8899
dns_nameservers 1.1.1.1 114.114.114.114

重启squid

systemctl restart squid

配置stunnel

生成公钥和私钥

生成私钥

openssl genrsa -out privatekey.pem 2048

生成公钥

openssl req -new -x509 -key privatekey.pem -out publickey.pem -days 1095

合并

cat privatekey.pem publickey.pem >> /etc/stunnel/stunnel.pem

修改stunnel配置

创建(如果没有的话) /etc/stunnel/stunnel.conf  输入下面内容

client = no
[squid]
accept = 4130
connect = 127.0.0.1:8899
cert = /etc/stunnel/stunnel.pem

8899是squid的代理端口,4130是stunnel接受请求的端口

修改 /etc/default/stunnel4 配置文件,enabled=1

ENABLED=1

重启stunnel

service stunnel4 restart

客户端下载stunnel

https://www.stunnel.org/downloads.html

打开stunnel.conf(在安装目录的config文件夹)修改为下面代码,也可以打开stunnel的gui客户端选择edit configuration,修改完后再加载配置,这个界面不能退出,但可以关掉。

1909211569074468121009.png

[https]
client = yes
accept = 127.0.0.1:8880
connect = 47.*.*.51:4130


浏览器使用方法

把生成的publickey.pem下载到本地电脑,生命名为publickey.crt,然后打开谷歌浏览器,高级->http/ssl->管理证书,导入此证书到"受信任的根证书颁发机构",最后浏览器访问的时候把代理设置为 127.0.0.1:8880就可以访问啦





微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python