Squid缓存代理服务器!

  • Squid缓存代理概述
    • 缓存代理的类型
    • 设置缓存代理服务器的好处
    • Web服务器配置
    • Win10客户端配置
    • 搭建透明代理
    • 修改Squid配置文件
    • ACL访问控制
    • Squid日志分析
    • 添加计划任务
    • 搭建反向代理

Squid缓存代理概述

Squid代理服务器是基于Unix的代理服务器(proxy server),它主要提供缓存加速、应用层过滤控制的功能,缓存网页对象,可以减少重复请求

缓存代理的类型

传统代理:适用于Internet,需明确指定服务端(用户需要手动指定代理服务器的ip)

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

反向代理:客户端需要指定代理服务器,代理服务器定义一个后端真实服务器地址池,通过定义地址池进行反向代理

设置缓存代理服务器的好处

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

Squid代理配置:

[root@squid ~]# yum install -y gcc gcc-c++ make       #部署依赖环境
[root@squid opt]# tar xvf squid-3.5.27.tar.gz
[root@squid opt]# cd squid-3.5.27/
[root@squid squid-3.5.27]# ./configure --prefix=/usr/local/squid
> --sysconfdir=/etc                                 #将配置文件修改到/etc目录下
> --enable-arp-acl                                   #可在ACL中设置通过MAC地址进行管理,防止IP欺骗
> --enable-linux-netfilter                           #使用内核过滤
> --enable-linux-tproxy                          #支持透明模式
> --enable-async-io=100                             #异步i/o,提升存储性能
> --enable-err-language="Simplify_Chinese"            #错误信息的显示语音
> --enable-underscore                                #允许URL中有下划线
> --enable-poll                                  #使用Poll模式,提升性能
> --enable-gnuregex                                  #使用GNU正则表达式
[root@squid squid-3.5.27]# make && make install
[root@squid squid-3.5.27]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@squid squid-3.5.27]# useradd -M -s /sbin/nologin squid           #创建程序用户、组
[root@squid squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/  #改变目录属主[root@squid squid-3.5.27]# vim /etc/squid.conf              #修改配置文件

[root@squid squid-3.5.27]# squid -k parse       #检查配置文件
[root@squid squid-3.5.27]# squid -k rec            #重新加载配置文件
[root@squid squid-3.5.27]# squid -zX           #初始化缓存目录

编写squid的启动脚本,启动squid

[root@squid squid-3.5.27]# vim /etc/init.d/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 -ntap | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在启动 squid...." $CMDfi;;
stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;
status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -ntap | grep squidelseecho "squid is not running"fi;;
restart)$0 stop &> /dev/nullecho "正在关闭 squid..."$0 start &> /dev/nullecho "正在启动 squid...";;
reload)$CMD -k reconfigure     //载入新的配置文件;;
check)$CMD -k parse;;
*)echo "用法:$0{start|stop|reload|status|check|restart}";;
esac
[root@squid squid-3.5.27]# chmod +x /etc/init.d/squid
[root@squid squid-3.5.27]# netstat -antp | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      118771/(squid-1)

搭建传统代理

[root@squid squid-3.5.27]# vim /etc/squid.conf      #修改配置文件,添加以下内容
[root@squid squid-3.5.27]# service squid restart
正在关闭 squid...
正在启动 squid...

##修改防火墙规则

[root@squid squid-3.5.27]# iptables -F
[root@squid squid-3.5.27]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

Web服务器配置

Web1:

[root@web1 ~]# yum install -y httpd
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      97766/httpd

Web2:

[root@web2 ~]# yum install -y httpd
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      98921/httpd

Win10客户端配置

设置–高级–添加代理服务器,地址为192.168.8.100,端口3128

访问Web1服务器IP地址,刷新网页并实时查看访问日志,观察来访IP地址


[root@web1 ~]# tail -f /var/log/httpd/access_log 

搭建透明代理

设备准备:基于上面的传统代理设置,Squid服务器增加一个网卡(VMnet1仅主机,ens37:192.168.8.100,不用设置网关,DNS),Win10的IP地址设置为192.168.8.160,网关为Squid的ens36网卡地址

修改Squid配置文件

[root@squid ~]# vim /etc/squid.conf

