Squid缓存代理服务器

Web代理的工作机制

缓存网页对象,减少重复请求
在这里插入图片描述

代理的基本类型

传统类型:适用于Internet,需要明确指定服务端
透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理

使用代理的好处

提高Web访问速度
隐藏客户机的真实IP地址

传统代理部署

设备         	IP地址	
客户机   	20.0.0.18         	    
代理服务器	20.0.0.11           	
web服务器	20.0.0.12  20.0.0.15     	    

Squid安装

  1. 上传文件,解压

     tar xf squid-3.5.23.tar.gz
     cd squid-3.5.23/
    
  2. 配置安装内容

./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
  1. 编译安装
make && make install
cd
ln -s /usr/local/squid/sbin/* /usr/sbin/  
useradd -M -s /sbin/nologin squid    
chown -R squid.squid /usr/local/squid/var   
  1. 编辑配置文件
vi /etc/squid.conf
squid -k parse       


cache_effective_user squid      
cache_effective_group squid  

在这里插入图片描述

5.启动服务

squid -z       
 squid       
netstat -anpt | grep squid 
  1. 配置管理文件
vi /etc/init.d/squid
chmod +x /etc/init.d/squid  
chkconfig --add /etc/init.d/squid  
chkconfig --list  

#!/bin/bash
#chkconfig:35 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 -anpt | 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
  ;;
reload)
     $CMD -k reconfigure  
  ;;
status)
     [ -f $PID ] &> /dev/null
     if [ $? -eq 0 ]
     then netstat -anpt | grep squid
     else echo "squid is not running"
     fi
  ;;
restart)
     $0 stop &> /dev/null     
     $0 start &> /dev/null
  ;;
check)
     $COM -k parse    
  ;;
*)
     echo "用法: $0{start|stop|status|restart|check|reload}"
esac

在这里插入图片描述

  1. 重启服务,查看端口
systemctl stop squid   
systemctl start squid 
systemctl status squid
netstat -anpt | grep squid   

传统代理

  1. 修改配置文件
vi /etc/squid.conf

http_access allow all    
cache_mem 64 MB    
reply_body_max_size 10 MB
maximum_object_size 4096 KB 

squid -k parse  
systemctl stop squid   
systemctl start squid
netstat -anpt | grep squid

在这里插入图片描述

  1. 开始设置web节点
    在web1,web2上
    1.安装软件

     yum -y install httpd
    
  2. 在所有设备上

systemctl stop firewalld   
setenforce 0             
systemctl disable firewalld
sed -i '/SELINUX/s/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
grep -v "#" /etc/selinux/config
  1. 在web1,web2上创建网页
    web1 web2上
echo "<h1>this is web1</h1>" > /var/www/html/index.html
 echo "<h1>this is web1</h1>" > /var/www/html/index.html
systemctl start httpd
curl http://localhost
  1. 客户机浏览器上进行代理设置
    浏览器上在首选项–高级–设置–手动配置代理
    代理服务器ip地址,端口号

  2. 在squid上

iptables -F    
iptables -I INPUT -p TCP --dport 3128 -j ACCEPT   

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

透明代理

基础设备

一个Squid代理服务器:20.0.0.11 192.168.1.13
两个web节点服务器:192.168.1.14,192.168.1.15
一个客户机client:20.0.0.19

  1. 打开浏览器–设置页面–首选项–高级–网络–连接设置—不使用代理

  2. 在squid上

    systemctl stop squid   
    
  3. 开启路由功能

 vi /etc/sysctl.conf 
sysctl -p   
net.ipv4.ip_forward=1
  1. web1 web2上添加路由
route add -net 20.0.0.0/24 gw 192.168.1.13 
route -n   
  1. 配置透明代理服务器
    在squid上配置
    编辑配置文件
vi /etc/squid.conf
systemctl start squid       
netstat -anpt | grep squid    

http_port 192.168.1.10:3128 transparent     
iptables -F  
iptables -t nat -I PREROUTING -i ens33 -s 20.0.0.0/24 -p tcp --dport=80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 20.0.0.0/24 -p tcp --dport=443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport=3128 -j ACCEPT  
iptables -t nat -L  
iptables -L   
  1. 测试
    192.168.1.14
    192.168.1.15
    在这里插入图片描述
    在这里插入图片描述

  2. 查看日志

      tail -f /var/log/httpd/access_log    web1  web2 
      tail -f /usr/local/squid/var/logs/access.log    squid
    

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ACL访问控制

ACL用法

squid 定义acl
acl 列表名称 类型 控制的对象
squid 调用acl
http_access allow/deny 列表名称

常用的ACL列表类型

类型表示
src源地址
dst目标地址
port端口号
dstdomain目标域
time访问时间
maxconn最大并发连接
url_regex目标URL地址
Urlpath_regex整个目标URL路径

举例

禁止源地址为20.0.0.18的IP地址访问

vi /etc/squid.conf

acl client   src 20.0.0.18/32
http_access deny client

在这里插入图片描述

squid日志分析

sarg

  1. 配置网易yum源、并安装依赖包、上传sarg-2.3.7.tar.gz压缩包

  2. 创建目录、编译安装

yum -y install gd gd-devel
mkdir /usr/local/sarg
tar xf sarg-2.3.7.tar.gz
cd sarg-2.3.7/
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection
make && make install
  1. 修改配置文件

     vi /etc/sarg/sarg.conf
    
:7   access_log /usr/local/squid/var/logs/access.log
:25 title "Squid User Access Reports"
:120 output_dir /var/www/html/squid-reports
:178 user_ip no
:206  修改添加 exclude_hosts /usr/local/sarg/ noreport
:184  topuser_sort_field connect reverse
:190(注释) user_sort_field reverse
:257 overwrite_report no
:289 mail_utility mailx
:434 修改 charset UTF-8
:518 weekdays 0-6
:525 hours 0-23
:633 www_document_root  /var/www/html
  1. 创建文件

     touch /usr/local/sarg/noreport
     ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
    
  2. 安装httpd,并开启

     yum -y install httpd
    

在这里插入图片描述

日志分割

crontab -e

* 2 * * * /usr/local/bin/sarg -l /usr/local/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "-1 day" +%Y-%m-%d)-$(date +%Y-%m-%d)

反向代理

工作机制

缓存网页对象,减少重复请求
将互联网请求轮询或按权重份额配到内网Web服务器
代理用户请求,避免用户直接访问Web服务器,提高安全

  1. 编辑配置文件
vi /etc/squid.conf

http_port 20.0.0.11:80 accel vhost vport
cache_peer 192.168.1.14 parent 80 0 no-query originserver round-robin max_conn=100 weight=1 name=web1
cache_peer 192.168.1.15 parent 80 0 no-query originserver round-robin max_conn=100 weight=1 name=web2
cache_peer_domain web1 web2 www.cjy.com
  1. 开启关闭服务
 iptables -F           
iptables -F -t nat
iptables -L -t nat     
systemctl stop squid  
systemctl start squid  
netstat -anpt | grep squid  
  1. 测试
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值