squid代理
一、squid基本概述
1. squid是什么?用来做什么?
Squid cache(简称为Squid)是流行最广的,使用最普遍的开源缓存代理服务器
2. squid的作用和应用场景有哪些?
用来做前置的Web缓存,加快用户访问Web的速度
代理内网用户访问互联网资源
- 设置访问控制策略,控制用户的上网行为
- 主要支持http、ftp等应用协议
- 官网地址:http://www.squid-cache.org/
3. 常见的代理服务器软件
- squid 非常古老,功能齐全
- varnish 性能优于squid,功能相对没有squid多
- 其他 haproxy 、nginx等
4. squid的工作原理
二、squid代理类型
1. 正向代理
2. 透明代理
正向代理的过程隐藏了真实的请求客户端,服务器不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替请求。我们常说的代理也就是正向代理,正向代理代理的是请求方,也就是客户端;
3. 反向代理
反向代理的过程隐藏了真实的服务器,客户不知道真正提供服务的人是谁,客户端请求的服务都被代理服务器处理。反向代理代理的是响应方,也就是服务端;
总结:
- 正向代理和透明代理中的代理服务器和客户端同属一个LAN,对server端是透明的,服务器并不知道自己为谁提供服务。作用都是让内网用户可以通过代理服务器上互联网,也可以提高访问速度,并且可以通过代理服务器的访问控制限制内网用户的上网行为。
- 反向代理的过程隐藏了真正的服务器,对client端是透明的,客户端并不知道真正提供服务的服务器。可以起到负载均衡的作用,提高用户的访问速度。
- 两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端
- 应用场景
- 正向和透明代理:一般用于公司内网用户访问互联网,根据需求进行访问控制
- 反向代理:一般用于公司服务器集群前做web缓存,提高用户访问效率,同时可以起到负载均衡作用,为互联网提供可持续的web服务
三、squid代理服务器和SNAT|DNAT的区别
1. SNAT和DNAT
网络层次:网络层
局域网用户访问外网走snat模式,同一个数据包,改变数据包头部的来源地址,再把数据包发到internet。
作用:内网用户上外网(SNAT)和内网服务发布到公网(DNAT)
2. 代理服务器模式
网络层次:应用层
不改变数据包头信息,把数据包代理给internet的服务器,基于应用层的过滤。
应用层:
- 协议:http、ftp、pop、smtp、p2p等
- 作用:缓存页面,加速访问,ACL资源访问控制
- 反向代理:
- internet用户访问局域网服务器
- Squid做反向代理服务器,把用户的请求转发到后方的真实的服务器,可以做到负载均衡的效果,同时缓冲用户经常访问的页面提高访问速度
四、了解squid代理软件相关信息
1. 安装软件
~powershell
//squid在本地镜像里有,只需要配置好本地yum源即可
[root@squid-server ~]# yum -y install squid
~
2. 软件的文件列表
~powershell
[root@squid-server ~]# rpm -ql squid
/etc/squid/squid.conf //配置文件
/etc/rc.d/init.d/squid //启动脚本
/usr/sbin/squid //二进制命令
/usr/share/doc/squid-3.1.10 //手册
/var/log/squid //日志目录
/var/spool/squid //缓存目录
~
3. 配置文件说明
~~~powershell
cat /etc/squid/squid.conf
//设置监听的IP与端口号
http_port 3128
//额外提供给squid使用的内存大小
cache_mem 默认256 MB
//设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
maximum_object_size 4 MB
//设置squid磁盘缓存最小文件
minimum_object_size 0 KB
//设置squid内存缓存最大文件,超过4M的文件不保存到内存
maximum_object_size_in_memory 4096 KB
//定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
cache_dir ufs /var/spool/squid 100 16 256
//log文件日志格式
logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %
五、squid的正向代理配置
需求:内网用户通过浏览器指定代理服务器的IP和端口访问互联网中的web服务
~~~powershell
环境:
client:10.1.1.2
squid-server:10.1.1.1 和 2.2.2.1
web-server: 2.2.2.2
思路:
1. squid-server需要2个IP,一个公网一个私网
2. client端只需要和squid-server能互通即可,不需要指定gw和dns;
3. client端需要在浏览器上设置代理服务器的IP和端口
4. squid-server可以上外网,client不能上外网,目的就是让squid代理内网用户访问互联网web服务
5. 搭建一个web服务
步骤:
搭建squid-server服务器:
1. 安装软件
yum -y install squid
- 根据需求修改配置文件
需求:代理内网所有用户访问互联网的web服务
[root@squid-server ~]# vim /etc/squid/squid.conf
…
http_access deny all //注释掉这行
http_access allow all //将原来的deny all 改成 allow all,允许所有人来访问该代理服务器
cache_dir ufs /var/spool/squid 100 16 256 //取掉前面的注释,打开缓存目录
//增加以下2行
visible_hostname squid-server.itcast.cc //定义squid服务器主机名
access_log /var/log/squid/access.log //定义访问日志
- 启动squid服务
[root@squid-server ~]# service squid start
init_cache_dir /var/spool/squid… Starting squid: . [ OK ]
//服务器启动后会再缓存目录里产生以下一级、二级缓存目录文件
[root@squid-serv