使用Squid部署代理缓存服务.docx
《使用Squid部署代理缓存服务.docx》由会员分享,可在线阅读,更多相关《使用Squid部署代理缓存服务.docx(13页珍藏版)》请在冰豆网上搜索。
使用Squid部署代理缓存服务
第16章使用Squid部署代理缓存服务。
16.1代理缓存服务
Squid服务程序是一款在类Unix系统中最为流行的高性能代理服务软件,通常会被当作网站的前置缓存服务,用于替代用户向网站服务器请求页面数据并进行缓存,通俗来讲,Squid服务程序会接收用户的请求,然后自动去下载指定数据(如网页)并存储在服务器内,当以后的用户再来请求相同数据时,则直接将刚刚储存在服务器本地的数据交给用户,减少了用户的等待时间。
Squid服务程序配置起来相对简单,效率高、支持如HTTP、FTP、SSL等多种协议的数据缓存,还支持基于ACL访问控制列表和ARL访问权限列表功能的内容过滤与权限管理功能,禁止用户访问存在威胁或不适宜的网站资源,保证内网安全的同时还整体的提高了客户机的访问速度,帮助节省网络带宽,尤其适合安装在内存大、硬盘转速快的服务器上。
从作用上分为正向代理和反向代理:
正向代理让用户可以通过Squid服务程序获取网站页面等数据,具体工作形式又分为标准代理模式与透明代理模式。
标准正向代理模式:
将网站的数据缓存在服务器本地,提高数据资源被再次访问时的效率,但用户必需在上网时指定代理服务器的IP地址与端口号,否则将不使用Squid服务。
透明正向代理模式:
功能作用与标准正向代理模式完全相同,但用户不需要指定代理服务器的IP地址与端口号,所以这种代理服务对于用户来讲是完全透明的。
反向代理则是为了降低网站服务器负载而设计的,反向代理服务器负责回应用户对原始网站服务器的静态页面请求,即如果反向代理服务器中正巧有用户要访问的静态资源则直接将缓存的内容发送给用户,减少了对原始服务器的部分数据资源请求。
所以对于正向代理一般用于企业的局域网内,让员工通过Squid服务程序来代理上网,不但能节省网络带宽资源还能限制访问的页面,而反向代理则大多搭建在网站架构中,用于缓存网站的静态数据(如图片、HTML静态网页、JS、CSS框架文件等)。
16.2配置Squid服务程序
本小节将为大家演示如何部署Squid服务的正向代理与反向代理,首先我们需要再添加一块网卡设备(桥接模式):
按照下面的表单配置IP地址:
主机名称
操作系统
IP地址
服务端
红帽RHEL7操作系统
外网卡:
桥接DHCP模式
内网卡:
192.168.10.10
用户端
微软Windows7操作系统
192.168.10.20
测试是否能够访问互联网:
[root@njxhDesktop]#ping
PING(162.159.211.33)56(84)bytesofdata.
64bytesfrom162.159.211.33:
icmp_seq=1ttl=45time=166ms
64bytesfrom162.159.211.33:
icmp_seq=2ttl=45time=168ms
64bytesfrom162.159.211.33:
icmp_seq=3ttl=45time=167ms
64bytesfrom162.159.211.33:
icmp_seq=4ttl=45time=166ms
^C
---pingstatistics---
4packetstransmitted,4received,0%packetloss,time3006ms
rttmin/avg/max/mdev=166.361/167.039/168.109/0.836ms
安装squid服务程序:
[root@njxh~]#yuminstallsquid
Loadedplugins:
langpacks,product-id,subscription-manager
………………省略部分安装过程………………
Installing:
squidx86_647:
3.3.8-11.el7rhel72.6M
Installingfordependencies:
libecapx86_640.2.0-8.el7rhel720k
perl-Compress-Raw-Bzip2x86_642.061-3.el7rhel732k
perl-Compress-Raw-Zlibx86_641:
2.061-4.el7rhel757k
perl-DBIx86_641.627-4.el7rhel7802k
perl-Data-Dumperx86_642.145-3.el7rhel747k
perl-Digestnoarch1.17-245.el7rhel723k
perl-Digest-MD5x86_642.52-3.el7rhel730k
perl-IO-Compressnoarch2.061-2.el7rhel7260k
perl-Net-Daemonnoarch0.48-5.el7rhel751k
perl-PlRPCnoarch0.2020-14.el7rhel736k
………………省略部分安装过程………………
Complete!
先别着急配置哦!
我们先来了解下squid服务程序的主要文件吧:
主服务程序
/usr/sbin/squid
配置文件目录
/etc/squid
主配置文件
/etc/squid/squid.conf
访问日志文件
/var/log/squid/access.log
缓存日志文件
/var/log/squid/cache.log
而squid服务程序中常用的参数有:
参数
作用
http_port3128
监听的端口号。
cache_mem64M
内存缓冲区的大小。
cache_dirufs/var/spool/squid200016256
硬盘缓冲区的大小。
cache_effective_usersquid
设置缓存的有效用户。
cache_effective_groupsquid
设置缓存的有效用户组。
dns_nameserversIP地址
一般不设置,用服务器默认的DNS地址。
cache_access_log/var/log/squid/access.log
访问日志文件的保存路径。
cache_log/var/log/squid/cache.log
缓存日志文件的保存路径。
visible_hostname
设置Squid服务主机的名称。
启动squid服务程序并加入到开机启动项:
[root@njxh~]#systemctlrestartsquid
[root@njxh~]#systemctlenablesquid
ln -s '/usr/lib/systemd/system/squid.service' '/etc/systemd/system/multi-user.target.wants/squid.service'
16.2.1标准正向代理
当Squid服务程序顺利启动后,默认即可使用标准正向代理模式啦,在Windows7系统中打开浏览器后依次点击:
在网络选项中点击“连接”→“局域网设置”:
填写Squid服务器的IP地址与端口号
尝试访问网站:
Squid服务程序默认会占用3128、3401与4827端口,我们也可以将端口号修改为其他的哦,编辑配置文件(修改第59行):
[root@njxh~]#vim/etc/squid/squid.conf
http_port10000
使用setsebool命令来限制squid服务只能使用自定义的端口号:
[root@njxh~]#setsebool-Psquid_connect_any0
查看当前SElinux允许的服务端口:
[root@njxh~]#semanageport-l|grep-w-isquid_port_t
squid_port_ttcp3128,3401,4827
squid_port_tudp3401,4827
添加SELinux对10000端口的允许策略:
[root@njxh~]#semanageport-a-tsquid_port_t-ptcp10000
[root@njxh~]#semanageport-l|grep-w-isquid_port_t
squid_port_ttcp10000,3128,3401,4827
squid_port_tudp3401,4827
重启squid服务程序后即可生效:
[root@njxh~]#systemctlrestartsquid
16.2.2透明正向代理
如果要想实现透明正向代理,则必需将用户的网关IP指向Squid服务器,而此后便无需再修改浏览器选项:
尝试访问网站失败:
在命令提示符中ping下域名:
C:
\Users\njxh>ping
Ping请求找不到主机。
请检查该名称,然后重试。
原来Squid服务程序是不支持DNS解析代理的,这个就需要配置SNAT啦。
如果忘记SNAT技术了,没关系,回去再看下防火墙的章节吧,-o参数后面写外网出口的网卡名称:
[root@njxh~]#iptables-tnat-APOSTROUTING-pudp--dport53-oeno33554968-jMASQUERADE
开启Ipv4的转发策略:
[root@njxh~]#echo"net.ipv4.ip_forward=1">>/etc/sysctl.conf
[root@njxh~]#sysctl-p
net.ipv4.ip_forward=1
再次尝试Ping下网站域名:
C:
\Users\njxh>ping
正在Ping[116.31.127.233]具有32字节的数据:
请求超时。
请求超时。
请求超时。
请求超时。
116.31.127.233的Ping统计信息:
数据包:
已发送=4,已接收=0,丢失=4(100%丢失),
不错哦~现在DNS已经能够正常工作啦,来配置透明正向代理吧,编辑配置文件:
[root@njxh~]#vim/etc/squid/squid.conf
//在第59行后面添加参数transparent
http_port3128transparent
判断配置文件是否有错误(会有很多输出值):
[root@njxh~]#squid-kparse
重新启动squid服务程序:
[root@njxh~]#systemctlrestartsquid
将用户对80端口的请求转发至3128端口:
[root@njxh~]#iptables-tnat-APREROUTING-ptcp--dport80-jREDIRECT--to-port3128
[root@njxh~]#iptables-tnat-RPREROUTING1-ieno33554968-ptcp--dport80-jREDIRE