Squid代理服务器
一 Squid服务基础
Squid是linux系统中很常用的一款开源代理服务软件,可以很好的实现HTTP、FTP以及DNS查询、SSL等应用的缓存代理,功能十分强大
·缓存代理概述
代理的工作机制
1工作机制
客户端通过代理请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中有客户需求的页面,则直接将缓存中的页面反馈给客户端;如果没有,则缓存服务器自己向internet中发送请求,获得所需页面后,会将页面保存在自己的缓存中并发送给客户端
2优点
减少了向internet提交重复的请求,提高了响应速度
隐藏用户的真实IP地址,起到一定的保护作用
还可以配置代理服务器达到过滤的目的
代理的基本类型
根据实现方式不同可以分为传统代理和透明代理
1传统代理:在客户机的浏览器、QQ聊天工具、下载软件等程序中,需要手动指定代理服务器的地址和端口,然后才能使用代理来访问网络;使用传统代理时,网页浏览器访问网站时的域名解析请求会发给指定的代理服务器
2透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向,实际仍交给代理服务器处理;使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器
反向代理:用来为企业Web站点提供缓存加速,适用于Internet中的大量用户访问企业的单个(或少量)Web站点的情况
·Squid的基本配置
Squid服务端
软件包:squid-2.6.STABLE21-6.el5
系统服务:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默认监听端口:TCP 3128
默认访问日志:/var/log/squid/access.log
安装服务:提前查看一下是否安装
常用配置项
配置文件中注释太多,先过略一下(没有的配置项可手动添加,否则默认)
http_port 3128
access_log /var/log/squid/access.log squid
cache_mem 64 MB
cache_dir ufs /var/spool/squid 100 16 256
visible_hostname proxy.benet.com
dns_testnames www.google.com www.163.com
maximum_object_size 4096 KB
reply_body_max_size 10240000 allow all
二构建代理服务器
·传统代理
案例环境:如图所示
Squid服务器的配置
默认安装好squid服务后,服务器只对自己进行代理,需要配置主机名、添加访问策略、其他配置可以默认
1修改squid.conf配置文件(其他默认)
2初始化并启动服务(自动初始化)
或者使用squid –z初始化,squid –D启动
确认服务正常监听
客户端的配置
1打开浏览器,打开internet选项,单击连接选项卡
2点击局域网设置,勾选并输入代理服务器地址和默认端口
3测试访问(客户端不用指定DNS服务器也可以)
192.168.1.2
4查看日志
查看代理服务器跟踪日志
查看web服务器访问日志,没有客户端的地址
·透明代理
透明代理的实现依赖于默认路由和防火墙的重定向策略,适用于为局域网主机服务,而不适用于为internet客户机服务
案例环境:如图所示;Linux网关提供透明代理服务;局域网通过代理访问Internet中的网站
配置Squid服务器
1添加透明代理支持并重启服务
2开启路由功能
3设置防火墙策略
清空规则
将访问网站协议HTTP、HTTPS的外发数据转交给本机的squid服务(3128端口)
此时已经可以让客户端使用IP进行访问了,但是不能通过域名访问,因为域名请求不能通过网关防火墙,还需要编写SNAT规则
最后进行访问测试并查看日志验证
三ACL访问控制
Squid提供了强大的代理控制机制,通过合理设置ACL(访问控制列表)并进行限制,可以针对源地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤
在配置文件squid.conf中。ACL访问控制通过以下两个步骤实现:
- 使用acl配置项定义需要控制的条件;
- 通过http_access配置项对已定义的列表做"允许"或"拒绝"访问的控制
·定义ACL列表
每一行acl配置可以定义一条访问控制列表,格式如下
acl 列表名称 列表类型 列表内容 ...
列表名称:由管理员自行指定
列表类型:必须使用Squid预定义的值,包括:
src 源地址(可以是网段、IP地址范围)
dst 目标地址
port 目标端口
dstdomain 目标域,域内所有站点
time 访问时间;如MTWHFAS 8:60-17:30表示每一天的这个时间
maxconn 最大并发连接
url_regex 目标URL地址;如:url_regex –i ^rhsp://
Urlpath_regex 整个目标URL路径
列表内容:是控制的主要对象,可以有多个值,以空格分隔,为"或"的关系
例如:
如果要限制指定地址,可以调用黑白名单(提前创建黑白名单)
·设置acl访问权限
定义好各种访问控制列表后,需要使用http_access配置项来进行控制;每一条配置必须放在acl配置行之后;格式如下
http_access allow或deny 列表名称 ...
每一条http_access规则中可以包含多个acl列表名,以空格风格,为"与"的关系,即满足所有acl列表对应的条件才会进行限制,可以使用!取反
例如:定义一条acl名为all,然后拒绝所有地址
注意:
在没有设置任何规则时,默认拒绝所有
有规则但没有acl时,会采用最后一条规则相反的规则
综合示例
测试访问,被阻止时的显示
不允许下载时的显示