群集—Squid代理服务器应用

一、Web代理的工作机制:

1、缓存网页对象,减少重复请求
在这里插入图片描述在这里插入图片描述在这里插入图片描述

二、缓存代理概述:

1、代理的基本类型:

  • 传统代理:适用于Internet,需明确指定服务端
  • 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。

2、使用代理的好处;

  • 提高Web访问速度
  • 隐藏客户机的真实lP地址
    在这里插入图片描述
    在这里插入图片描述

三、实验代码:

实验1:传统代理
实验准备:
一台squid、一台httpd的web服务器
实验过程:
在两台服务器上:
iptables -F
iptables -t nat -F
setenforce 0
在web服务器上:
yum install httpd -y
systemctl start httpd
cat /var/log/httpd/access_log            ##查看网站日志

在squid服务器上:
yum install gcc-gcc++ -y
tar zxvf squid.tar.gz
cd squid/
./configure --prefix=/usr/local/squid \                   ##安装路径
--sysconfdir=/etc \                                                  ##配置文件位置
--enable-arp-acl \    acl
--enable-linux-netfilter \                                          ##过滤
--enable-linux-tproxy \                                            ##透明代理功能模块
--enable-asysnc-io=100 \                                        ##吞吐量
--enable-err-language="Simplify_Chinese" \           ## 简体中文字符集
--enable-underscore \                                              ##支持带有下划线的字符
--enable-poll \                                                          ##poll内模块
--enable-gnuregex                                                    ##支持正则表达式
make && make install 
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid                     程序性用户
chown -R squid.squid /usr/local/squid/var/           给予权限
 
vim /etc/squid.conf         ##59行后面添加                       #####代理实质代码!!
  cache_effective_user squid
  cache_effective_group squid
squid -k parse
squid -z
squid                                                                     ##启动服务!
netstat -ntap | grep squid                                    ##查看服务状态!

vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"

case "$1" in
start)
 netstat -natp | grep squid &> /dev/null
 if [ $? -eq 0 ]
 then
  echo "squid is running"
 else
  echo "正在启动 squid..."
  $CMD
 fi
;;
stop)
 $CMD -k kill &> /dev/null
 rm -rf $PID &> /dev/null
;;
status)
 [ -f $PID ] &> /dev/null
  if [ $? -eq 0 ]
   then
     netstat -natp | grep squid
   else
     echo "squid is not running"
  fi
;;
restart)
  $0 stop &> /dev/null
  echo "正在关闭 squid..."
  $0 start &> /dev/null
  echo "正在启动 squid..."
;;
reload)
  $CMD -k reconfigure
;;
check)
  $CMD -k parse
;;
*)
 echo "用法: $0{start|stop|status|reload|check|restart}"
;;
esac

chmod +x squid
chkconfig --add squid
chkconfig --level 35 squid on
service squid stop
service squid start 
vim /etc/squid.conf                                                   ####代理实质代码!!
在第56行添加:
http_access allow all
在第60行后面添加:
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB

iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
service squid reload

自己手动在浏览器上配置代理服务器的地址,访问web网站,在web的日志发现是代理服务器来访问的,即实验成功!!



实验2:透明代理:
实验准备:
在squid服务器上。两个仅主机模式网卡:
ip36:192.168.10.1              (NETMASK)   客户机浏览器的网关
ip33:192.168.195.128           代理器与网站之间接口
vim /etc/sysctl.conf   ##添加
 net.ipv4.ip_forward=1
sysctl -p 
service network restart
ifconfig
vim /etc/squid.conf
 http_port 192.168.10.1:3128 transparent
squid -k parse    ##验证语法
iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT -- 3128
iptables -t nat -I PREROUTING -i ens36 -s 192.168.10.0/24 -p tcp --dport 443 -j REDIRECT -- 3128
service squid reload

四、ACL访问控制

1、ACL访问控制方式

  • 根据源地址、目标URL、文件类型等定义列表
    • acl列表名称 列表类型 列表内容…
  • 针对已定义的acl列表进行限制
    • http_access allowo或deny列表名称…
  • ACL规则优先级
    • —个用户访问代理服务器时,Squid会顺序匹配Squid中定义的所有规则列表,一旦匹配成功,立即停止匹配。
    • 所有规则都不匹配时,Squid会使用与最后一条相反的规则

2、常用的ACL列表类型:

  • src →源地址
  • dst →目标地址
  • port→端口
  • dstdomain →目标域
  • time →访问时间
  • maxconn →最大并发连接
  • url_regex →目标URL地址
  • Urlpath_regex →整个目标URL路径
实验3:ACL访问控制
在squid 服务器上
vim /etc/squid.conf
acl hostlocal src 14.0.0.100/32                          ##在开头添加,拒绝目标客户端window浏览器的地址
# Deny requests to certain unsafe ports            ##定位,在下面添加
http_access deny hostlocal
service squid restart
实验4:日志分析:
在squid服务器上:
yum install gd gd-devel -y                     sarg的开发包
mkdir /usr/local/sarg
tar zxvf sarg.tar.gz
cd sarg/
./configure --prefix=/usr/local/sarg --enable-extraprotection
make && make install 
vim /etc/sarg/sarg.conf   去掉#
7#指定访问日志文件
25#网页标题
120#报告输出目录
178#用户名显示
184#topuser_sort_field connect reverse  top排序中有连接次数、访问字节
190#注释掉  用户访问记录连接次数、访问字节按降序排序
206#不计入排序的站点列表
257#同名的日志是否覆盖?
289#发送邮件报告的命令
434#使用字符集
518#top排行的星期周期
525#top排行的时间周期
633#网页根目录
touch /usr/local/sarg/noreport                      ###添加不计入站点的文件,添加域名将不再显示排序中
ln -s /usr/local/sarg/sarg/bin/sarg /usr/local/bin/
sarg 
安装httpd
在浏览器上面访问14.0.0.15/squid-reports     ##即可查看
添加每日的计划性任务:每日生成日志
 sarg -l /usr/local/squid/var/logs/access.log -o /var/www/html/squid-reports/ -z -d $(date -d "1 day ago" +%d/%m/%Y)-$(date +%d/%m/%Y)

五、反向代理概述

  • 如果Squid反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的WEB服务器
    请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。
  • 反向代理网站加速:
    • 缓存网页对象,减少重复请求
    • 将互联网请求轮训或按权重分配到内网Web服务器
    • 代理用户请求,避免用户直接访问Web服务器,提高安全
实验5:squid方向代理:
在squid服务器上:
# Squid normally listens to port 3128                ##在后面添加
http_port 14.0.0.15:80 accel vhost vport            ##squid服务器的地址
cache_peer 14.0.0.14 parent 80 0 no_query originserver round-robin max_conn=30 weight=1 name=web1  ##子web网站的地址
cache_peer 14.0.0.16 parent 80 0 no_query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com    ##域名解析
systemctl stop httpd
service squid stop
service squid start

在两个web服务器上:
cd /var/www/html/index.html    ##<h1>  </h1>
systemctl start httpd
iptables -F
setenforce 0

在客户端的浏览器上:
C盘-Windows-system32-drivers-etc-hosts    ##添加14.0.0.15     www.yun.com
浏览器上面的设置代理上的端口号修改为80
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值