Squid ---- 传统代理模式

Squid ---- 传统代理模式

一:定义

​ Squid传统代理是普通的代理服务,需要客户端在浏览器、聊天工具等一些程序中设置代理服务器的地址和端口,然后才能使用代理来访问网络,这种方式相比较而言比较麻烦,因为客户机还需手动指定代理服务器,所以一般用于Internet环境 。

二:代理的作用

​ squid作为一款应用层的代理服务软件,主要提供了缓存加速、应用层过滤的功能;提高web访问速度;隐藏客户机的真实 IP地址,起到一定保护作用。
Squid ---- 传统代理模式_第1张图片

三:实验过程

1、实验环境

  • VMware Workstation虚拟机
    Squid ---- 传统代理模式_第2张图片

  • 在squid服务器上配置

2、修改主机名 ,创建新目录并把squid压缩包挂载上,然后解压
[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# mkdir /abc
[root@squid ~]# mount.cifs //192.168.100.1/share /abc
[root@squid ~]# cd /abc
[root@squid abc]# tar zxvf squid-3.4.6.tar.gz -C /opt
3、安装编译工具,再编译,再安装
[root@squid abc]# cd squid-3.4.6
[root@squid squid-3.4.6]# yum install gcc gcc-c++ -y

[root@squid squid-3.4.6]#./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="Simplify_Chinese" \      ‘支持的语言’
--enable-underscore \      ‘支持下划线’
--enable-poll \    ‘功能的提升’
--enable-gnuregex       ‘正则表达式的提升’

[root@squid squid-3.4.6]# make && make install
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

Squid ---- 传统代理模式_第3张图片

[root@squid squid-3.4.6]# squid -k parse	‘检查语法,没问题Ctrl+C键取消’
[root@squid squid-3.4.6]# squid -z     ‘初始化缓存目录’
[root@squid squid-3.4.6]# squid   ‘启动服务’
[root@squid squid-3.4.6]# netstat -ntap | grep 3128    ‘检测是否启动成功’
7、编写启动脚本
[root@squid squid-3.4.6]# cd /etc/init.d
[root@squid init.d]# vim 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

Squid ---- 传统代理模式_第4张图片

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@web ~]# systemctl stop firewalld.service
[root@web ~]# setenforce 0
[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd    ‘开启httpd服务’
2、在win10客户机测试web网页

Squid ---- 传统代理模式_第5张图片

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

Squid ---- 传统代理模式_第6张图片

4、设置squid代理

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

Squid ---- 传统代理模式_第7张图片

(2)设置代理

打开谷歌浏览器,设置-高级-系统-打开您计算机的代理设置
Squid ---- 传统代理模式_第8张图片

(3)再次访问Web服务器

Squid ---- 传统代理模式_第9张图片

(4)再次查看Web端的httpd访问日志
[root@web ~]# cat /var/log/httpd/access_log 	‘发现访问原地址48.129 变成了192.168.48.128 squid的代理地址’

由此可以看出是由代理服务器过来访问网页的,而不是客户机,这就起到了隐藏客户机真实 IP地址的目的。

​ 浏览器访问 web服务器的IP地址,由于我们设置了代理服务,所以访问网站这个请求,是代理服务器帮我们完成的。为了验证,可以查看 web服务器的日志文件,就能知道访问的 IP地址是客户机还是代理服务器的。

你可能感兴趣的:(squid)