实验环境: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地址,否则没效果!