1.squid三种代理特点:
squid普通代理:
需要客户机在浏览器中指定代理服务器的地址、端口。
squid透明代理:
适用于企业的网关主机;
客户机不需要指定代理服务器地址、端口等信息;
通过iptables将客户机的web访问数据转交给代理服务程序处理。
squid反向代理:
为internet用户访问企业web站点提供缓存加速。
2.安装:
源码:
tar xf squid-3.3.5.tar.bz2 && cd squid-3.3.5
./configure ‘�Cprefix=/usr/local/squid’ ‘�Cenable-gnuregex’ ‘�Cenable-dlmalloc’ ‘�Cenable-debug-cbdata’ ‘�Cenable-async-io=100′ ‘�Cwith-pthreads’ ‘�Cenable-storeio=aufs,diskd,ufs’ ‘�Cenable-removal-policies=heap,lru’ ‘�Cenable-icmp’ ‘�Cenable-delay-pools’ ‘�Cenable-useragent-log’ ‘�Cenable-referer-log’ ‘�Cdisable-wccp’ ‘�Cdisable-wccpv2′ ‘�Cenable-kill-parent-hack’ ‘�Cenable-arp-acl’ ‘�Cenable-snmp’ ‘�Cenable-default-err-language=Simplify_Chinese’ ‘�Cenable-err-languages=Simplify_Chinese English’ ‘�Cdisable-poll’ ‘�Cenable-epoll’ ‘�Cdisable-ident-lookups’ ‘�Cdisable-internal-dns’ ‘�Cenable-truncate’ ‘�Cenable-underscores’ ‘�Cenable-basic-auth-helpers=NCSA’ ‘�Cenable-stacktrace’ ‘�Cwith-winbind-auth-challenge’ ‘�Cenable-large-cache-files’ ‘�Cwith-large-files’ ‘�Cwith-maxfd=65535′ ‘�Cenable-x-accelerator-vary’ �Cenable-ltdl-convenience && make && make install
启动/关闭:/usr/local/squid/sbin/squid start|stop
重载配置:/usr/local/squid/sbin/squid -k reconfigure
yum:
yum install -y squid
启动/关闭:service squid start|stop
重载配置:squid -k reconfigure
3.配置信息:
交换空间设定选项
cache_dir ufs /var/spool/squid 100M 16 256 #设置缓存数据时使用的交换空间参数,总大小为100M,16个目录,每个目录下有256个子目录,可以指定多次
cache_swap_low 90
cache_swap_high 95
说明:squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平 线的对象清除。squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,squid 就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分 比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。
maximum_object_size 4096KB #允许保存到高速缓存的最大文件大小
cache_mem 64MB #设置用于缓存功能的内存空间大小,一般为物理内存的1/4-1/3
reply_body_max_size 10240000 allow all #允许用户下载的最大文件大小,默认单位为字节
日志的选项
cache_access_log /usr/local/squid/var/logs/cache_access.log combined #指定客户请求记录日志的完整路径
cache_store_log /usr/local/squid/var/logs/cache_store.log #指定对象存储记录日志的完整路径,该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。
cache_log /var/log/squid/cache.log 指定squid一般信息日志的完整路径
access_log /var/log/squid/access.log squid #指定日志文件的保存位置和记录格式
用户访问控制选项
request_size 100KB 设置用户请求通讯量的最大允许值(单位为KB)。如果用户用POST方法请求时,应该设一个较大的值
reference_age
说明:squid根据对象的LRU(最近最少使用算法)来清除对象,squid依据使用磁盘空间的总量动态地计算对象的LRU年龄。我们用 reference_age定义对象的最大LRU年龄。如果一个对象在指定的reference_age内没有被访问,squid将删除该对象。缺省值为 一个月。你可以使用如下所示的时间表示方法。
1 week
3.5 days
4 months
2.2 hours
管理参数选项
cache_mgr root 设置管理员邮件地址
cache_effective_user squid #启动squid的用户
cache_effective_group squid #启动squid的组
visible_hostname proxy.benet.com #设置代理服务器可用的完整主机名
unique_hostname 如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生
其他选项
http_port 3128 #指定代理服务监听的地址和端口
dns_testnames www.google.com #测试squid开机启动后是否能正常工作
memory_pools on|off #如果设置为on,squid将保留所有已经分配(但未使用)的内存池以便在将来使用。
log_icp_queries on|off #是否对icp请求作日志,如果系统负载过大,可以off,默认为on
4.ACL访问控制:
ACL,访问控制列表,可以从客户机的ip地址、请求访问的url、域名、文件类型、访问时间、并发请求数等各方面进行控制。
定义acl列表:acl 列表名称 列表类型 列表内容
限制acl列表:http_access allow或deny 列表名称
eg:acl all src 0.0.0.0/0.0.0.0
http_access deny all
列表类型:
src 源ip eg:acl lan1 src 192.168.1.0/24
dst 目的ip
port 端口
srcdomain 源域名
dstdomain 目的域名 eg:acl blk_domain dstdomain .qq.com .kaixin001.com
time 时间 eg:acl work_hours time MTWHF 08:30-17:30
maxconn 最大连接 eg:acl max20_conn maxconn 20
url_regex url正则过滤 eg:acl blk_url url_regex -i ^rtsp:// ^mms://
urlpath_regex urlpath正则过滤 eg :acl realfile urlpath_regex -i \.rmvb$ \.rm$ sex
acl列表访问控制:(acl列表可以联合)
http_access deny lan1 blk_url (拒绝lan1的ip访问^rtsp:// ^mms://)
acl访问权限
http_access allow|deny 列表名
5.实验:
squid 传统代理
基本配置:
yum -y install squid*
vim /etc/squid/squid.conf
http_port 192.168.1.77:3128 #指定服务端口
visible_hostname 192.168.1.77 #报错时显示服务器的名称
acl innet src 192.168.1.0/24 #名称为innet的ip群体
acl all src 0.0.0.0/0.0.0.0 #其它ip群体
http_access allow innet #允许innet群体
http_access deny all #拒绝all群体
squid 透明代理
基本配置:
acl all src 0.0.0.0/0.0.0.0
http_port 网关内网IP:3128 transparent
http_access allow all
iptables -t nat -I PREROUTING -i eth0 -p tcp �Cdport 80 -j REDIRECT �Cto-ports 3128
squid 反向代理
基本配置:
http_port 200.168.10.1:80 accel
cache_peer 192.168.10.2 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.3 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.4 parent 80 0 originserver weight=5 max-conn=30
cache_peer 192.168.10.5 parent 80 0 originserver weight=5 max-conn=30
#cache_peer server地址 服务器类型 http端口 icp端口 [可选项]
visible_hostname 200.168.10.1
acl all src 0.0.0.0/0.0.0.0
http_access allow all
反向代理虚拟主机映射:
http_port 200.168.10.1:80 accel
cache_peer 192.168.10.2 parent 80 0 originserver name=a
cache_peer 192.168.10.3 parent 80 0 originserver name=b
cache_peer_domain a www.lamp.com
cache_peer_domain b www.web.com
cache_peer_access a allow all
cache_peer_access b allow all
6.缓存查看:
通过查看web服务器的访问日志,状态为304表示,通过缓存
代理服务器下通过/var/spool/aquid/ 下tree命令,查看文件数,如果有缓存文件,则通过head 00000000X 查看缓存数据。
客户端通过firefox的firebug插件来查看请求和响应头信息,如果是从缓存服务器取得数据,则可以看到squid信息。