squid代理服务器详细配置及介绍

  1. 云栖社区>
  2. 博客>
  3. 正文

squid代理服务器详细配置及介绍

吴梦涵 浏览648
展开阅读全文

转载 http://kangshuo.blog.51cto.com

简介:

squid 是 Linux系统中最常用的一款开源代理服务软件

(官方网站:http//www.squid-cache.org

可以很好地实现HTTPFTP,以及DNS查询SSL等应用的缓存代理,功能十分强大。

作为应用层的代理服务软件,squid主要提供缓存加速、应用层过滤控制的功能。



代理的工作机制

  当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已有客户机需要的页面,则直接将缓存中页面内容反馈给客户机;如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机


wKiom1klrf6TVvXwAAAwfICu4Ok577.jpg-wh_50

   HTTP代理的缓存加速对象主要是文字、图像等静态web元素。当客户机在不同的状态下访问同一网站应用时,或者不同的客户机访问同一网站应用时,可以直接从代理服务器的缓存中获取相应的结果。这样就大大减少了向Internet提交重复的网站web页面请求的过程,提高了客户机的访问响应速度

由于客户机的web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定安全保护作用。

  代理的基本类型:


    1.统代理

必须在客户机通过浏览器、QQ聊天工具、下载应用软件程序中,手动设置代理服务器的IP地址和端口。

才可以使用代理来访问网络应用。

传统代理适用于Internet互联网环境中。

   2.透明代理:

 和传统代理一样,主要区别在于客户机不需要指定代理服务器的地址和端口号,而是通过默认路由、防火墙策略将访问web请求的80端口重定向到代理服务器的3128端口做映射,重定向的过程对客户机来说是透明的

透明代理使用于局域网环境中。


安装squid服务的相关配置及命令

  •     squid的版本:3.4.6

  •     squid的版本:3.4.11 特性:辅助协议扩展、腾讯云SSL证书、Store-ID、交易注释、组播DNS


一、搭建传统代理服务

wKiom1km72_BEMv-AABMkQv3rOw811.jpg-wh_50


  1.编译安装squid

  wKiom1km9QSgw6TJAAGzreQFx8s425.jpg-wh_50


wKiom1km9YKAjZLVAAGksEIKyWo680.jpg-wh_50

上述编译模块参数含义如下:

 --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正则表达式


安装完后,创建链接文件,创建用户和组

wKiom1koQXjxZXa_AAFV0aLZyec407.jpg-wh_50

2.Squid的配置文件

 Squid的配置文件位于/etc/squid.conf,更详细的配置项请参考/etc/squid.conf.documented文件。

wKiom1koQ7SB649oAALuR0GbM6s356.jpg-wh_50

3.Squid的运行控制

  (1)检查配置文件语法是否正确

   wKiom1koRdKBmR3aAAD1IFNJwak234.jpg-wh_50

(2.)启动、停止Squid

第一次启动squid服务时,会自动初始化缓存目录。在没有可用的Squid服务脚本的情况下,也可以直接调用Squid程序来启动服务,这时需要先进行初始化。

wKioL1koSQzQ8gXkAAIAKEU_UXY878.jpg-wh_50

wKioL1koSdmDCdKsAAFg6SsywGE667.jpg-wh_50

(3.)使用squid服务脚本

 为了使squid服务的启动、停止、重载等操作更加方便,并使用chkconfig和service工具来进行管理。

wKiom1koTFCxbYc3AAH223zOI7U594.jpg-wh_50

wKioL1koTkKwQW-IAAHBlAJzaGY401.jpg-wh_50

将编写好的脚本受予执行权限,然后再将squid的程序添加为系统服务

wKioL1koUBqQt3ikAAFG15Haja0486.jpg-wh_50


在squid服务器上添加一条防火墙规则,允许客户端通过squid代理去访问web网站

wKioL1koUmnj2hG2AAFo4JExgI8914.jpg-wh_50

客户机的代理配置


wKiom1koXU2BHqwwAAIHaDeNxBg961.jpg-wh_50


wKioL1koXczStUPxAANtbNfSxXA310.jpg-wh_50

注意:如果客户机是一台Linux的话,要想使用代理服务器(如elinks网页浏览器、wget下载工具),必须通过环境变量来指定代理服务器的地址、端口等信息。

 

传统代理服务的验证方法

       wKioL1koXKvwTEKEAAQ7660qMR4090.jpg-wh_50

 (1.)查看squid访问日志的新增记录

     tail /usr/local/squid/var/logs/access.log

  wKioL1koXxvCEdyWAAOhXvaEKI0668.jpg-wh_50

通过查看squid的服务器的访问日志,可以发现客户机172.16.16.110去访问web网站服务器172.16.16.172的记录消息。

(2.)查看web访问日志的新增记录

     tail /var/log/httpd/access_log

   wKioL1koYRfz3-_VAAMoeZ45IPs525.jpg-wh_50     

在被访问的web服务器中,通过访问日志发现来自代理服务器172.16.16.22的访问记录,说明当使用代理服务器时,web服务器并不知道客户机的真实IP地址,因为实际是由代理服务器替它在访问。

172.16.16.22的IP地址是代理服务器的地址。


二、搭建透明代理服务

  1.    在Linux网关上,构建squid代理服务为局域网客户机去访问Internet提供服务

  2.     在所有的局域网客户机上,只需正确配置IP地址、默认网关即可。

wKiom1koZOuAShIDAABrImUfJ2k546.jpg-wh_50

1.配置squid支持透明代理

  squid服务的默认配置是不支持透明代理的,因此需要修改配置文件。squid2.6以上版本的只需在http_port配置行后面加上一个transparent选项即可。

wKioL1koZpmDjxaNAAIqH-ahSkQ253.jpg-wh_50


2.设置iptables的重定向策略

注意:透明代理服务中的squid服务器是构建在Linux网关主机上的,所以要设置防火墙策略将客户机访问外网的数据包交给squid服务器去处理,在防火墙上设置一条REDIRECT(重定向策略),其作用就是将客户机访问互联网的端口映射给squid服务器的3128端口。

注意:REDIRECT也是一种数据包控制类型,只能在nat表的PREROUTING或OUTPUT链以及被调用的链中使用。

wKioL1kpllHxj9yHAAEorxuuzs8550.jpg-wh_50

注意:此时还要开启路由转发功能,否则数据是过不去的!!!

wKiom1kpm1yza8PaAACB-kvJ5Uc032.jpg-wh_50

3.验证透明代理的使用

  注意:清除手动代理相关的配置

wKiom1kpm-vxSRw9AAFzjoxrgA8147.jpg-wh_50

验证结果:

在squid代理服务器日志发现,客户机192.168.4.110访问过目标网站172.16.16.172的记录信息

wKioL1kppwiwzTZ3AADlDwaiObo975.jpg-wh_50

在被访问的web网站服务器上发现,来自代理服务器的IP地址为172.16.16.1的访问记录,从而隐藏了真实IP。

wKiom1kpp9HB3Z16AAFDWuZa2BE118.jpg-wh_50

三、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  列表名  取反时,加!符号

wKioL1kprkPh4o6wAAJuZaQM9jI959.jpg-wh_50

wKiom1kpr7Sy3cYAAADVDZMED1s184.jpg-wh_50

验证访问控制结果

wKioL1kpsCTQFU_qAAK1lRzzGps206.jpg-wh_50


网友评论

登录后评论
0/500
评论
吴梦涵
+ 关注