三、构建传统代理服务器
3.1 代理服务器设置
vim /etc/squid.conf --63行--插入 cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4 reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制 maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户 #重启服务 service squid restart 或 systemctl restart squid #生产环境中还需要修改防火墙规则 iptables -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT #查看 Squid 访问日志的新增记录中的缓存命中情况 tail -f /usr/local/squid/var/logs/access.log #出现TCP_MEM_HIT/200,则说明缓存命中
日志中的字段说明:
MISS:未命中缓存
HIT:命中缓存
EXPIRED:缓存过期
STALE:命中了陈旧缓存
REVALIDDATED:Nginx验证陈旧缓存依然有效
UPDATING:内容陈旧,但正在更新
BYPASS:X响应从原始服务器获取
3.2 web服务器
centos7-1 192.168.109.131
#关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0 #下载http服务 yum install -y httpd #开启服务 systemctl start httpd #查看 Web 实时访问日志的新增记录 tail -f /var/log/httpd/access_log
3.3 客户端w7代理设置
打开浏览器,工具–>Internet选项–>连接–>局域网设置–>开启代理服务器(地址:Squid服务器IP地址,端口:3128)
清除浏览器缓存再次访问
四、构建透明代理服务器
实验环境
squid服务器 |
centos7-2 |
内网ens33:192.168.109.132 外网ens36:12.0.0.1 |
web服务器 |
centos7-1 |
12.0.0.12 |
客户机 |
w7 |
192.168.109.200 |
4.1 Squid服务器配置
#修改配置文件 vim /etc/squid.conf ...... http_access allow all http_access deny all --60行--修改添加提供内网服务的IP地址,和支持透明代理选项 transparent http_port 192.168.109.132:3128 transparent systemctl restart squid #开启路由转发,实现本机中不同网段的地址转发 echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf sysctl -p #修改防火墙规则 iptables -F iptables -t nat -F iptables -t nat -I PREROUTING -i ens33 -s 192.168.109.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 #用于转发http协议 iptables -t nat -I PREROUTING -i ens33 -s 192.168.109.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 #用于转发https协议 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
4.2 Web服务器配置
#安装http服务 yum install -y httpd systemctl start httpd #查看 Squid 访问日志的新增记录 tail -f /usr/local/squid/var/logs/access.log #查看 Web 访问日志的新增记录,显示的是由代理服务器的外网口代替客户机在访问 tail -f /var/log/httpd/access_log
4.3 客户端测试
关闭客户机的浏览器之前设置的代理服务器的功能后访问 http://12.0.0.12
五、ACL访问控制
在配置文件 squid.conf 中,ACL 访问控制通过以下两个步骤来实现:
(1)使用 acl 配置项定义需要控制的条件;
(2)通过 http_access 配置项对已定义的列表做“允许”或“拒绝”访问的控制。
5.1 定义访问控制列表
格式: acl 列表名称 列表类型 列表内容 … vim /etc/squid.conf ...... acl localhost src 192.168.109.200/32 #源地址为 192.168.109.200,localhost可自定义 acl MYLAN src 192.168.109.0/24 192.168.1.0/24 #客户机网段 acl destinationhost dst 192.168.109.131/32 #目标地址为 192.168.80.13 acl MC20 maxconn 20 #最大并发连接 20 acl PORT port 21 #目标端口 21 acl DMBLOCK dstdomain .qq.com #目标域,匹配域内所有站点 acl BURL url_regex -i ^rtsp:// ^emule:// #以 rtsp://、emule:// 开头的目标 URL地址,-i表示忽略大小写 acl PURL urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #以 .mp3、.mp4、.rmvb 结尾的目标 URL 路径 acl WORKTIME time MTWHF 08:30-17:30 #时间为周一至周五 8:30~17:30,“MTWHF”为每个星期的英文首字母
重启服务
5.2 启动对象列表管理
如果地址太多且不连续,我们可以放在一个文件中进行管理,然后在配置文件中调用管理地址文件的路径
mkdir /etc/squid vim /etc/squid/dest.list 192.168.109.0/24 vim /etc/squid.conf ...... acl destinationhost dst "/etc/squid/dest.list" #调用指定文件中的列表内容 ...... http_access deny(或allow) destinationhost #注意,如果是拒绝列表,需要放在http_access allow all前面 #重启服务 systemctl restart squid 浏览器访问Web服务器 http://12.0.0.12 ,显示被访问被拒绝。
重启服务