squid——传统代理 理论+实操!!

一、squid传统代理

1.squid简介

Squid(Squid cache,简称Squid)是Linux系统中最常用的一款开源代理服务软件
可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大

2.缓存代理概述
2.1、 Web代理的工作机制,缓存网页对象,减少重复请求
  • Squid是一个缓存Internet数据的一个软件,它接收用户的下载申请, 并自动处理所下载的数据。
  • 也就是说,当一个用户想要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份
  • 当别的用户申请同样的页面时,Squid把保存的缓存立即传给用户,减少了向Internet提交重复的Web请求的过程,提高了用户下载网页的速度,隐藏了客户机的真实IP
2.2、使用代理的好处
  • 提高Web访问速度
  • 隐藏客户机的真实IP地址
    在这里插入图片描述

二、实操步骤

1.实验环境

服务器IP地址
squid服务器20.0.0.21
web服务器20.0.0.20
win10客户机20.0.0.19
实验目的
  • 通过客户机访问web页面,不做代理时,web服务器的访问日志显示的是客户机IP,
  • 当做了传统代理后,web服务器的访问日志显示的是squid服务器IP。

2.squid服务器配置

修改主机名,创建新目录并把squid压缩包挂载上,然后解压
[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# mkdir /ab
[root@squid ~]# mount.cifs //20.0.0.252/squid /ab ##挂载压缩包
[root@squid ~]# cd /ab
[root@squid ab]# tar zxvf squid-3.4.6.tar.gz -C /opt

3、安装编译工具,编译安装

[root@squid ab]#cd /opt/squid-3.4.6
[root@squid squid-3.4.6]#yum -y install gcc gcc-c++

[root@squid squid-3.4.6]#./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simlify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex
[root@squid squid-3.4.6]#make && make install
上面的参数注解如下:

./configure --prefix=/usr/local/squid \ 安装路径
–sysconfdir=/etc \ 配置文件目录
–enable-arp-acl \ 启用acl访问控制列表功能
–enable-linux-netfilter \ 内核过滤
–enable-linux-tproxy \ 支持透明模式
–enable-async-io=100 \ 对于io的优化
–enable-err-language=“Simlify_Chinese” \ 支持的语言
–enable-underscore \ 支持下划线
–enable-poll \ 功能的提升
–enable-gnuregex 支持正则表达式

4、创建软链接(方便管理)

[root@squid squid-3.4.6]#ln -s /usr/local/squid/sbin/* /usr/local/sbin/

5、建立程序性用户squid ,并赋予权限

[root@squid squid-3.4.6]#useradd -M -s /sbin/nologin squid
[root@squid squid-3.4.6]#chown -R squid.squid /usr/local/squid/var/

6、修改主配置文件

[root@squid squid-3.4.6]#vim /etc/squid.conf
cache_effective_user squid         添加  :指定程序用户
cache_effective_group squid        添加:指定账户基本组
http_access deny all   ##这一行的注释掉
http_access allow all   ###添加   允许访问所有策略

主配置文件修改如下:
在这里插入图片描述
在这里插入图片描述

[root@squid squid-3.4.6]#squid -k parse       //检查配置文件基本语法
[root@squid squid-3.4.6]#squid -z     //初始化缓存目录
[root@squid squid-3.4.6]#squid      //启动服务

7、编写启动脚本

[root@squid squid-3.4.6]# cd /etc/init.d
[root@squid init.d]# vim squid
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
[root@squid init.d]# chmod +x squid    ‘添加权限’
[root@squid init.d]# chkconfig --add squid    ‘便于service识别’
[root@squid init.d]# service squid stop   ‘关闭squid服务’
[root@squid init.d]# service squid start   ‘开启squid’

在这里插入图片描述

8、搭建传统代理服务器

[root@squid init.d]# vim /etc/squid.conf
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB

在这里插入图片描述

9、制定防火墙的规则

[root@squid init.d]# iptables -F	'清空防火墙表内容'
[root@squid init.d]# iptables -L	'查看防火墙表内容'

在这里插入图片描述

[root@squid init.d]# setenforce 0	 '关闭防火墙增强型功能'

在这里插入图片描述

[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT	'新增规则,允许3128端口做转发'
[root@squid init.d]# service squid reload	'重启服务'

Web服务器上配置

1、安装httpd服务 ,关闭防火墙
[root@slave1 ~]# hostnamectl set-hostname web
[root@slave1 ~]# su
[root@web ~]# systemctl stop firewalld.service
[root@web ~]# setenforce 0
[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd    ‘开启httpd服务’
2、在win10客户机测试web网页

如图所示:
在这里插入图片描述

3、通过查看访问日志,发现来访者的IP地址为win10客户端的IP地址20.0.0.252

[root@web ~]# cat /var/log/httpd/access_log 

在这里插入图片描述

4、设置squid代理

(1)首先清除客户机浏览器的缓存记录(以谷歌为例)

在这里插入图片描述

(2)设置代理
打开谷歌浏览器,设置-高级-系统-打开您计算机的代理设置

在这里插入图片描述

(3)再次访问Web服务器

在这里插入图片描述

(4)再次查看Web端的httpd访问日志

[root@web ~]# cat /var/log/httpd/access_log 	‘发现访问原地址20.0.0.252 变成了20.0.0.21 squid的代理地址’
查看的日志记录如下:

在这里插入图片描述
由此可以看出这是由代理服务器过来访问网页的,而不是客户机,这就起到了隐藏客户机真实 IP地址的目的。
浏览器访问 web服务器的IP地址,由于我们设置了代理服务,所以访问网站这个请求,是代理服务器帮我们完成的。验证,可以查看 web服务器的日志文件,就能知道访问的 IP地址是客户机还是代理服务器的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值