目录
一、缓存代理概述
1.1 web代理的工作机制
1.2 代理的基本类型
■传统代理:适用于internet,需明确指明服务端
■透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理
1.3 使用代理的好处
■提高web’访问速度
■隐藏客户机的真实IP地址
二、Squid安装及运行
前期环境部署:
web端IP:20.0.0.15
squid端IP:20.0.0.16
win10客户端IP:192.168.1.101
三台均需要关闭防火墙、关闭核心防护
2.1 修改主机名
hostnamectl set-hostname squid
su
2.2 编译安装squid
■上传squid软件包到/opt目录下
yum -y install gcc gcc-c++ make pcre perl
cd /opt
tar zxvf squid-3.4.6.tar.gz
cd squid-3.4.6/**
./configure --prefix=/usr/local/squid
–sysconfdir=/etc
–enable-arp-acl
–enable-linux-netfilter
–enable-linux-tproxy
–enable-async-io=100
–enable-err-language=“Simplify_Chinese”
–enable-underscore
–enable-poll
–enable-gnuregex
############解释#################
–prefix=/usr/local/squid \ ‘//安装路径’
–sysconfdir=/etc \ ‘//配置文件目录’
–enable-arp-acl \ ‘//支持acl访问控制列表’
–enable-linux-netfilter \ ‘//支持网络筛选’
–enable-linux-tproxy \ ‘//支持透明’
–enable-async-io=100 \ ‘//io优化’
–enable-err-language=“Simplify_Chinese” \ ‘//报错显示简体中文’
–enable-underscore
–enable-poll \ ‘//关闭默认使用poll模式,开启epoll模式提提升性能’
–enable-gnuregex '//支持正则表达’
make && make install
ln -s /usr/local/squid/sbin/ /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/
vim /etc/squid.conf*
# And finally deny all other access to this proxy下添加与修改:
http_access allow all
//允许所有,关闭拒绝所有,若是拒绝所有,需要放到配置文件的最下方,否则会自deny生效起,后面的参数都不会生效
#http_access deny all
# Squid normally listens to port 3128下添加与修改:
http_port 3128
cache_effective_user squid
cache_effective_group squid
//增加用户和组
squid -k parse
//验证语法
squid -z
//初始化缓存
squid
//启用
netstat -natp | grep 3128
tcp6 0 0 :::3128 ::😗 LISTEN 80863/(squid-1)
2.3 创建systemctl 启动脚本
cd /etc/init.d/
vim squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法: $0(start|stop|status|reload|check|restart)"
;;
esac
2.4 给脚本执行权限,加入到chkconfig中
chmod +x squid
chkconfig --add squid
chkconfig --level 35 squid on
service squid stop
netstat -natp | grep 3128
service squid start
正在启动 squid…
netstat -natp | grep 3128
tcp6 0 0 :::3128 ::: LISTEN 80863/(squid-1)
2.5 设置缓存参数
vim /etc/squid.conf
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
//在cache_effective_group squid下面添加
############解释############
cache_mem 64 MB //自定义缓存空间大小,容量最好为4的倍数
reply_body_max_size 10 MB //允许下载最大文件大小,以字节为单位,默认设置0表示不进行限制
maximum_object_size 4096 KB //允许保存到缓存空间的最大对象的大小,以KB为单位,超过限制不会缓存,直接转到web端
2.6 设置iptables规则
iptables -F
//清空规则
iptables -L
//查看规则
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
service squid reload
netstat -natp | grep 3128
tcp6 0 0 :::3128 ::😗 LISTEN 81055/(squid-1)
2.7 配置web端和客户端
2.7.1 设置主机名
hostnamectl set-hostname web
su
2.7.2 安装http服务
yum -y install httpd
systemctl start httpd
systemctl enable httpd
netstat -natp | grep 80
2.7.3 真机客户端访问20.0.0.16
2.7.4 查看web端httpd的访问日志
cd /var/log/httpd/
cat access_log
20.0.0.1 - - [30/Oct/2020:12:01:44 +0800] “GET /noindex/css/open-sans.css HTTP/1.1” 200 5081 “http://20.0.0.16/” “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36”
//访问ip为:20.0.0.16,此时并没有设置代理
2.7.5 配置代理(传统模式)
1.在谷歌浏览器中打开设置,点击高级;
2.点击系统,打开您计算机的代理设置;
3.打开手动设置代理;
4.输入代理服务器ip和端口号,点击保存,然后关闭,关闭浏览器;
5.重新打开浏览器,再次访问web。
2.7.6 再次查看httpd日志
cat access_log
20.0.0.15 - - [30/Oct/2020:12:10:21 +0800] “GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1” 404 238 “http://20.0.0.16/noindex/css/open-sans.css” “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36”
//此时可以发现访问ip变成了20.0.0.15,启用了代理