- 传统代理
- 透明代理
- 反向代理
Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid主要设计用于在Unix一类系统运行。
squid分为三种
1.传统代理
即普通的代理服务,一般以提供HTTP、FTP代理为主,需要客户端在浏览器中指定代理服务器的地址和端口号.
2.透明代理
透明代理提供与传统代理相同的功能和服务,其“透明”之处在于:客户端不需要在浏览器中指定代理服务器的地址和端口号,代理服务对客户端来说是“透明”的,用户甚至不知道自己已经在使用代理服务了.
2.反向代理
反向代理也同样提供缓存加速,只不过服务的对象翻转过来了.传统代理和透明代理大多是为局域网用户访问Internet中的Web站点提供缓存代理,而反向代理恰恰相反,主要是为Internet中用户访问企业局域网内的Web站点提供缓存加速.
配置文件参数简介
http_port 3128
主要用于指定代理服务监听的地址和端口(默认端口号为3128).如果只希望在某一个网络接口上提供服务.
cachemem 64MB
设置用于缓存功能的内存空间大小,可以使用MB做单位,主要用于保持访问较频繁的Web对象,一般设置大小为物理内存的30%~40%
maximum_object_size 4096KB
允许保存到高速缓存的最大文件大小,可以使用KB做单位.超过指定容量的文件将不会被缓存
reply_body_max_size 10240000 allow all
允许用户下载的最大文件大小,默认单位为字节(Byte).其中all为默认的访问控制列表名,针对任意地址的代理用户.
chche_dir ufs /var/spool/squid 100 16 256
设置缓存数据时使用的目录参数,其中nfs是squid是最早的缓存文件格式,也是squid内建的存储格式类型
/var/spool/squid是缓存数据文件的格式
后边三个数字依次表示该缓存目录可以使用的磁盘空间大小(MB)、一级子目录个数、二级子目录个数.如果代理用户数量较多,可以适当增大缓存目录的大小.
access_log /var/log/squid/access.log squid
指定日志文件的保存位置和记录格式,该日志文件用于记录有哪些客户端通过代理访问过哪些Web对象等信息
visible_hostname squid
设置代理服务器的可用的完整主机名,可以使用hostname命令获取
dns_testnames www.google.com www.sina.com.cn www.163.com
为了确保能够正常提供Web代理服务,squid服务在启动时,可以通过该项设置测试DNS解析工作是否正常.
一、传统代理
安装squid软件
# yum install squid --nogpgcheck
修改配置文件
# vi /etc/squid/squid.conf ... http_port 3128 visible_hostname squid http_access allow all
检查配置文件并启动squid服务
# squid -k parse # service squid start Starting squid: .[ OK ]
设定客户端浏览器设置
“设置” --> “Internet选项” --> “连接” --> “局域网设置”
此时打开www.google.com网页可以看到squid日志相关实时信息
# tail -f /var/log/squid/access.log 1380175134.461 233 172.20.48.9 TCP_MISS/204 363 GET http://www.google.com.hk/gen_204? - DIRECT/74.125.128.199 text/html
二、透明代理
自squid2.6以后添加透明代理只需要在http_port配置行后边加上一个名为“transparent”选项即可
# vi /etc/squid/squid.conf http_port 3128 修改为 http_port 3128 transparent http_access allow all 修改为 acl clientip1 src 172.20.48.15 http_access allow clientip1
重新加载squid配置文件
# service squid reload
开启路由转发功能
# echo "1" > /proc/sys/net/ipv4/ip_forward
设置iptables的重定向策略
# iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
利用REDIRECT重定向数据包处理策略,可以在防火墙主机内部转发数据包.
将客户端代理去掉,再次打开www.google.com网页可以看到squid日志相关实时信息
# tail -f /var/log/squid/access.log ... 1380175134.461 233 172.20.48.15 TCP_MISS/204 363 GET http://www.google.com.hk/gen_204? - DIRECT/74.125.128.199 text/html
必须将客户端的网关设置为此squid服务器的IP地址
三、反向代理
添加反向代理支持
# vi /etc/squid/squid.conf http_port 123.127.26.244:80 vhos
指定Web服务器主机位置
cache_peer格式
cache_peer Web服务器IP地址 服务器类型 http端口 icp端口 [可选项]
# vi /etc/squid/squid.conf cache_peer 172.20.10.11 parent 80 0 originserver cache_peer 172.20.10.12 parent 80 0 originserver
重启squid服务
# service squid restart