Squid安装与配置

squid代理服务器

squid是一种用来缓存Internet数据的软件。接受来自客户机需要下载的目标的请求并适当的处理这些请求。也就是说,如果一个客户端想要打开默认网站,它请求squid为它取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。

squid概述

Squid(Squid cache,简称Squid)是Linux系统中最常用的一款开源代理服务软件,可以很好地实现HTTP和FTP,以及DNS查询、SSL等应用的缓存代理,功能十分强大,本篇博客详细介绍了传统代理、透明代理,squid日志分析的配置。

squid的官方网站

Squid 分类

按照代理类型的不同,可以将Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为普通代理和透明代理。

  • 普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;
  • 透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;
  • 反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

squid代理的作用

  • 通过缓存方式为用户提供Web加速访问

  • 对用户的Web访问请求进行过滤控制

缓存代理概述

Web代理的工作机制

mark

代理的基本类型

  • 传统代理:适用于lnternet,需要明确指定服务器
  • 透明代理:客户机不需要指定代理服务的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
代理服务器的工作流程
  • 当代理服务器中有客户端需要的数据时:

    a. 客户端向代理服务器发送数据请求;

    b. 代理服务器检查自己的数据缓存;

    c. 代理服务器在缓存中找到了用户想要的数据,取出数据;

    d. 代理服务器将从缓存中取得的数据返回给客户端。

  • 当代理服务器中没有客户端需要的数据时:

    1.客户端向代理服务器发送数据请求;

    2.代理服务器检查自己的数据缓存;

    3.代理服务器在缓存中没有找到用户想要的数据;

    4.代理服务器向Internet 上的远端服务器发送数据请求;

    5.远端服务器响应,返回相应的数据;

    6.代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

img

使用代理的好处

  • 提高Web访问速度
  • 隐藏客户机的真实IP地址

mark

传统代理
环境准备
名称地址
squid192.168.2.10
web192.168.2.11
客户机192.168.2.12
[root@squid ~]# ls
anaconda-ks.cfg  automake-1.16.2.tar.gz  squid-4.13.tar.gz 
[root@squid ~]# tar -xf squid-4.13.tar.gz           # 解压
[root@squid ~]# yum -y install gcc gcc-c++          # 安装编译工具
[root@squid ~]# cd squid-4.13/
[root@squid squid-4.13]# ./configure --prefix=/usr/local/squid \        # 配置
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \                     //内核过滤
--enable-linux-tproxy \                         //透明代理功能模块
--enable-async-io=100 \                       //io对于io的优化 异步I/O 提升存储性能
--enable-err-language="Simplify_Chinses" \     //err-language 报错信息设置为中文
--enable-poll \                                   //提升功能 使用poll()模式
--enable-gnuregex \                              //支持正则表达式
--enable-underscore                             //允许URL支持下划线

[root@squid squid-4.13]# make && make install     # 编译以及安装

[root@squid squid-4.13]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/    # 配置软链接
[root@squid squid-4.13]# useradd -M -s /sbin/nologin squid      # 创建squid用户
[root@squid squid-4.13]# chown -R squid.squid /usr/local/squid/var/     # 授权

# 修改主配置文件
[root@squid ~]# vim /etc/squid.conf
56 http_access allow all        # 开启允许所有访问 
59 #http_access deny all        # 注释掉拒绝所有访问
62 http_port 3128                    # 设置监听的IP与端口号
63 cache_effective_user squid          # 缓存相对的用户 
64 cache_effective_group squid         # 缓存相对的组


[root@squid ~]# squid -k parse          #验证语法配置文件语法

[root@squid ~]# squid -z                #初始化缓存目录
[root@squid ~]# 2020/11/04 19:38:25| Created PID file (/usr/local/squid/var/run/squid.pid)
2020/11/04 19:38:25 kid1| Set Current Directory to /usr/local/squid/var/cache/squid
2020/11/04 19:38:25 kid1| Creating missing swap directories
2020/11/04 19:38:25 kid1| No cache_dir stores are configured.
2020/11/04 19:38:25| Removing PID file (/usr/local/squid/var/run/squid.pid)


[root@squid ~]# squid                # 启动服务
[root@squid ~]# ss -nutlp |  grep squid       # 查看端口
udp    UNCONN     0      0         *:55124                 *:*                   users:(("squid",pid=75242,fd=7))
udp    UNCONN     0      0      [::]:37289              [::]:*                   users:(("squid",pid=75242,fd=5))
tcp    LISTEN     0      128    [::]:3128               [::]:*                   users:(("squid",pid=75242,fd=10))



# 创建systemctl启动脚本
[root@squid ~]# 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 -nutlp | 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 -nutlp | grep squid
    fi
esac

[root@squid init.d]# chmod +x squid      # 赋予执行权限
[root@squid init.d]# chkconfig  --add squid      #添加到squid服务
[root@squid init.d]# chkconfig --level 35 squid on   #设置开机启动

[root@squid init.d]# netstat -nutlp |  grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      75242/(squid-1)     
udp        0      0 0.0.0.0:55124           0.0.0.0:*                           75242/(squid-1)     
udp6       0      0 :::37289                :::*                                75242/(squid-1)     


# 进行手动重启测试
[root@squid ~]# service squid stop
[root@squid ~]# service squid start
正在启动 squid...
[root@squid ~]# netstat -nutlp | grep 3128
tcp6       0      0 :::3128                 :::*                    LISTEN      1433/(squid-1)      



# 设置缓存参数
[root@squid ~]# vim /etc/squid.conf
http_port 3128      '//下面添加'      
cache_mem 64 MB                      # 缓存64M的内容
reply_body_max_size 10 MB            # 禁止下载的超过10MB的文件
maximum_object_size 4096 KB          # 超过4MB:的文件不进行缓存



配置web端和客户端
[root@web ~]# yum -y install httpd
[root@web ~]# systemctl start httpd
[root@web ~]# netstat -nutlp |  grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1363/httpd        

[root@web ~]# cat /var/log/httpd/access_log    # 此时查看日志是没有任何的消息的
配置客户端

配置手动代理,设置该ip为squid服务端ip
在这里插入图片描述

访问web服务器

在这里插入图片描述

在命令行查看日志文件
[root@web ~]# cat /var/log/httpd/access_log         # 客户端访问web服务器,成功变为代理服务器ip
192.168.2.10 - - [04/Nov/2020:14:41:53 +0800] "GET / HTTP/1.1" 403 4897 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
192.168.2.10 - - [04/Nov/2020:14:41:53 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://192.168.2.11/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
192.168.2.10 - - [04/Nov/2020:14:41:53 +0800] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://192.168.2.11/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
传统代理和透明代理的区别
传统代理需要客户端在浏览器上指定代理服务器的ip比较麻烦。
透明代理不需要在浏览器指定,需要将网关设为代理服务器。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值