目录
一、squid代理的作用
1.支持代理(正向代理)和反向代理的软件
①代理(正向代理):代替客户端去访问位于互联网上的网站服务器,某些局域网内的主机内网IP地址无法连接到互联网,可以借助代理服务器squid实现访问互联网
代理(正向代理):分类
标准正向代理:客户端需要填写正确的IP和端口,以及开启代理功能才可以实现
透明正向代理:强制使用代理功能,客户端不自知,一般生产环境中直接设置成透明正向代理即可
②反向代理:代替服务器接受用户的请求,将反向代理服务器视为要访问的服务器,反向代理服务器在使用对应的算法将用户的请求转交给后台服务器{nginx、lvs、amoeba},这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载
2.数据缓存(正向代理和反向代理都有缓存)
3.访问控制功能,主要是控制用户对web服务器的访问(正向代理)
二、squid代理服务器的工作流程
当代理服务器接收到客户的访问请求时,首先检查自己的数据缓存,并且向web服务器发送一个数据是否更新的请求,如果代理服务器中有缓存,并且数据没有发生变化,则直接将数据返回给用户,如果数据有新的变化,则真实web服务器返回相应的数据给squid,再由squid服务器返回给用户,并且自己也保留一份。
三、正向代理和反向代理的区别:
1.概念:
正向代理:客户端的代言人,由suqid服务器代替客户访问服务器。
反向代理:代理web服务器接受客户的访问,squid服务器再以本身算法的形式将请求发送给真实服务器
2.用途:
正向代理:是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
反向代理:还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
3.安全性:
用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。
反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
² 安全性
正向代理:允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理:对外都是透明的,访问者并不知道自己访问的是一个代理。
四、代理软件和常用配置
1.代理软件:squid
软件包: squid
服务: squid
配置文件: /etc/squid/squid.conf
端口号: TCP 3128
默认访问日志文件: /var/log/squid/access.log
说明:Squid 在3.0 版本后使用C语言进行重构,效率大大提升,Centos6标配Squid 3.0 以上版本
2.squid常用配置选项
/etc/squid/squid.conf
http_port 3128 #(还可以只监听一个IP http_port 192.168.0.1:3128)
cache_mem 64MB #缓存占内存大小
maximum_object_size 4096KB #最大缓存块
reply_body_max_size 1024000 allow all #限定下载文件大小
access_log /var/log/squid/access.log #访问日志存放的地方
visible_hostname proxy.kernel.cn #可见的主机名
cache_dir ufs /var/spool/squid 100 16 256
#ufs:缓存数据的存储格式
#/var/spool/squid 缓存目录
#100:缓存目录占磁盘空间大小(M)
#16:缓存空间一级子目录个数
#256:缓存空间二级子目录个数
cache_mgr admin@kernel.cn #定义管理员邮箱
http_access deny all #访问控制访问控制
五、实验(正向代理的标准正向代理和透明正向代理)
标准正向代理:
1.准备工作:三台服务器
7 (测试机) VMnet10 IP192.168.10.10 PREFIX=24 GATEWAY=192.168.10.20
7-1 (squid服务器) VMnet10(ens33)IP192.168.10.20和VMnet11(ens37)IP192.168.11.20{修改网卡名、复制ens33并且删除UUID号}
7-2(web{apache服务器})VMnet11 IP192.168.11.30 PREFIX=24 GATEWAY=192.168.11.20
2.配置7-2(web{apache服务器})
安装httpd 、写入网页文件、启动并开机自启
监听apache日志 tailf /var/log/httpd/access_log
3.配置7-1(squid服务器)
①安装squid包,开启路由转发
vim /etc/sysctl.conf
新增 net.ipv4.ip_forward=1
sysctl -p
②修改配置文件
vim /etc/squid/squid.conf
cache_dir ufs /var/spool/squid 100 16 256 #取消注释,数据缓存目录以及缓存大小上限、一级目录和二级目录缓存的大小文件数量
在http_port下一行新增
visible_hostname proxy.kernel.com #声明服务器的域名
③重启 systemctl restart squid
4.配置测试机7(浏览器)(字符界面)
①修改环境变量
vim /etc/profile
末行添加 export HTTP_PROXY=192.168.10.20(squid服务器VMnet10IP):3128
source /etc/profile
②yum -y install elinks(注意:修改完环境变量后只对elinks生效)
elinks 192.168.11.30(web服务器IP)就会出现web服务器的界面,再次刷新访问,就是通过squid服务器(192.168.11.20)的缓存访问的,这时,如果web服务器数据发生改变,则squid服务器会访问到新的数据交给客户端(前提是测试机的字符界面浏览器清除了缓存)
4.配置测试机7(浏览器)(windows10虚拟机界面)
①安装虚拟机windows10版本,设置网络模式为VMnet10
IP 192.168.10.5 NETMASK=255.255.255.0 GATEWAY=192.168.10.20
可以关闭防火墙测试
②设置Windows代理功能
点击设置——代理 填写squid服务器IP和端口
③测试 输入web服务器IP(192.168.11.30)
打开web服务器监听 tailf /var/log/httpd/access_log就能看到是squid服务器访问的,并且有缓存,测试发现,第一次返回的结果是200,证明第一次访问,刷新页面,返回结果304,证明是从缓存中直接返回结果的
透明正向代理
1.透明正向代理和标准正向代理实验基本一致,区别是透明正向代理的测试机不用配置代理功能,因为强制走向squid服务器,只需要在suqid服务器上添加一条防火墙规则即可
2.准备工作:三台服务器
7 (测试机) VMnet10 IP192.168.10.10 PREFIX=24 GATEWAY=192.168.10.20
7-1 (squid服务器) VMnet10(ens33)IP192.168.10.20和VMnet11(ens37)IP192.168.11.20{修改网卡名、复制ens33并且删除UUID号}
7-2(web{apache服务器})VMnet11 IP192.168.11.30 PREFIX=24 GATEWAY=192.168.11.20
2.配置7-2(web{apache服务器})
安装httpd 、写入网页文件、启动并开机自启
监听apache日志 tailf /var/log/httpd/access_log
3.配置7-1(squid服务器)
①开启路由转发
vim /etc/sysctl.conf
新增 net.ipv4.ip_forward=1
sysctl -p
②修改配置文件
vim /etc/squid/squid.conf
cache_dir ufs /var/spool/squid 100 16 256 #取消注释,数据缓存目录以及缓存大小上限、一级目录和二级目录缓存的大小文件数量
在http_port 后面加 transparent(透明代理)下一行新增
visible_hostname proxy.kernel.com #声明服务器的域名
③ iptables -t nat -A PREROUTING -i ens33 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 #添加一条防火墙规则
④重启systemctl restart squid
4.配置测试机7(浏览器)(windows10虚拟机界面)
关闭代理功能(没开启则不用开)
输入 web服务器IP 192.168.11.30
查看web服务器日志 tailf /var/log/httpd/access_log,就会发现是squid服务器访问的web服务器,并且客户端还不自知访问的squid服务器