linux下安装部署squid

一、安装

yum list squid* 查看有什么源,选择一个安装

yum -y install squid

设置开机启动:

chkconfig –level 35 squid on

二、服务器配置

squid 的主配置文件是 /etc/squid/squid.conf,所有squid的设定都是在这个文件里配置

http_port 3128      //设置监听的IP与端口号

cache_mem 64 MB      //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
               //比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。

maximum_object_size 4 MB   //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘

minimum_object_size 0 KB   //设置squid磁盘缓存最小文件

maximum_object_size_in_memory 4096 KB   //设置squid内存缓存最大文件,超过4M的文件不保存到内存

cache_dir ufs /var/spool/squid 100 16 256   //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量

logformat combined %&gt;a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}&gt;h” %Ss:%Sh //log文件日志格式

access_log /var/log/squid/access.log combined  //log文件存放路径和日志格式

cache_log /var/log/squid/cache.log   //设置缓存日志

logfile_rotate 60   //log轮循 60天

cache_swap_high 95  //cache目录使用量大于95%时,开始清理旧的

cache cache_swap_low 90   //cache目录清理到90%时停止。

acl localnet src 192.168.1.0/24  //定义本地网段

http_access allow localnet  //允许本地网段使用

http_access deny all  //拒绝所有

visible_hostname squid.david.dev  //主机名

cache_mgr mchina_tang@qq.com  //管理员邮箱

 三、添加密码授权

// 在 http_access deny all 上面加上如下权限配置,注意,一定要在这句上面

auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwd

acl auth_user proxy_auth REQUIRED

http_access allow auth_user

 

Squid实现用户名密码,使用HTTPBasicAuth 的方式。 需要htpasswd工具来创建passwd文件 (使用 apt-get/yum install httpd-tools的方式安装此工具)

A. 创建用户‘proxy_username’  的命令如下:

  • htpasswd -c /etc/squid/passwd proxy_username

输入相应的密码后,生成 文件 /etc/squid/passwd

 

四、初始化服务

squid -z

squid -k parse      测试并初始化

出现错误 WARNING cache_mem is larger than total disk cache space

cache_mem不能超过cache_dir中的第一个数值,  cache_dir ufs /data/squid_log 200 16 256

cache_mem 不能超过200

启动Squid: /etc/init.d/squid start

检查是否端口启动成功:netstat -na | grep 9680

 

五、https服务配置代理证书

yum install -y gcc openssl openssl-devel #依赖软件

cd /etc/squid/     生成加密代理证书

openssl req -new > myhttps.csr

运行过程中输入密码, 并填写相关信息

openssl rsa -in privkey.pem -out myhttps.key

openssl x509 -in myhttps.csr -out myhttps.crt -req -signkey myhttps.key -days 3650

这里-days 3650,是指这个myhttps.crt的有效期是3650天

找到http_port 3128在后面增加一行:

https_port 443 accel vhost cert=/etc/squid/myhttps.crt key=/etc/squid/myhttps.key

(https proxy配置参考https://smoothnet.org/squid-v3-5-proxy-with-ssl-bump/)

tailf /var/log/squid/cache.log 查看日志

重启squid service squid restart

   启动服务后,http服务可用,https代理服务不可用:

      修改方式如下:

https协议使用,日志中一直报错: routines:SSL23_GET_CLIENT_HELLO:https proxy request, 查询各方资料,一直误解,最后在http://squid-web-proxy-cache.1019090.n4.nabble.com/icap-and-https-td3329449.html中发现只需要配置一个http_port, 并不需要配置https_port

配置如下:

http_port 9680 cert=/etc/squid/myhttps.crt key=/etc/squid/myhttps.key ssl-bump intercept generate-host-certificates=on version=1 options=NO_SSLv2,NO_SSLv3,SINGLE_DH_USE

以下两项配置,很多文章说需要,但是实际中没有使用到,可去掉

#ssl_bump stare all

#ssl_bump bump all

另外有人说的 sslproxy_flags DONT_VERIFY_PEER 也没用上

后来又试了只配置 http_port 9680  也能在http和https下使用,有点困惑了

 

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注