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
    评论
第1章 介绍 1.1 Web缓存 1.2 Squid的简明历史 1.3 硬件和操作系统要求 1.4 squid是开源的 1.5 Squid的Web主页 1.6 获取帮助 1.6.1 FAQ 1.6.2 邮件列表 1.6.3 职业支持 1.7 启动Squid 第2章 获取Squid 2.1 版本和发布 2.2 使用源代码 2.3 预编译的二进制文件 2.4 匿名CVS 2.5 devel.squid-cache.org 第3章 编译和安装 3.1 安装之前 3.2 解开源代码包 3.3 调整内核 3.3.1 文件描述符 3.3.2 Mbuf Clusters 3.3.3 临时端口范围 3.4 Configure脚本 3.4.1 configure选项 3.4.2 运行configure 3.5 编译 3.6 安装 3.7 打补丁 3.8 重运行configure 第4章 快速配置向导 4.1 squid.conf语法 4.2 User ID 4.3 端口号 4.4 日志文件路径 4.5 访问控制 4.6 可见主机名 4.7 管理联系信息 4.8 下一步 第5章 运行Squid 5.1 squid命令行选项 5.2 对配置文件查错 5.3 初始化cache目录 5.4 在终端窗口里测试squid 5.5 将squid作为服务进程运行 5.5.1 squid_start脚本 5.6 启动脚本 5.6.1 /etc/rc.local 5.6.2 init.d和rc.d 5.6.3 /etc/inittab 5.7 chroot环境 5.8 停止squid 5.9 重配置运行中的squid进程 5.10 滚动日志文件 第6章 访问控制 6.1 访问控制元素 6.1.1 一些基本的ACL类型 6.1.2 ACL类型 6.1.3 外部ACL 6.1.4 处理长ACL列表 6.1.5 Squid如何匹配访问控制元素 6.2 访问控制规则 6.2.1 访问规则语法 6.2.2 Squid如何匹配访问规则 6.2.3 访问列表风格 6.2.4 延时检查 6.2.5 减缓和加速规则检查 6.3 常见用法 6.3.1 仅仅允许本地客户 6.3.2 阻止恶意客户 6.3.3 内容过滤 6.3.4 在工作时间的受限使用 6.3.5 阻止squid与非HTTP服务器会话 6.3.6 授予某些用户特殊的访问 6.3.7 阻止邻近cache的滥用 6.3.8 使用IP地址拒绝请求 6.3.9 http_reply_access示例 6.3.10 阻止对本地站点的cache命中 6.4 测试访问控制 第7章 磁盘缓存基础 7.1 cache_dir指令 7.1.1 参数:Scheme 7.1.2 参数:Directory 7.1.3 参数:Size 7.1.4 参数:L1和L2 7.1.5 参数:Options 7.2 磁盘空间基准 7.3 对象大小限制 7.4 分配对象到缓存目录 7.5 置换策略 7.6 删除缓存对象 7.6.1 删除个别对象 7.6.2 删除一组对象 7.6.3 删除所有对象 7.7 refresh_pattern 第8章 高级磁盘缓存主题 8.1 是否存在磁盘I/O瓶颈? 8.2 文件系统调整选项 8.3 可选择的文件系统 8.4 aufs存储机制 8.4.1 aufs如何工作 8.4.2 aufs发行 8.4.3 监视aufs操作 8.5 diskd存储机制 8.5.1 diskd如何工作 8.5.2 编译和配置diskd 8.5.3 监视diskd 8.6 coss存储机制 8.6.1 coss如何工作 8.6.2 编译和配置coss 8.6.3 coss发行 8.7 null存储机制 8.8 哪种最适合我? 第9章 Cache拦截 9.1 它如何工作? 9.2 为何要(或不要)拦截? 9.3 网络设备 9.3.1 内置Squid 9.3.2 四层交换 9.3.3 Cisco策略路由 9.3.4 Web Cache Coordination协议 9.4 操作系统配置 9.4.1 Linux 9.4.2 FreeBSD 9.4.3 OpenBSD 9.4.4 在NetBSD和其他系统上的IPFilter 9.5 配置Squid 9.5.1 配置WCCPv1 9.6 调试

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值