squid配置(草稿)

实验环境:代理服务器squid 192.168.80.181

HTTP服务器 192.168.80.182

Win7客户端 192.168.80.9

代理服务器端配置如下

[root@aa squid-3.5.27]# tar xf squid-3.5.27.tar.gz -C /opt/ #解压squid源码包

[root@aa squid-3.5.27]# yum install perl-devel #安装perl语言编译插件

[root@aa squid-3.5.27]# cd /opt/squid-3.5.27/

[root@aa squid-3.5.27]# ./configure

--prefix=/usr/local/squid

--sysconfdir=/etc

--enable-arp-acl //支持acl

--enable-linux-netfilter //支持透明代理

--enable-linux-tproxy //重定向

--enable-async-io=100

--enable-err-language="Simplify_Chinese"

--enable-underscore --enable-poll

--enable-gnuregex

[root@aa squid-3.5.27]# make && make install //配置、编译、安装

[root@aa squid-3.5.27]# ln -s /usr/local/squid/sbin/* /usr/local/sbin //

[root@aa squid-3.5.27]# useradd -M -s /sbin/nologin squid

[root@aa squid-3.5.27]# chown -R squid:squid /usr/local/squid/var/

[root@aa squid-3.5.27]# vi /etc/squid.conf

http_port 3128 //59行,在下面新增

visible_hostname 192.168.80.181

cache_mem 64 MB

cache_swap_low 80

cache_swap_high 97

cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 //68行,去掉注释配置硬盘缓存,打开#.缓存目录100M,其中一级目录16个,二级256个

cache_effective_user squid

cache_effective_group squid //制定squid用户的执行主和组

[root@aa squid-3.5.27]# squid -k parse //检查配置文件

[root@aa squid-3.5.27]# squid –k rec //重新加载配置文件

[root@aa squid-3.5.27]# squid -zX //初始化缓存目录

[root@aa squid-3.5.27]# vi /etc/init.d/squid //制作管理脚本

#!/bin/bash

#chkconfig: 35 90 25

#config: /etc/squid.conf

#pidfile: /usr/local/squid/var/run/squid.pid

#Description: Squid - Internet Object Cache

PID="/usr/local/squid/var/run/squid.pid"

CONF="/etc/squid.conf"

CMD="/usr/local/squid/sbin/squid"

case "$1" in

start)

netstat -utpln | grep squid &>/dev/null

if [ $? -eq 0 ]

then

echo "Squid is running"

else

$CMD

fi

;;

stop)

$CMD -k kill &>/dev/null

rm -rf $PID &>/dev/null

;;

status)

[ -f $PID ] &>/dev/null

if [ $? -eq 0 ]

then

netstat -utpln | 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 "用法:{start | stop | restart | reload | check | status}"

esac

[root@aa squid-3.5.27]# chmod +x /etc/init.d/squid //赋予启动脚本执行权限

[root@aa squid-3.5.27]# chkconfig --add squid //将squid添加到管理脚本

[root@aa squid-3.5.27]# chkconfig squid on //设置开机自启动

[root@aa squid-3.5.27]# service firewalld stop

[root@aa squid-3.5.27]# setenforce 0

[root@aa squid-3.5.27]# service squid start

[root@aa squid-3.5.27]# netstat -anpt | grep 3128

此时已经可以通过代理服务器访问www服务器了

下面是http服务器的配置

[root@ab ~]# yum install -y httpd //安装httpd服务器

[root@ab ~]# service httpd start //启动

下面客户端直接访问测试

没有指定代理服务器,访问正常

下面客户端指定代理服务器

设置完毕,去http服务器上监控访问日志

[root@ab ~]# tail -f /etc/httpd/logs/access_log

下面再去访问182

访问依旧成功,查看日志发现,实际的访问者为181代理服务器。

缓存服务器内容已经缓存了

-------------------限制下载文件的大小------------

在http服务器上配置

[root@ab ~]# cd /var/www/html/

[root@ab html]# dd if=/dev/zero of=test1.tgz bs=1M count=11

[root@ab html]# dd if=/dev/zero of=test2.tgz bs=1M count=2 //复制出两个tgz文件用于下载测试。

[root@aa squid-3.5.27]# vi /etc/squid.conf

reply_body_max_size 10 MB //限制文件超过10M的不能下载

[root@aa squid-3.5.27]# service squid restart

客户端测试下载情况

当访问下载test2.tgz时可以成功下载

当访问test1.tgz时,由于大小为11M,则不能下载

--------------下面可以配置linux使用代理服务器上网-----------------

[root@ac ~]# export HTTP_PROXY=:3128 //指定http代理服务器

[root@ac ~]# export HTTPS_PROXY=:3128 //指定https代理

[root@ac ~]# export FTP_PROXY=:3128 //指定ftp代理服务器

[root@ac ~]# export NO_PROXY=192.168.1.,192.168.2. //指定访问1 2 段的不转发

以上的可以写入/etc/profile开机启动文件中

[root@ac ~]# yum install -y wget //安装wget下载

实验没有成功

-------------下面配置透明代理------------------

