linux cpu占用率如何看
242
2022-11-12
手工编译squid服务,详解squidACL访问控制,日志分析和反向代理(内含源码包)
我的上一篇博客中介绍了squid服务的传统代理和透明代理,用的安装方式是yum在线安装,这一篇中我将采用手工编译的方式来介绍一下其他功能
实验环境:
角色名称 系统环境 IP地址
squid CentOS7 192.168.199.129
Apache1 CentOS7 192.168.199.128
Apache2 CentOS7 192.168.199.130
客户机 win7 192.168.199.133
squid3.5源码包链接 : 提取码:f1m2
sarg2.3.7源码包链接: 提取码:ca7l
一、手工编译安装squid
yum install gcc gcc-c++ make -y #安装编译环境tar zxvf squid-3.5.23.tar.gz -C /opt #解压软件包
上述选项含义如下:
./configure --prefix=/usr/local/squid \ #安装目录 --sysconfdir=/etc \ #配置文件目录 --enable-arp-acl \ #MAC地址管理 --enable-linux-netfilter \ #使用内核过滤 --enable-linux-tproxy \ #支持透明模式 --enable-async-io=100 \ #异步I/O,提升储存性能 --enable-err-language="Simlify_Chinese" \ #错误信息的显示语言 --enable-underscore \ #允许URL中有下划线 --enable-poll \ #使用Poll()模式,提升性能 --enable-gnuregex #使用GNU正则表达式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
cache_effective_user squid #这一项指定squid的程序用户,用来设置初始化,否则启动不成功cache_effective_group squid #默认为cache_effective_user基本组squid -z #-z选项用来初始化缓存目录squid #开启squid服务
二、创建squid的启动脚本
#!/bin/bash#chkconfig: 2345 90 25PID="/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/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 -ntap | 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}" ;;esacchmod +x squidchkconfig --add squidchkconfig --level 35 squid onservice squid check #检查语法
squid服务安装完成后就可以配置代理功能了,具体配置过程我在上一篇博客中有详细讲解。
三、ACL访问控制
squid提供了强大的代理控制机制,通过合理设置ACL并进行限制,可以针对源地址,目标地址,访问的URL路径,访问的时间等各种条件进行过滤
在配置文件squid.conf中,ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件;其二,通过定义访问控制列表,格式如下:
acl 列表名称 列表类型 列表内容 ...
常用的访问控制列表类型
列表类型 用途 src 源IP地址,网段,IP地址范围 dst 目标IP地址,网段,主机名 port 目标端口 dstdomain 目标域,匹配域内所有站点 time 使用代理服务的时间段字母表示一星期中各天的英文缩写,星期一到星期天分别为M T WH F A S maxconn 每个客户机的并发连接数 url_regex 目标资源的URL地址,-i表示忽略大小写 urlpath_regex 目标资源的整个URL地址,-i表示忽略大小写
2 设置访问权限
定义好各种访问控制列表后,需要使用allow或deny 列表名 ......
下面我通过实验来说明:
(1)基于源地址进行控制
service squid stopservice squid start #重新启动squid服务
#再次访问Apache已经是无法访问了
(2)创建相应的列表进行限制
当需要限制的同一类对象较多时,可以使用独立的文件来存放,在ACL配置行的列表内容处指定相应的文件位置即可。
[root@promote init.d]# vim /etc/squid.conf[root@promote init.d]# mkdir /etc/squid[root@promote init.d]# vim /etc/squid/list01 #指定一个名单192.168.199.0/24acl list01 src "/etc/squid/list01" #在列表中指定文件的路径 allow list01 #设置访问权限
在配置ACL时,以下两种默认情况需要注意一下:
#没有设置任何规则时:squid服务将拒绝客户端的请求
#有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限,即如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求
四、squid日志分析
sarg是一款squid日志分析工具,采用HTML格式,详细列出每一位用户访问Internet的站点信息,时间占用信息,排名,连接次数和访问量等。
部署过程如下:
1 安装GD库和Apache
yum install gd gd-devel -y #安装GD库yum install -y #安装Apachesystemctl start #开启Apache
2 安装sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt #解压sarg软件包cd /opt/sarg-2.3.7/ #到sarg的目录下 ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection--prefix=/usr/local/sarg #指定安装目录--sysconfdir=/etc/sarg #配置文件目录--enable-extraprotection #添加额外的安全保护make && make install
3 配置
vim /etc/sarg/sarg.conf7 access_log /usr/local/squid/var/logs/access.log #指定squid的访问日志文件25 title "Squid User Access Reports" #网页标题120 output_dir /var/ #sarg报告输出目录178 user_ip no #使用用户名显示206 exclude_hosts /usr/local/sarg/noreport #指定不计入排序的站点列表文件183 topuser_sort_field connect reverse #在top排序中,指定连接次数,访问字节数,采用降序排序189 user_sort_field connect reverse #对于用户访问记录,连接次数按降序排列256 overwrite_report no #当那个日期报告已存在,是否覆盖报告288 mail_utility mailq.postfix #发送邮件报告的命令433 charset UTF-8 #使用字符集 517 weekdays 0-6 #指定top排序时的星期周期522 hours 7-12,14,16,18-20 #指定top排序是的时间周期632 /var/ #网页根目录
4 运行
上述配置中,添加了不计入排序的站点,所以需要创建下面这个文件
touch /usr/local/sarg/noreport #创建不计入排序的站点ln -s /usr/local/sarg/bin/sarg /usr/local/bin/ #建立软链接sarg #开启服务
5 验证
输入squid地址,指定sarg的报告输出目录即可进行访问
五、squid反向代理
原理:1 squid反向代理服务器位于本地WEB服务器和Internet之间,客户端请求访问WEB服务器时,DNS将访问的域名解析为squid反向代理服务器的IP地址,客户端将访问squid代理服务器
2 如果squid反向代理服务器中缓存了该请求的资源,则将该请求的资源返回给客户端,否则反向代理服务器将向后台的WEB服务器请求资源,然后将应答资源返回给客户端,同时也将该资源缓存在本地,供下一个请求者使用
(1)修改配置文件实验过程:
vim /etc/squid.conf192.168.199.129:80 accel vhost vport #监听本地的80端口,启用加速模式,开启虚拟主机和虚拟端口cache_peer 192.168.199.128 parent 80 0 no-query originserver round-robin weight=1 name=web1 #指定节点服务器的真实IP,端口为80,不开启ICP端口,不进行查询,采用轮询机制,权重为1,别名为web1cache_peer 192.168.199.130 parent 80 0 no-query originserver round-robin weight=1 name=web2cache_peer_domain web1 web2 yun.com #定义域名为yun.comsystemctl stop #需要关闭squid服务器的80端口,不然会出现冲突service squid stopservice squid start
(2)设置两台Apache首页为不同界面便于区分
(3)修改代理服务器的端口,因为在配置文件中,我已经将端口改为80
(4)在客户机上使用域名进行访问
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~