实验环境:CentOS6.0
ServerIP:192.168.0.1
ClientIP:192.168.0.8
Port:3128(可以修改)
#yum install squid -y
#vim /etc/squid/squid.conf
***************************************************************************************************************
1.信任用户与目标控制,通过acl定义出localhost等相关用户(相当于用acl起的别名)
acl manager proto cache_object #定义manager为管理功能
acl localhost src 127.0.0.1/32 #定义localhost为本机来源
acl localhost :1 /128
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 #定义连接本机的“昵称”
acl to_localhost dst ::1/128
2.信任用户与目标控制,定义可能使用这部Proxy的网络用户
acl localnet src 192.168.0.0/16
acl localnet src fc00::/7
acl jjflan src 192.168.1.0/24 192.168.100.0/24
acl dropsex urlpath_regex /sexy.*\.jpg #定义出现/sexy且以.jpg结尾的文件的“昵称”
acl dropdomain dstdomain .facebook.com #定义域名“昵称”
acl dropurl url_regex ^http://www.google.com.* #定义网址“昵称”(必须以^开始,以.*结束)
acl dropdomainlist "/etc/squid/dropdomain.txt" #指定某个文件的“昵称”
3.定义可取得的数据端口所在
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
4.定义这些名称是否可放行
http_access allow manager localhost
http_access deny manager #拒绝其他管理来源
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny dropdomain
http_access deny dropsex
http_access deny dropurl
http_access allow jjflan
http_access deny dropcntv
http_access allow localnet
http_access allow localhost
http_access deny all
5.网络端口设置
http_port 3128 #默认端口是3128
6.缓存与内存相关设置
hierarchy_stoplist cgi-bin ?
cache_mem 8 MB #给Proxy额外的内存
7.磁盘高速缓存的配置
cache_dir ufs /var/spool/squid 100 16 256 #缓存共100M,一层文件16个,二层文件256个
coredump_dir /var/spool/squid
minimum_object_size 0 KB #小于0K的数据不要放缓存
maximum_object_size 4096 KB #大于4M的数据不要放于缓存
cache_swap_low 90 #减低到90%的磁盘高速缓存为止
cache_swap_high 95 #磁盘高速缓存使用到95%时开始减少
8.其它可能用到的默认值
access_log /var/log/squid/access.log squid #记录使用过squid的用户
ftp_user Squid@ #用Proxy登录ftp时使用的账号名称
ftp_passive on #代理的ftp服务采用被动连接
9.磁盘中缓存的存在时间
# 网址开头 最小时间 百分比 最大时间 (以分钟为单位)
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
refresh_pattern \.vbird\. 120 50% 1440
(在网址出现.vbird.时,数据缓存2小时后就算是旧数据,最长保存一天,经过50%的时间后也会被判为旧数据)
cache_mgr 287523394@qq.com #默认的proxy管理员的email
cache_effective_user squid #启动squid PID的拥有者
cache_effective_group squid #启动squid PID的组
visible_hostname Server1.example.com #由于DNS问题,需要设置主机名
ipcache_size 1024 #IP缓存的设置值
ipcache_low 90
ipcache_high 95
*********************************************************************************************************
#/etc/init.d/squid start
#/etc/init.d/squid reload (刷新的时候使用这个命令)
针对Proxy的其它操作:
1.增加/srv/squid/目录给予2G的容量作为磁盘高速缓存
#vim /etc/squid/squid.conf
**********************************************************************************
添加:
cache_dir ufs /srv/squid 2000 16 256
**********************************************************************************
#mkdir /srv/squid
#chmod 750 /srv/squid
#chown squid:squid /srv/squid
#chcon --reference=/var/spool/squid /srv/squid
#/etc/init.d/squid restart
默认1G的高速缓存占用10M内存,squid程序本身占用15M内存,配置文件中的“cache_mem”选项指的是在此基础上额外加的内存
2.不进行某些网页的缓存操作
#vim /etc/squid/squid.conf
************************************************************************************
acl QUERY urlpath_regex cgi-bin \?
acl denyphp urlpath_regex \.php$
cache deny QUERY #拒绝后面的URL被缓存
cache deny denyphp #拒绝以php为结尾的网页缓存(php一般为动态网页)
************************************************************************************
#/etc/init.d/squid reload
3.防火墙和SELinux的设置:
#iptables -A INPUT -i $EXTIF -p tcp -s 192.168.100.0/24 --dport 3128 -j ACCEPT
(防火墙对外网使用Proxy的过滤限制)
对于SELinux,配置文件类型是squid_conf_t,缓存目录类型是squid_cache_t,/var/spool/类型是var_t
4.上层Proxy与获取数据分流的设定
#vim /etc/squid/squid.conf
**********************************************************************************************
cache_peer hinet.cetos.vbird parent 3128 3130 proxy-only no-query no-digest
cache_peer_domain hinet.centos.vbird .cn
**********************************************************************************************
#/etc/init.d/squid reload
语法:
cache_peer [上层Proxy主机名] [Proxy角色] [Proxy Port] [icp port] [参数]
参数:
proxy-only:向上层请求到的数据不缓存到本地Proxy;
wieght=n: n值越大,表示该Proxy越重要;
no-query: 向上层请求数据时,不发送icp数据包;
no-digest: 不向附近主机要求建立digest记录表格;
no-netdb-exchange:不向附近的Proxy发送ICMP数据包请求。
cache_peer_domain [上层Proxy主机名] [要求的域名]
5.Proxy+NAT:形成透明代理(Transparent Proxy)
1>在对外的防火墙服务器(NAT)上安装Proxy;
2>在Proxy上启动transparent功能;
#vim /etc/squid/squid.conf
****************************************************
修改:
http_port 3128 transparent
****************************************************
#/etc/init.d/squid reload
3>NAT服务器加上一条port 80转port 3128的规则
#iptables -t nat -A PREROUTING -i $EXTIF -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
6.配置Proxy使代理不使用缓存
删除缓存目录后,在配置文件设置缓存目录的地方添加read-only选项即可
#/etc/init.d/squid stop
#rm -fr /var/spool/squid/*
#vim /etc/squid/squid.conf
*************************************************************
修改:
cache_dir ufs /var/spool/squid 100 16 256 read-only
cache_mem 0MB
*************************************************************
/etc/init.d/squid start
7.Proxy的认证设置
使用squid自带的ncsa_auth认证模块,该模块利用Apache提供的帐号密码建立命令所制作的密码文件作为验证依据
配置条件:
内部网络192.168.0.0/24使用Proxy时不需要验证
外部主机192.168.1.0/24使用Proxy需要验证
使用NCSA的基本身份验证方式,且密码文件建立在/etc/squid/squid_user.txt
上述仅有一个用户student,密码:westos
#rpm -ql squid | grep ncsa
#yum install httpd
#rpm -ql httpd-tools | grep htpasswd
#vim /etc/squid/squid.conf(修改)
************************************************************************
1.设置验证相关的参数(必须放置文件最前面,否则会报错)
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_user.txt #通过ncsa_auth读取squid_user.txt
auth_param basic children 5 #启动5个程序来管理验证的需求
auth_param basic realm Welcom to This!
2.针对验证功能放行与否的acl与http_access设置
acl jjflan src 192.168.0.0/24
acl squid_user proxy_auth REQUIRED #建立一个需要验证的acl名称
http_access allow jjflan
http_access allow quid_user #对于验证处理放于最后
**************************************************************************
#htpasswd -c /etc/squid/squid_user.txt student
#/etc/init.d/squid restart
8.可以配合squid官方给出的末端日志分析工具:SARG分析Proxy的代理情况(监控)
#yum install gd -y
从网站上下载sarg的rpm包
#rpm -ivh sarg-*
#vim /etc/sarg/sarg.conf
***************************************************************************
title "Squid 用户访问报告" #在第49行左右
font_size 12px #第69行左右
charset UTF-8 #第353行左右
***************************************************************************
#sarg
#sarg -d 02/08/2011 #查看2011年8月2号的报表
#sh /etc/cron.daily/sarg #制作每天报表
通过http访问报表结果
http://localhost/sarg即可
注:
1.代理服务器是用在应用层上的一种防火墙方式,硬盘的性能是决定Proxy性能的关键;
2.NAT服务器:伪装、过滤数据包,工作于二、三、四层协议上;Proxy服务器:由服务程序提供代理,工作于应用层部分;
3.由于一般Proxy有缓存功能(可以取消该功能),不太适合动态网页;
4.squid.conf文件内,权限过滤的设置是有顺序的!!!!
5.通常写该配置文件时,先写deny的选项,后写allow的选项。
6.用虚拟机做实验时,注意IP地址,否则没效果!