代理服务器做为内网的网关设备,两块网卡,一块连接内网,另一块连接外网,测试客户端主机要指网关。

首先理清实验拓扑:通过181的网关代理,使80.9的win7能够上互联网

Win7:ip地址为192.168.80.9,网关地址为192.168.80.181

代理squid:内网网卡地址为192.168.80.181,使用桥接模式连外网

下面进行实验准备,打开代理服务器的桥接模式,两块网卡地址都已经获得了

181为内网,123.197为外网口地址

Ping百度是通的,说明可以上网

将win7之前的指定代理服务器去掉,此时是上不了网的

指定他的网关为192.168.80.181

下面去配置squid透明代理

[root@aa ~]# vi /etc/squid.conf

http_port 192.168.80.181:3128 transparent //将改行修改如此,指定内网卡监听端口

[root@aa ~]# service squid restart

[root@aa ~]# yum install -y iptables-services

[root@aa ~]# systemctl start iptables

[root@aa ~]# iptables –F //清空防火墙nat表内容

[root@aa ~]# iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -s 192.168.80.0/24 -j REDIRECT --to-ports 3128 //对nat表的PREROUTING链做操作,指定内网卡ens33接收到的来自192.168.80.0/24网段的80端口的tcp请求全部转发给3128端口处理

[root@aa ~]# service iptables save //保存防火墙配置

Win7客户端访问百度成功

-------------------下面可以配置acl访问控制---------

[root@aa ~]# vi /etc/squid.conf

Acl和防火墙一样是从上向下依次匹配,匹配及停止,并执行匹配的动作。

#acl localnet src 192.168.0.0/16 //注释本行默认配置

http_access allow all //在本行上面新增ACL语句,如果在该行下面插入,则访问的已经被全部允许了

1.禁止某IP地址主机上网

acl nolink src 192.168.90.9

http_access deny nolink

2.禁止某网段在某时间段上网

acl nolink src 192.168.1.0/24

acl nowang time MTWHF 9:00-11:30

http_access deny nolink nowang

3.禁止所有人访问某网站(精确匹配)

acl nourl dstdomain -i www..com

http_access deny nourl

4.禁止所有人访问某些网站(含有关键字的都会过虑)

acl nourl url_regex -i taobao.com

http_access deny nourl

5.禁止下载某类型的文件

acl nof urlpath_regex -i \.avi$ \.mkv$

http_access deny nof

6.禁止访问某类型的网站

acl nop url_regex -i ^emule:// ^thunder

http_access deny nop

修改squid配置文件测试

[root@aa ~]# vi /etc/squid.conf

#acl localnet src 192.168.0.0/16 //注释本行默认配置

[root@aa ~]# service squid restart

再次访问,访问被拒绝

---------------配置sarg日志---------------

注意:需要在代理服务器上安装WWW服务器

[root@aa ~]# yum install -y httpd

[root@aa sarg-2.3.11]# tar xf sarg-2.3.11.tar.gz -C /opt/

[root@aa sarg-2.3.11]# cd /opt/sarg-2.3.11/

[root@aa sarg-2.3.11]# ./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotection

[root@aa sarg-2.3.11]# make && make install

[root@aa sarg-2.3.11]# vi /etc/sarg/sarg.conf

7 access_log /usr/local/squid/var/logs/access.log //squid的访问日志位置

25 title "Squid User Access Reports" //网页标题

120 output_dir /var/www/html/squid-reports //分析报告的存放位置

178 user_ip no //不使用IP代替用户ID

184 topuser_sort_field BYTES reverse //升序排列

190 user_sort_field BYTES reverse

206 exclude_hosts /usr/local/sarg/noreport //设置不生成报告的主机

257 overwrite_report no

289 mail_utility mailx //指定发邮件命令

434 charset UTF-8

518 weekdays 0-6 //指定top排序星期周期

523 hours 7-12,14,16,18-20 //指定top排序时间周期

633 www_document_root /var/www/html //网页根目录

[root@aa sarg-2.3.11]# ln -s /usr/local/sarg/bin/sarg /usr/local/bin/

[root@aa sarg-2.3.11]# sarg //启动

SARG: Records in file: 102, reading: 100.00%

SARG: Successful report generated on /var/www/html/squid-reports/2018Mar21-2018Mar22

/squid-reports/ //访问日志页

----------------配置squid反向代理-------------

Squid服务器:内网卡192.168.80.181 外网卡192.168.80.90.181

两台web服务器:192.168.80.182 192.168.80.183

Win7客户端:192.168.90.9 gw192.168.90.181

[root@aa network-scripts]# vi /etc/squid.conf

http_port 192.168.90.181:80 vhost vport

cache_peer 192.168.80.182 parent 80 0 no-query round-robin originserver name=s1

cache_peer 192.168.80.183 parent 80 0 no-query round-robin originserver name=s2

cache_peer_domain s1 www.test.com

cache_peer_domain s2

[root@aa network-scripts]# service squid restart

下面去客户端测试

修改hosts文件

192.168.90.181

192.168.90.181 www.abc.com

访问成功

如果报错访问被拒绝deny改为allow