项目测试之Squid代理服务器
测试人员:Tom Yan 测试时间:2011-11-07 QQ:59487626 QQ群:120589528
一、项目目标
1.使用Squid软件来实现代理上网功能
2.实现透明代理
二、软件版本
操作系统版本:RHEL61 x86-64Bit
Squid版本:squid-3.1.16
三、测试步骤
1.准备工作
下载squid-3.1.16
#wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.16.tar.gz
2.解压squid-3.1.16.tar.gz到/usr/src目录下
#tar –zxvf squid-3.1.16.tar.gz –C /usr/src
3.到/usr/src/squid-3.1.16目录下,准备编译安装
#cd /usr/src/squid-3.1.16
4.删除之前的rpm版本和用户,重新建立用户
#rpm –e squid
#userdel –r squid
#groupdel squid
#groupadd –g 23 squid
#useradd –d /dev/null –s /sbin/nologin –u 23 –g 23 squid
5.Configure参数配置
6.编译和安装
#make && make install
7.服务器主配置/usr/local/squid/etc/squid.conf
推荐使用/usr/local/squid/etc/squid.conf.documented
以下信息,未加说明则为默认设置
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost 同意本机数据访问
acl myclass src 192.168.1.0/24 定义控制的域
acl limitdownload urlpath_regex -i \.mp3$ \.mp4$ 定义下载限制
http_access allow myclass 同意内网访问
http_access deny limitdownload 限制下载
http_access deny all 默认限制所有
http_port 3128 代理端口,默认
cache_mem 512 MB 内存缓存大小
maximum_object_size_in_memory 512 KB 内存缓存中文件大小
memory_replacement_policy lru 启用热点移动技术
cache_dir ufs /usr/local/squid/var/cache 1000 16 256 硬盘缓存大小1G,16个目录,256个子目录,注意该目录的访问权限保证squid用户可读写
minimum_object_size 0 KB 缓存文件最小为0K
maximum_object_size 4096 KB 缓存文件最大为4M
cache_swap_low 90 清除时容量保留90%
cache_swap_high 95 容量达到95%时开始清除
logformat combined %>a %ui %un [%{%d/%b/%Y:%H:%M:%S +0000}tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh 自定义日志格式
access_log /usr/local/squid/var/logs/access.log combined 日志文件路径,保证squid用户可读写
coredump_dir /usr/local/squid/var/cache
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
8.Squid服务器启动
更改/usr/local/squid/var下目录的owner为squid
#chown –R squid:squid /usr/local/squid/var
建立链接文件,方便使用service命令操作
#ln –s /usr/local/squid/sbin/squid /etc/rc.d/init.d/squid
建立缓存文件夹
#service squid –z
查看是否建立
启动squid服务
#service squid –NCd1 &
查看是否启动
查看3128监听端口
Squid命令参数说明:
-N 非守护进程模式
-C 不忽略致命信号
-d level 调试等级
-k reconfigure 重启装载配置 shutdown关闭kill 杀掉
-z 建立缓存文件
& 代表后台执行squid服务器进程
9.服务器关闭
#service squid –k shutdown
四、使用IE8测试代理服务器
IE8浏览器设置如下:
IE8打开www.baidu.com
实时监控squid服务器日志信息:
测试结果OK。
五、使用elinks 测试squid代理服务器(透明代理)
Elinks 无法打开网站:
因为elinks无法设置代理服务器地址及端口,此时就有了透明代理的需求。
1. 首先设置客户端的网关为代理服务器地址
2.Squid服务器端设置
#iptables –t nat –A PREROUTING –i eth0 –s 192.168.1.0/24 –p tcp –dport 80 –j REDIRECT –to-ports 3128
将内网的所有指向80端口的请求,全部指向代理服务器的3128端口
/usr/local/squid/etc/squid.conf设置
增加一行:http_port 192.168.1.10:3128 transparent
更新配置信息 service squid –k reconfigure
Elinks 测试结果
Squid透明代理服务器OK。