转载 http://kangshuo.blog.51cto.comlinux
简介:web
squid 是 Linux系统中最经常使用的一款开源代理服务软件正则表达式
(官方网站:http//www.squid-cache.org)浏览器
能够很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大。缓存
做为应用层的代理服务软件,squid主要提供缓存加速、应用层过滤控制的功能。安全
代理的工做机制服务器
当客户机经过代理来请求web页面时,指定的代理服务器会先检查本身的缓存,若是缓存中已有客户机须要的页面,则直接将缓存中页面内容反馈给客户机;若是缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当得到返回的web页面之后,将网页数据保存到缓存中并发送给客户机网络
HTTP代理的缓存加速对象主要是文字、图像等静态web元素。当客户机在不一样的状态下访问同一网站应用时,或者不一样的客户机访问同一网站应用时,能够直接从代理服务器的缓存中获取相应的结果。这样就大大减小了向Internet提交重复的网站web页面请求的过程,提升了客户机的访问响应速度。
并发
因为客户机的web访问请求其实是由代理服务器来代替完成的,从而能够隐藏用户的真实IP地址,起到必定安全保护做用。dom
代理的基本类型:
1.传统代理:
必须在客户机经过浏览器、QQ聊天工具、下载应用软件程序中,手动设置代理服务器的IP地址和端口。
才可使用代理来访问网络应用。
传统代理适用于Internet互联网环境中。
2.透明代理:
和传统代理同样,主要区别在于客户机不须要指定代理服务器的地址和端口号,而是经过默认路由、防火墙策略将访问web请求的80端口重定向到代理服务器的3128端口作映射,重定向的过程对客户机来讲是透明的
透明代理使用于局域网环境中。
安装squid服务的相关配置及命令
squid的版本:3.4.6
squid的版本:3.4.11 特性:辅助协议扩展、腾讯云SSL证书、Store-ID、交易注释、组播DNS
1、搭建传统代理服务
1.编译安装squid
上述编译模块参数含义以下:
--prefix=/usr/local/squid //安装目录
--sysconfdir=/etc //单独将配置文件修改到其余目录
--enable-arp-acl //能够在规则中直接经过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter //使用内核过滤
--enable-linux-tproxy //支持透明模式
--enable-async-io=值 //异步I/O提高存储性能
--enable-err-language="Simplify_Chinese" //错误信息的显示语言
--enable-underscore //容许URL中有下划线
--enable-poll //使用poll()模式,提高性能
--enable-gnuregex //使用GNU正则表达式
安装完后,建立连接文件,建立用户和组
2.Squid的配置文件
Squid的配置文件位于/etc/squid.conf,更详细的配置项请参考/etc/squid.conf.documented文件。
3.Squid的运行控制
(1)检查配置文件语法是否正确
(2.)启动、中止Squid
第一次启动squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的状况下,也能够直接调用Squid程序来启动服务,这时须要先进行初始化。
(3.)使用squid服务脚本
为了使squid服务的启动、中止、重载等操做更加方便,并使用chkconfig和service工具来进行管理。
将编写好的脚本受予执行权限,而后再将squid的程序添加为系统服务
在squid服务器上添加一条防火墙规则,容许客户端经过squid代理去访问web网站
客户机的代理配置
注意:若是客户机是一台Linux的话,要想使用代理服务器(如elinks网页浏览器、wget下载工具),必须经过环境变量来指定代理服务器的地址、端口等信息。
传统代理服务的验证方法
(1.)查看squid访问日志的新增记录
tail /usr/local/squid/var/logs/access.log
经过查看squid的服务器的访问日志,能够发现客户机172.16.16.110去访问web网站服务器172.16.16.172的记录消息。
(2.)查看web访问日志的新增记录
tail /var/log/httpd/access_log
在被访问的web服务器中,经过访问日志发现来自代理服务器172.16.16.22的访问记录,说明当使用代理服务器时,web服务器并不知道客户机的真实IP地址,由于实际是由代理服务器替它在访问。
172.16.16.22的IP地址是代理服务器的地址。
2、搭建透明代理服务
在Linux网关上,构建squid代理服务为局域网客户机去访问Internet提供服务
在全部的局域网客户机上,只需正确配置IP地址、默认网关便可。
1.配置squid支持透明代理
squid服务的默认配置是不支持透明代理的,所以须要修改配置文件。squid2.6以上版本的只需在http_port配置行后面加上一个transparent选项便可。
2.设置iptables的重定向策略
注意:透明代理服务中的squid服务器是构建在Linux网关主机上的,因此要设置防火墙策略将客户机访问外网的数据包交给squid服务器去处理,在防火墙上设置一条REDIRECT(重定向策略),其做用就是将客户机访问互联网的端口映射给squid服务器的3128端口。
注意:REDIRECT也是一种数据包控制类型,只能在nat表的PREROUTING或OUTPUT链以及被调用的链中使用。
注意:此时还要开启路由转发功能,不然数据是过不去的!!!
3.验证透明代理的使用
注意:清除手动代理相关的配置
验证结果:
在squid代理服务器日志发现,客户机192.168.4.110访问过目标网站172.16.16.172的记录信息
在被访问的web网站服务器上发现,来自代理服务器的IP地址为172.16.16.1的访问记录,从而隐藏了真实IP。
3、ACL访问控制
能够针对源地址、目标地址、访问的URL路径、访问的时间等各类条件进行过滤
ACL访问控制经过如下两个步骤来实现:其一,使用acl配置项定义须要控制的条件 其二,经过http_access配置项对已定义的列表作容许 或 拒绝 访问的控制。
1.定义访问控制列表
acl 列表名称 列表类型 列表内容
经常使用的访问控制列表类型:
src : 源IP地址、网段、IP地址范围
dst : 目标IP地址、网段、主机名
port : 目标端口
dstdomain :目标域,匹配域内全部站点
time : 使用代理服务的时间段
maxcom : 每一个客户机的并发链接数
url_regex : 目标资源的URL地址,-i表示忽略大小写
urlpath_regex :目标资源的整个URL路径。
2.设置访问权限
http_access allow或deny 列表名 取反时,加!符号
验证访问控制结果