Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器。Squid有广泛的用途,从作为网页服务 器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络 安全,到局域网通过代理上网。Squid主要设计用于在Unix和Linux一类系统运行。
有关代理服务器,主要有以下几个特点:
应用层代理
1、针对特定的网络协议进行代理
2、典型应用:HTTP代理和FTP代理
代理服务器作用
1、局域网内主机可以通过网内可以访问的主机去访问外网
2、可以提供缓存,提高访问效率
3、可以实现一定程度的访问控制
squid服务具有的功能
1、提供HTTP和FTP协议的代理
2、缓存代理内容,提高访问速度
3、对客户机进行访问控制(基于目标地址或时间)
squid代理类型
正向代理:为客户端提供代理服务,需要客户端指定IP
反向代理:为服务器提供代理服务,目的为了减轻真实服务器负担
透明代理:特殊的正向代理,不需要客户端做任何设置,代理服务器必须是网关,就相当于路由器和防火墙

SQUID工作原理是什么?
一、SQUID缓存的存放方式:
每一台Squid 代理服务器上都有若干颗硬盘,每颗硬盘又分割成多个分区,每一个分区又可建立很多目录,目录下才放文件(Squid 把它叫object)。

二、SQUID的查询方式:
SQUID通过查询表的方式来定位某个资源的位置,所查询的表叫Hash table 和Digest table;Digest table在这里可以称之为摘要或者索引,它记录了磁盘上每个分区,每个目录里存的缓存摘要,Hash table在这里可以称之为目录或者提纲,它记录所有的Digest table表信息,SQUID接受到请求后先查询Hash table,在根据Hash table所指向的Digest table查询需要的信息。

三、SQUID服务器之间的关系:
SQUID服务器存在两种工作关系,一种为Child、Parent,当child squid server没有用户需要的数据时,就象parent server发出请求,并持续等待,直到parent server回应自己为止;另外一种为ibling,当本地SQUID server没有用户请求数据时,会向sibling server发出请求,如果sibling server没有资料则会向上级sibling或者INTERNET发送数据请求。

四、SQUID运作模式
1. 当Squid Server 没有资料时,会先向Sibling 的Squid Server 要资料,如果Sibling没资料,就跳过它直接向Parent 要。
2. 向Parent 要资料,然後一直等,直到Parent 给它资料为止(Parent 自己有的资料或上Internet 去拿)。
3. 没有Parent 时,就自己上Internet 去拿。
4. 如果这三者都拿不到资料,才向用户端回报拿不到资料。
一般而言,把网路上一层的Squid Server 设成Sibling 是不错的选择(例如:一个学校将所在城市网和附近的大学设成Sibling),因为网路上一层的Squid Server 服务对象较多,其硬件功能较强,离我们比较近,速度也比较快;万一要不到资料,我们还可以自己上Internet 去拿。那什麽时候设Parent?当您的出口只有一个,或上一层Squid Server 拿不到资料,自己也一定拿不到,只好将上一层Squid Server 设为Parent。

案例一:

透明代理:

拓扑图

p_w_picpath

具体配置步骤:

p_w_picpath

5.配置DNS nat转换

[root@ws ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p udp --dport 53 -o eth1 -j MASQUERADE

6.设置端口重定向

[root@ws ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j REDIRECT --to-ports 3128

7.在squid配置中加入 transparent

p_w_picpath

p_w_picpath

案例二:

拓扑图

p_w_picpath

具体配置步骤:

p_w_picpath