您的位置:首页 > 运维架构 > 反向代理

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

2017-07-14 11:59 477 查看
转载 http://kangshuo.blog.51cto.com简介:squid 是 Linux系统中最常用的一款开源代理服务软件(官方网[b]站:http//www.squid-cache.org[/b]可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大。作为应用层的代理服务软件,squid主要提供缓存加速、应用层过滤控制的功能。
代理的工作机制 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已有客户机需要的页面,则直接将缓存中页面内容反馈给客户机;如果缓存中没有客户机要访问的页面,则由代理服务器向Internet发送访问请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机[b]

[/b] HTTP代理的缓存加速对象主要是文字、图像等静态web元素。当客户机在不同的状态下访问同一网站应用时,或者不同的客户机访问同一网站应用时,可以直接从代理服务器的缓存中获取相应的结果。这样就大大减少了向Internet提交重复的网站web页面请求的过程,提高了客户机的访问响应速度。
由于客户机的web访问请求实际上是由代理服务器来代替完成的,从而可以隐藏用户的真实IP地址,起到一定安全保护作用。 代理的基本类型: 1.传统代理:必须在客户机通过浏览器、QQ聊天工具、下载应用软件程序中,手动设置代理服务器的IP地址和端口。
才可以使用代理来访问网络应用。传统代理适用于Internet互联网环境中。 [b] 2.透明代理:[/b][b] 和传统代理一样,主要区别在于客户机不需要指定代理服务器的地址和端口号,而是通过默认路由、防火墙策略将访问web请求的80端口重定向到代理服务器的3128端口做映射,重定向的过程对客户机来说是透明的[/b]透明代理使用于局域网环境中。
[b]安装squid服务的相关配置及命令[/b] squid的版本:3.4.6
squid的版本:3.4.11 特性:辅助协议扩展、腾讯云SSL证书、Store-ID、交易注释、组播DNS

一、搭建传统代理服务


[b] 1.编译安装squid[/b][b]

[/b]

上述编译模块参数含义如下: --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地址是代理服务器的地址。
二、搭建透明代理服务在Linux网关上,构建squid代理服务为局域网客户机去访问Internet提供服务
在所有的局域网客户机上,只需正确配置IP地址、默认网关即可。


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


2.设置iptables的重定向策略注意:透明代理服务中的squid服务器是构建在Linux网关主机上的,所以要设置防火墙策略将客户机访问外网的数据包交给squid服务器去处理,在防火墙上设置一条REDIRECT(重定向策略),其作用就是将客户机访问互联网的端口映射给squid服务器的3128端口。注意:REDIRECT也是一种数据包控制类型,只能在nat表的PREROUTING或OUTPUT链以及被调用的链中使用。

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

[b]3.验证透明代理的使用[/b][b] 注意:清除手动代理相关的配置[/b][b]

[/b][b]验证结果:[/b][b]在squid代理服务器日志发现,客户机192.168.4.110访问过目标网站172.16.16.172的记录信息[/b][b]

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

[/b][b]三、ACL访问控制[/b]可以针对源地址、目标地址、访问的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 列表名 取反时,加!符号



验证访问控制结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息