一、Squid简介
squid一个缓存服务器的守护进程(专门来做缓存的)
支持反向代理;FTP、HTTP、SSL
缓存方式区分:磁盘、分区、目录、object(缓存实例)
(1)Squid服务端
软件包:squid-2.6.STABLE21-6.el5 系统服务:squid
主程序:/usr/sbin/squid
主配置文件:/etc/squid/squid.conf
默认监听端口:TCP 3128
默认访问日志:/var/log/squid/access.log
(2)常见配置
http_port 3128 #
access_log /var/log/squid/access.log squid #指定日志存放路径,以及用户
cache_mem 64MB #squid进程能够调用的最大内存资源
cache_dir ufs /var/spool/squid 100 16 256 #缓存目录,使用的文件系统为ufs;指定缓存目录以及缓存目录可使用的资源(MB),一级目录的最大个数16,二级目录的最大个数256.(没有三级目录,最大二级目录)
visible_hostname proxy.benet.com #缓存服务器名称
dns_testnames www.google.com www.163.com #定时测试自己能否访问公网网站,来判断是否正常
maximum_object_size 4096 KB #最大缓存4MB
reply_body_max_size 10 MB #允许从我这里通过的数据量
二、搭建Squid传统模式
为内网用户做加速访问,需要客户端手动设置代理才能访问否则不能访问

1)实验拓扑

2)配置公网web服务
安装httpd服务,新建一个网页
#这里使用挂载iso镜像的方式进行本地yum源配置
mkdir /mnt/cdrom #创建挂载目录
moutn -t iso9660 /dev/cdrom /mnt/cdrom
#修改yum仓库源
mkdir bak #创建备份目录
cp bak/CentOS-Media.repo . #复制到当前目录
#编辑配置文件
vim CentOS-Media.repo
[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#清空缓存
yum clean all
#安装httpd
yum install httpd -y
#新建网页文件
echo "this is gw-web" > /var/www/html/index.html
访问测试web服务是否正常

网关需要指向squid服务器的内网ip
echo "GATEWAY=10.10.10.12" >> /etc/sysconfig/network-scripts/ifcfg-ens33
3)安装squid服务,测试传统模式下的访问效果
配置yum本地源这里不再赘述,请参考第(2)步的详细步骤
yum install squid -y #安装squid服务
#启动服务
service squid start
#重新加载配置文件
service squid reload

4)使用客户端访问公网web服务器
未配置浏览器代理时,无法访问公网的web服务器

配置浏览器代理再次访问

配置代理后成功访问到公网的web服务器。【因为有缓存的缘故,所以在公网的web服务器关闭后客户端依然可以访问到本地的缓存信息】

三、搭建Squid透明模式
为内网用户做加速访问,客户端无需手动设置代理即可访问公网中的web服务器。

1)实验拓扑

2)修改squid配置文件
指定squid为透明模式
vim /etc/squid/squid.conf
http_port 10.10.10.12:3128 transparent(透明模式)
visible_hostname lvs_backup (不添加也可以)
3)配置iptables策略
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #开启路由转发
#立即生效
sysctl -p
#配置iptables规则
iptables -t nat -A PREROUTING -i ens33 -s 10.10.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 #当入站网卡是ens33,内网网段是10.10.10.0/24,并且它访问的目标端口是80时,就把它重定向到3128这个端口
4)直接访问公网的web服务器
网关需要指向squid服务器的内网ip
echo "GATEWAY=10.10.10.12" >> /etc/sysconfig/network-scripts/ifcfg-ens33
可以看到,客户端无需设置代理即可访问成功。

5)限制最大代理下载文件大小
在web服务器生成一个大文件
#dd: 是一个用于复制文件和转换数据的命令行工具。
#if=/dev/zero: 这是dd命令的输入选项。/dev/zero是一个特殊设备文件,它会产生连续的空字节数据流作为输入。
#of=1.txt: 这是dd命令的输出选项。它指定了输出文件的名称,即"1.txt"。
#bs=1M: 这是dd命令的块大小选项。bs代表"block size",这里设置为1兆字节(MB),表示每次写入的数据块大小。
#count=1024: 这是dd命令的计数选项。它指定了要复制的数据块数量,这里设置为1024,意味着总共写入1024个1兆字节(MB)的数据块。
dd if=/dev/zero of=1.txt bs=1M count=1024
#修改squid配置文件
vim /etc/squid/squid.conf
reply_body_max_size 800 MB #允许从我这里通过的数据量
#重新加载配置文件
service squid reload
限制数据大小后,再次下载文件会提示您要下载的文件太大,请联系管理员。

四、搭建Squid反向代理模式
为公网用户做加速访问

1)实验拓扑

2)web服务器配置
参考传统模式中的web服务器配置,这里不再重复记录操作。网关需要指向squid服务器的内网ip
echo "GATEWAY=10.10.10.15" >> /etc/sysconfig/network-scripts/ifcfg-ens33
3)安装squid服务
安装步骤这里不再赘述,参考传统模式中的安装步骤。
(1)开启路由转发模式
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #开启路由转发
#立即生效
sysctl -p
(2)修改配置文件
vim /etc/squid/squid.conf
http_port 20.20.20.13:80 vhost #监听该地址的80端口,并设置为虚拟主机模式
cache_peer 10.10.10.11 parent 80 0 originserver round-robin #这行配置表示将一个缓存服务器配置为代理服务器的上游服务器。10.10.10.11是缓存服务器的IP地址,parent 80表示使用80端口连接到上游服务器。0是服务器的缓存级别,originserver表示上游服务器是源服务器而不是另一个缓存服务器。round-robin表示使用轮询的方式在多个缓存服务器之间分发请求。
cache_peer 10.10.10.12 parent 80 0 originserver round-robin
(3)在acl中放行公网IP
将公网网段写入squid配置文件中
vim /etc/squid/squid.conf
acl gw_web src 20.20.20.0/24 #acl后跟的是自定义名称。
#放行策略
http_access allow gw_web
#重新加载配置文件
service squid reload

(4)重启服务再次访问查看

五、ACL设置
1)acl含义
根据源地址、母包URL、文件类型等定义列表
acl 列表名称 列表类型 列表内容
【如果出现acl但是没有定义http_access相当于没写acl】
针对已定义的acl列表进行限制
http_access allow或deny 列表名称
src 源地址
dst 目标地址
port 目标端口
dstdomain 目标域
time 访问时间
maxconn 最大并发连接
url_regex 目标URL地址
Urlpath_regex 整个目标URL路径
2)acl易犯错误
如果在配置文件中定义的放行策略为deny localhost,则会拒绝自定义规则。
http_access deny localhost #拒绝本地访问
如果在配置文件中定义的策略为allow localhost,则放行自定义规则。
http_access allow localhost #允许本地访问
注:如果出现访问被拒绝的情况请检查以上两项是否配置错误
往期推荐
原文始发于微信公众号(青菜浪人):
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/157566.html