Linux Squid

 

Squid 代理服务器
 
 
 
         Squid作为应用层的代理服务软件,主要提供缓存加速、应用层过滤控制的功能。基于Squid可以构建形式多样的代理服务系统,如标准的传统代理、透明代理、反向代理。
 
1. 标准的传统代理
即为普通代理服务,一般以提供HTTP、FTP代理为主,需要客户端的浏览器中指定代理服务器的地址和端口号(默认端口为3128)。一般只能访问Web和Ftp站点。同时,通过代理服务器的缓存机制,局域网用户访问Web站点的速度可以得到显著提高。
2.透明代理
         透明代理提供与传统代理相同的功能和服务,其“透明”之处在于:客户端不需要在浏览器中指定代理服务器的地址和端口号,代理服务对客户端用户来说是“透明”的,用户甚至并不知道自己已经在使用代理服务了。(Redirect,重新定向)
3.反向代理
         反向代理也同样提供缓存加速,只不过服务的对象反过来。传统代理也好,透明代理也好,大多是为局域网用户访问Internet中的Web站点提供缓存代理;而反向代理恰恰相反,主要为Internet中的用户访问局域网内的Web站点提供缓存加速,(这是基于DNS解析的负载均衡分担)
 
 
Squid的基本配置
1.       主配置文件squid.conf
Squid服务默认的配置文件位于/etc/squid/squid.conf,配置参数
A)      http_port 3128    主要用于指定代理服务监听的地址和端口(默认端口号为3128)。如果希望在某一个网络接口上提供服务,可以同事指定IP地址,例如:“http_port 192.168.1.1:3128”。
B)      cache_mem 64MB 设置用于缓存功能的内存空间大小,可以使用MB作为单位。一般来说将这个参数设置为物理内存的1/4~1/3比较合适,具体视服务器的实际性能和负载而定。
C)      maximum_object_size 4096KB    允许保存到高速缓存的最大对象(文件)大小,可以使用KB作为单位。超过指定容量的文件将不会被缓存,而是直接转发给用户。如果需要对音频、视频等较大的文件也进行缓存,可以适当增加该参数值。
D)      reply_body_max_size 10240000 allow all    允许用户下载的最大文件大小,默认单位为字节(byte)。其中,all为默认的访问控制列表名,针对任意地址的代理用户。
E)       cache_dir ufs /var/spool/squid 100 16 256 设置缓存数据时使用的目录参数,其中ufs(Unix File System,UNIX文件系统)是Squid最早使用的缓存文件格式,也是Squid内建的存储格式类型;/var/spool/squid是缓存数据的默认存放目录;后面三个数字依次表示该缓存目录可以使用的磁盘空间大小(单位为MB)、一级子目录个数、二级子目录个数。如果代理用户数量较多,可以适当增大缓存目录的大小。
F)       access_log /var/log/squid/access.log squid。指定日志文件的保存位置和记录格式(Squid),该日志文件用于记录有哪些客户端通过代理访问过那些Web对象等信息。
G)      visible_hostname proxy.benet.com。设置代理服务器可用的完整主机名,在Squid初始化或者启动服务时可能会使用到。
H)      dns_testnames www.google.com   www.sina.com.cn www.163.com 。为了确保能够正常提供Web代理服务,Squid服务在启动时,可以通过该项设置测试DNS解析工作是否存在障碍。按从左到右的顺序,只能成功解析出1个域名,就不再测试后面的其他域名。如果管理员确定DNS解析没有问题或者不需要DNS解析,建议注释掉该项配置,以加快服务初始化的速度。
为了便于阅读各种有效配置,可以除去注视信息及空白行。
 
2.       配置Squid实现基本的代理功能
1) 配置Squid代理服务器端。
[root@Squid squid]# vim /etc/squid/squid.conf
http_port 3128
visible_hostname Squid.kpxiaotian.com                                //指定可见的主机名
reply_body_max_size 10240000 allow all                    //禁止下载超过10M的文件
http_access allow all                                       //查找修改此行,否则应放在“http_access deny all”行之前
2) 初始化并启动代理服务
[root@Squid squid]# service squid restart
[root@Squid squid]# squid –z                        //-z 选项用于初始化缓存目录
[root@Squid squid]# squid –D                       //直接执行Squid启动服务,-D选项指明不进行DNS测试
[root@Squid squid]# squid -k reconfigure           //需要重新加载配置文件时使用此命令
3) 修改客户端浏览器设置,指定所使用代理服务器的IP地址、端口。
4) 通过Squid访问日志查看客户端的访问记录(tail –f 用于跟踪文件变化,按Ctrl+C中止)。
[root@Squid squid]# tail -f /var/log/squid/access.log
 
3.       ACL访问控制
Squid服务提供了强大的访问控制功能,通过定义各种ACL(Access Control List,访问控制列表),这些列表包含了一定的过滤和控制条件,然后只要对这些列表设置是allow(允许)或deny(拒绝)就可以实现访问控制了。
           在Squid.conf配置文件中,HTTP的访问控制主要由acl和http_access配置项共同实现,两个配置项分别用来定义控制的条件(列表)和实施控制。
1)定义acl列表    配置项用于设置访问控制列表的内容,可以为每组特定的控制目标指定一个名称。每一行acl配置定义一个访问控制列表,格式如下:
acl      列表名称          列表类型          列表内容          ……
其中,“列表名称”为用户自行指定,“列表类型”必须使用Squid预定义的值,“列表内容”即控制的具体对象,根据对应类型进行设置。每个列表类型的内容可以包含多个值,各个值之间使用“或”的关系,只要满足其中任何一个值就可以匹配成功。
           Squid预定义的列表类型有很多种,常用的包括源地址、目标地址、访问时间、访问端口等。

列表类型
列表内容示例
含义/用途
src
192.168.1.168/32
192.168.1.0/255.255.255.0
192.168.1.0-192.168.3.0/24
客户端的IP地址或网络段、地址范围
dst
www.playboy.com
216.163.137.3/32
用户访问的目标主机名或者IP地址
Port
80 8000 8080 21
用户访问的目标端口
srcdomain
.benet.com .accpl.com
客户端来源域(根据IP地址作反向解析)
dstdomain
.qq.com .msn.com verycd.com
用户访问的目标域,匹配域内所有站点
time
MTWHF 8:30-17:30
12:00-13:00
AS
用户上网的时间段
字母表示一个星期中各天的英文缩写
M-Monday、T-Tuesday、W-Wednesday、H-Thursday、F-Friday、A-Saturday、S-Sunday
Maxconn
15
客户端的并发HTTP连接数
url_regex
url_regex –i ^rtsp://^mms://
url_regex –I ^emule://
用户访问的整个URL网址,可以使用正则表达式,加-i表示忽略大小写
urlpath_regex
urlpath_regex –i sex adult nude
urlpath_regex –i \.mp3$ \.rar$
匹配用户访问的URL路径(部分),可以使用正则表达式

 

你可能感兴趣的:(代理服务器,linux,linux,squid,squid,Linux代理服务器)