感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如有转载,请保留源作者博客信息。
Better Me的博客:blog.csdn.net/tantexian
一、squid简介
Squid Cache
(简称为
Squid
)是 HTTP 代理服务器
软件。Squid用途广泛的,可以作为 缓存服务器
,
代理用户向web服务器请求数据并进行缓存,
可以过滤流量帮助网络安全,也可以作为代理服务器链中的一环,向上级代理转发数据或直接连接互联网。
还也可以用在局域网中,使局域网用户通过代理上网。
Squid将数据元缓存在内存中,同时也缓存
DNS查寻的结果,除此之外,它还支持非模块化的DNS查询,对失败的请求进行消极缓存。Squid支持SSL,支持
访问控制。由于使用了ICP,Squid能够实现重叠的代理阵列,从而最大限度的节约带宽。
Squid由一个主要的服务程序Squid,一个DNS查询程序
dnsserver,几个重写请求和执行认证的程序,以及几个管理工具组成。当Squid启动以后,它可以派生出指定数目的
dnsserver进程,而每一个dnsserver进程都可以执行单独的DNS查询,这样一来就大大减少了服务器等待DNS查询的时间。
Squid的另一个优越性在于它使用
访问控制清单(ACL)和访问权限清单(ARL)。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。
二、squid应用
squid即可以作为正向代理服务器也可以作为反向代理服务器。更多关于代理服务器分类,请参考博文:
系统原理分析架构-三--代理服务器简介及分类
(2014-10-15 19:54)
注:本来此文是讲解squid作为反向代理的页面缓存功能的,但是由于squid常用的还有正向代理功能,因此也一并讲解,后续文章中也会以这种思路进行讲解,这样通过对比更能加深对整个squid的理解。
1、squid正向代理服务器
举个简单的例子,假若公司内网机器正常来说都不让访问外网。但是由于工作需要,为研发同事配备了一台统一能够访问外网查看资料的机器。这样每次大家有需要上外网则需要争抢唯一一台外网主机。这种情况在大多数公司存在。聪明的程序员肯定不肯罢休,怎么也要把自己机器捣鼓出能上外网。这时候squid正向代理就能派上用场了。
注:正向代理还包括透明代理,本专题。
2、使用squid正向代理访问外网:
(1)环境:
假设windows机器不能访问外网,能访问内网。(windows7)
有一台linux服务器,能访问外网,且windows机器能够与该机器互相访问。(centos 6.5 mini版,ip:192.168.10.36)
|
(2)node36上安装squid:
#
yum install squid #安装squid
#
vim /etc/sysctl.conf#开启路由转发功能
net.ipv4.ip_forward设置为1
#
vi /etc/sysconfig/network
#
sysctl -p#路由强制生效
# service network restart
配置squid:
#
vim /etc/squid/squid.conf
#http_port指令告诉squid在哪个端口侦听HTTP请求。默认端口是3128
#缓存目录的设置,可以设置多个缓存目录,语法为:<cache_dir> <aufs|ufs> <目录所在> <MBytes大小> <dir1> <dir2>
#设置acl访问控制表
以允许192.168.10.0/24网段内所有客户机访问代理服务器为示例:
配置文件中添加acl my_allow_net src 192.168.10.0/24
配置文件中添加acl my_allow_net src 192.168.10.0/24
(注:该记录一定要添在deny all之前,应该配置文件读到deny all则后面的配置文件就不生效)
# squid -k parse
假如你看不到输出,配置文件有效,你能继续后面的步骤。然而,如果配置文件包含错误,squid会告诉你
# squid -z #初始化缓存空间
# /etc/init.d/squid restart#重启squid生效,起送squid时间比较长,耐心等待
(3)windows下测试代理服务器:
浏览器访问baidu.com
后台日志:
tailf /var/log/squid/access.log
普通正向代理成功。
3、高级功能配置项
#停止squid 最安全的停止squid的方法是使用squid -k shutdown命令: # squid -k shutdown
#重配置运行中的squid进程,重配置运行中的squid最好的方法是使用squid -k reconfigure命令: # squid -k reconfigure
#禁止来自某些IP地址的访问,在squid配置文件中添加以下acl名称及访问规则,并重新加载配置文件 acl deny_net src 192.168.20.6/32 http_access deny deny_net
#禁止在某些时段访问 acl Working_times MTWHF 08:00-17:00 http_access allow Working_times http_access deny !Working_times # 禁止某个代理客户建立过多连接 acl MaxConnLimit maxconn 4 http_access deny MaxConnLimit
|
4、关于squid的透明代理
透明代理业属于正向代理的一种,不同的是普通代理需要在客户端(浏览器局域网代理服务器)设置代理IP和PORT,而透明代理再通过
NAT功能,将特定的数据请求映射到代理服务器上。
ex:#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128
透明代理不再过多讲解,有兴趣请自行查阅相关资料。