标签:选项 server image connect top only 实现 语法 手工编译安装
缓存代理概述当客户机通过代理来请求 Web 页面时,指定的代理服务器,会先检查自己的缓存如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机需要访问的页面,则用代理服务器向Internet 发送访问请求。
由于客户机的Web 访问请求实际上时由代理服务器来代替完成的,从而可以隐藏用户的真是IP地址,起到一定的保护作用。另一方面,代理服务器承担这类似经纪人人的角色,所以有机会针对要访问的目标,客户机,访问的时间段等进行过滤控制。
mount.cifs //192.168.100.1/squid /abc/ #挂在共享目录
tar zxvf squid-3.4.6.tar.gz -C /opt/ #解压
cd /opt/squid-3.4.6
yum install gcc gcc-c++ make cmake -y //由于时手工编译安装所以需要安装一些需要的环境
./configure --prefix=/usr/local/squid \ #安装目录
--sysconfdir=/etc \ #单独将配置文件修改到其他目录
--enable-arp-acl \ #可在规则中设置为直接通过客户端MAC进行管理,放置客户端使用IP欺骗
--enable-linux-netfilter \ # 使用内核过滤
--enable-linux-tproxy \ # 支持透明模式
--enable-async-io=100 \ #异步I/O提升存储性能,相当于 --enable-pthreads --enable-storeio=ufs,aufs
--enable-err-language="Simplify_Chinese" \ #错误信息的显示语言
--enable-underscore \ #允许URL中有下划线
--enable-poll \ #使用poll()模式提升性能
--enable-gnuregex #使用GNU正则表表达式
manke && 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 #修改配置文件
http_access allow all
http_access deny all
http_port 3128
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
cache_effective_user squid #添加 指定程序用户
cache_effective_group squid #添加 指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid
squid -k parse //检查配置文件语法
squid -z //初始化缓存目录
squid //启动服务
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
chmod +x squid #提升执行权限
chkconfig --add squid #加如到被系统所管理
chkconfig --level 35 squid on #实现开机自启动
iptables -F
setenforce 0
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
整对于 INPUT链 指定 tcp 目标端口 3218 允许转发
service squid reload
配置双网卡内网ens33 外网ens36
echo "1" > /proc/sys/net/ipv4/i[_forward //开启路由转发功能
vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent //只在其中一个IP地址上提供代理
service squid reload
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
列表类型 | 列表内容实列 | 含义\通途 |
---|---|---|
src | 192.168.1.168/192.168.1.0/24、192.168.1.0-192.168.3.0/24 | 源IP地址,网段、IP地址范围 |
dst | 216.163.137.3、61.135.167.0/24、www.playboy.com | 目标IP地址、网段、主机名 |
por | 80 443 8080 20 21 | 目标端口 |
dstdomain | .qq.com | 目标域,匹配域的所在站点 |
time | MTWHF 8:30-17:30 12:00-13:00 AS | 使用代理服务器的时间段 字母表示一个星期隔天的英文所缩写 |
maxconn | 20 | 每个客户机的并非连接数 最大连接数 |
url_regex | url_regex-i^rtsp:// url_regex-i^emule:// | 目标资源的URL地址,-i表示忽略大小写^以什么开头 |
urlpath_regex | urlpath_regex -i sex adult urlpath_regex-i.mp3$ | 目标资源的真个URL路径,-i表示忽略大小写 |
名称 | IP地址 |
---|---|
squid服务器 | 192.168.100.7 |
wed1服务器 | 192.168.100.8 |
wed2服务器 | 192.168.100.9 |
客户端W7 | 192.168.100.10 |
vim /etc/squid.conf
# Deny requests to certain unsafe ports 对于端口进行控制
# Only allow cachemgr access from localhost 对于列表进行控制
acl localhost src 192.168.175.136/32 #基于源地址
acl MYLAN src 192.168.175.0/24 #基于源网段
acl destionhost dst 192.168.175.130/32 #基于目标地址
acl MC20 maxconn 20 #基于端口
acl BURL url_regex -i ^rtsp:// ^emule:// #目标资源的URL地址,-i表示忽略大小写(以什么什么开头)
acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #目标资源的整个URL路径,-i表示忽略大小写(以什么什么结尾)
acl work time MTWHF 08:30-17:30 #基于时间段禁止访问
mkdir /etc/squid #启用对象列表管理
vim dest.list #创建如都在统一网段或者定义大部分禁止访问的地址
192.168.100.10 #客户端W7
vim /etc/squid.conf
acl destionhost dst "/etc/squid/dest.list"
#写入前面创建的的文件路径到需要添加或者删除只需要在前面创建的文件里定义就可以不用在请主配置文件修改
http_access deny destionhost #拒绝列表(注意置顶)
service squid restart
yum install -y gd gd-devel #图像处理 httpd -y
mkdir /usr/local/sarg
tar zxvf sarg-2.3.7.tar.gz -C /opt/
cd /opt/sarg-2.3.7
./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection #额外安全防护
make && make install
cd /etc/sarg/
vim sarg.conf
access_log /usr/local/squid/var/logs/access.log //指定访问日志文件
title "Squid User Access Reports" //网页标题
output_dir /var/www/html/squid-reports //报告输出目录
user_ip no //使用用户名显示
exclude_hosts /usr/local/sarg/noreport //不计入排序的站点列表文件
topuser_sort_field connect reverse //top排序中有连接次数、访问字节、降序排列 升序是normal
user_sort_field reverse //用户访问记录 连接次数、访问字节按降序排序
overwrite_report no //同名日志是否覆盖
mail_utility mailq.postfix //发送邮件报告命令
charset UTF-8 //使用字符集
weekdays 0-6 //top排行的星期周期
hours 0-23 //top排行的时间周期
www_document_root /var/www/html //网页根目录
#添加不计入站点文件,添加的域名将不被显示在排序中
touch /usr/local/sarg/noreport
ln -s /usr/local/sarg/bin/sarg /usr/local/bin/
[root@localhost sarg]# sarg
SARG: 纪录在文件: 242, reading: 100.00%
SARG: 成功的生成报告在 /var/www/html/squid-reports/2018Jul21-2018Jul21
yum install httpd -y
http://192.168.175.128/squid-reports
#周期性计划任务执行每天生成报告
sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)
vim /var/www/html/index.html #wed1 添加首页内容 test01
vim /var/www/html/index.html #wed2 添加首页内容 test02
vim /etc/squid.conf
# Squid normally listens to port 3128 #下添加
http_port 192.168.100.7:80 accel vhost vport
(// 本地地址 accel:加速代理 虚拟主机 虚拟端口)
cache_peer 192.168.100.8 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1
cache_peer 192.168.100.9 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
(//指定负向服务器 ICP端口不开启设为0 不进行查询 指向真实服务器 轮询 最大连接30 权重1 名字)
cache_peer_domain web1 web2 www.yun.com
(//指定web1,web2的域名为www.yun.com )
squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理
标签:选项 server image connect top only 实现 语法 手工编译安装
原文地址:http://blog.51cto.com/13660858/2149312