[root@squid ~]# service squid restart       #重启squid服务
正在关闭 squid...
正在启动 squid...
[root@squid ~]# netstat -antp | grep squid
tcp        0      0 192.168.140.100:3128    0.0.0.0:*               LISTEN      121733/(squid-1
[root@squid ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf    #添加路由转发
[root@squid ~]# sysctl -p
net.ipv4.ip_forward = 1##添加防火墙规则,将来源140网段的80和443端口的流量重定向到3128端口
[root@squid ~]# iptables -F
[root@squid ~]# iptables -t nat -F
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.140.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
[root@squid ~]# iptables -t nat -I PREROUTING -i ens36 -s 192.168.140.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
[root@squid ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT        #由于前面清理了规则,这里需要重新放通3128端口

ACL访问控制

格式:
acl 列表名称 列表类型 列表内容
acl localhost src 192.168.140.100/24            #源地址为192.168.140.100
acl MYLAN src 192.168.140.0/24                  #客户机网段
acl destinationhost dst 192.168.118.100/32      #目标地址为192.168.118.100
acl MC20 maxconn 20                             #最大并发连接20
acl PORT port 21                                #目标端口21
acl DMBLOCK dstdomain .qq.com                   #目标域,匹配域内所有站点
acl BURL url_regex -i ^rtsp:// ^emule://        #以rtsp://. emule://开头的URL,-i表示忽略大小写
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$   #以 .mp3、.mp4、.rmvb结尾的URL路径
acl WORKTIME time MTWHF 08:30-17:30             #时间为周一-至周五8:30~17:30, "MTWHF"为每个星期的英文首字母
[root@squid ~]# vim /etc/squid.conf     #修改配置文件,添加一条规则

Squid日志分析


[root@squid ~]# cd /opt
[root@squid opt]# tar xzf sarg-2.3.7.tar.gz                #解压sarg包
[root@squid opt]# yum install -y gd gd-devel pcre-devel        #安装依赖环境
[root@squid opt]# cd sarg-2.3.7/
[root@squid sarg-2.3.7]# ./configure --prefix=/usr/local/sarg \
> --sysconfdir=/etc/sarg \              #设置配置文件目录,
> --enable-extraprotection               #额外安全防护
[root@squid sarg-2.3.7]# make && make install
[root@squid sarg-2.3.7]# vim /etc/sarg/sarg.conf










[root@squid sarg-2.3.7]# touch /usr/local/sarg/noreport
[root@squid sarg-2.3.7]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin
[root@squid sarg-2.3.7]# sarg
SARG: Records in file: 3695, reading: 100.00%
SARG: Successful report generated on /var/www/html/sarg/2021Jul28-2021Jul28
[root@squid sarg-2.3.7]# yum install httpd -y
[root@squid sarg-2.3.7]# systemctl start httpd
[root@squid sarg-2.3.7]# netstat -antp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      127474/httpd

添加计划任务

[root@squid sarg-2.3.7]# vim /usr/local/sarg/report.sh
#!/bin/bash
#Get current date                               #获取准确时间
TODAY=$(date +%d/%m/%Y)
#Get one yesterday ago today                    #获取前一天
YESTERDAY=$(date -d "1 day ago" +%d/%m/%Y)
/usr/local/sarg/bin/sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/sarg -z -d $YESTERDAY-$TODAY &> /dev/null
exit 0
[root@squid sarg-2.3.7]# chmod +x /usr/local/sarg/report.sh
[root@squid sarg-2.3.7]# crontab -e
0 0 * * * /usr/local/sarg/report.sh
[root@squid sarg-2.3.7]# crontab -l
0 0 * * * /usr/local/sarg/report.sh

搭建反向代理

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

[root@squid sarg-2.3.7]# iptables -F
[root@squid sarg-2.3.7]# iptables -t nat -F
[root@squid sarg-2.3.7]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@squid sarg-2.3.7]# vim /etc/squid.conf           #修改配置文件


第六十五集 Squid缓存代理服务(p≧w≦q)相关推荐

  1. 美学心得(第二百三十五集) 罗国正

    美学心得(第二百三十五集) 罗国正 (2022年3月) 3015.我比较喜欢"破茧化蝶"这个成语,它充满象征意义和美感.其实,人的成长过程,人类的发展就象不断的"破茧化蝶 ...

  2. 美学心得(第二百四十五集) 罗国正

    美学心得(第二百四十五集) 罗国正 (2023年2月) 3039.清朝文学家张惠言,是江苏武进人,三十八岁中进士,官至翰林院编修,工词文,他的美学成就居于常州词派的创始地位,他一生得志的时间很短,享年 ...

  3. 六十五、Leetcode数组系列(上篇)

    @Author:Runsen @Date:2020/6/5 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业排名 ...

  4. 六十五年来,他的祖国向他道歉了三次

    △ "人工智能之父"艾伦 · 麦席森 · 图灵 (Alan Mathison Turing,1912-1954) 2021年6月23日是英国科学家."人工智能之父&quo ...

  5. JavaScript学习(六十五)—数组知识点总结

    JavaScript学习(六十五)-数组 学习内容 一.什么是数组 二.数组的分类 三.数组的创建方式 四.数组元素 五.数组的操作 六.数组元素遍历的四种方法 七.随机数为数组赋值 八.数组的比较 ...

  6. 信息系统项目管理师核心考点(六十五)信息安全基础知识网络安全

    科科过为您带来软考信息系统项目管理师核心重点考点(六十五)信息安全基础知识网络安全,内含思维导图+真题 [信息系统项目管理师核心考点]信息安全基础知识网络安全 1.拒绝服务攻击(Dos) 一种利用合理 ...

  7. 陈艾盐:春燕百集访谈节目第二十五集

    <春燕姐姐>访谈节目共120集,每月分10集播出,记录了上百位企业家对"慈善"的各种不同见解,通过讲述社会真善美的故事,让更多的人了解慈善.发扬慈善精神,构建更加美好, ...

  8. 陈艾盐:《春燕》百集访谈节目第六十九集

    <春燕>访谈节目共120集,每月分10集播出,记录了上百位企业家对"慈善"的各种不同见解,通过讲述社会真善美的故事,让更多的人了解慈善.发扬慈善精神,构建更加美好,和谐 ...

  9. 陈艾盐:《春燕》百集访谈节目第六十二集

    <春燕>访谈节目共120集,每月分10集播出,记录了上百位企业家对"慈善"的各种不同见解,通过讲述社会真善美的故事,让更多的人了解慈善.发扬慈善精神,构建更加美好,和谐 ...

最新文章

  1. 脚本标记 - 异步和延迟
  2. 基于ServletJsp的网上书店设计(三)
  3. alert不会影响到页面中其他代码执行_JavaScript调试技巧合集——为什么不推荐使用alert调试代码?...
  4. 查找和为定值的两个数—Leetcode1
  5. 08r2系统服务器开索引,SQLSERVER2008R2正确使用索引
  6. cwntos linux kde桌面,Centos如何安装KDE的桌面
  7. (软件工程复习核心重点)第七章软件维护-第一节:软件维护的概念和特点
  8. mysql 自增长改动_优化了MYSQL大量写入问题,老板奖励了1000块给我
  9. 说说id获取器手机版_怎么提取自己空间说说的ID
  10. HIVE中常见文件存储格式比较
  11. 剑指Offer28.对称的二叉树
  12. 【甘道夫】Hadoop培训讲义
  13. Numerical Analysis(by Timothy Sauer) Notes
  14. 关于MAC地址修改和扩展以太网
  15. 美团java面试经历_美团面试经历+答案
  16. 2021年江苏高考成绩电话查询,2021年江苏高考具体查分时间 附查分电话方式网址入口...
  17. 方差、协方差、协方差矩阵以及互相关矩阵
  18. 在线测试地址 mp3/mp4
  19. @Scheduled(cron = “* * * * * *“) 注解 cron 表达式使用
  20. Uncaught TypeError: Cannot read properties of undefined (reading ‘push’) ---- vue-router报错

热门文章

  1. 第五部分 家庭创业奔小康10.小本经营,如何获得银行贷款支持
  2. 诺基亚携手澳大利亚NBN成功开展下一代光纤测试
  3. ASP编程十大技巧(基础)
  4. 鼓励政府带头采购云服务,减少自建数据中心
  5. Jenkins忘记管理员密码怎么办
  6. USB CCID类协议中的APDU命令详解
  7. vscode中matplotlib.pyplot 绘制的图像显示不出来
  8. 杭州站 · 参会指南 | 2018中国软件生态大会
  9. 七、.net core(.NET 6)使用Serilog进行配置和实现日志记录
  10. ssh: Could not resolve hostname github.com